mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 08:17:35 +00:00
Add support for oredict item predicates in advancements, and add a registry for item predicates (#4188)
This commit is contained in:
1 parent
82d735e43a
commit
ee449e427c
5 files changed
+337
No files matched your search
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Minecraft Forge
|
||||
* Copyright (c) 2016.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation version 2.1
|
||||
* of the License.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package net.minecraftforge.advancements.critereon;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import gnu.trove.map.hash.THashMap;
|
||||
import net.minecraft.advancements.critereon.ItemPredicate;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class ItemPredicates
|
||||
{
|
||||
private static final Map<ResourceLocation, Function<JsonObject, ItemPredicate>> predicates = new THashMap<>();
|
||||
|
||||
static
|
||||
{
|
||||
register(new ResourceLocation("forge:ore_dict"), OredictItemPredicate::new);
|
||||
}
|
||||
|
||||
public static void register(ResourceLocation rl, Function<JsonObject, ItemPredicate> jsonToPredicate)
|
||||
{
|
||||
predicates.put(rl, jsonToPredicate);
|
||||
}
|
||||
|
||||
public static Map<ResourceLocation, Function<JsonObject, ItemPredicate>> getPredicates()
|
||||
{
|
||||
return Collections.unmodifiableMap(predicates);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Minecraft Forge
|
||||
* Copyright (c) 2016.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation version 2.1
|
||||
* of the License.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package net.minecraftforge.advancements.critereon;
|
||||
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import net.minecraft.util.JsonUtils;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import net.minecraft.advancements.critereon.ItemPredicate;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
/**
|
||||
* An {@link ItemPredicate} that matches oredicts.
|
||||
*/
|
||||
public class OredictItemPredicate extends ItemPredicate
|
||||
{
|
||||
private final String ore;
|
||||
|
||||
public OredictItemPredicate(String ore)
|
||||
{
|
||||
this.ore = ore;
|
||||
}
|
||||
|
||||
public OredictItemPredicate(JsonObject jsonObject) { this(JsonUtils.getString(jsonObject, "ore")); }
|
||||
|
||||
@Override
|
||||
public boolean test(ItemStack stack)
|
||||
{
|
||||
return !stack.isEmpty() && ArrayUtils.contains(OreDictionary.getOreIDs(stack), OreDictionary.getOreID(ore));
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user