164 lines
6.6 KiB
Diff
164 lines
6.6 KiB
Diff
--- a/net/minecraft/item/Item.java
|
|
+++ b/net/minecraft/item/Item.java
|
|
@@ -50,9 +50,9 @@
|
|
import net.minecraftforge.api.distmarker.Dist;
|
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
|
|
-public class Item implements IItemProvider {
|
|
- public static final RegistryNamespaced<ResourceLocation, Item> REGISTRY = new RegistryNamespaced<ResourceLocation, Item>();
|
|
- public static final Map<Block, Item> BLOCK_TO_ITEM = Maps.<Block, Item>newHashMap();
|
|
+public class Item extends net.minecraftforge.registries.ForgeRegistryEntry<Item> implements IItemProvider, net.minecraftforge.common.extensions.IForgeItem {
|
|
+ public static final RegistryNamespaced<ResourceLocation, Item> REGISTRY = net.minecraftforge.registries.GameData.getWrapper(Item.class);
|
|
+ public static final Map<Block, Item> BLOCK_TO_ITEM = net.minecraftforge.registries.GameData.getBlockItemMap();
|
|
private static final IItemPropertyGetter DAMAGED_GETTER = (p_210306_0_, p_210306_1_, p_210306_2_) -> {
|
|
return p_210306_0_.isItemDamaged() ? 1.0F : 0.0F;
|
|
};
|
|
@@ -126,6 +126,10 @@
|
|
this.containerItem = p_i48487_1_.field_200922_c;
|
|
this.maxDamage = p_i48487_1_.field_200921_b;
|
|
this.maxStackSize = p_i48487_1_.field_200920_a;
|
|
+ this.canRepair = p_i48487_1_.canRepair;
|
|
+ this.toolClasses.putAll(p_i48487_1_.toolClasses);
|
|
+ Object tmp = p_i48487_1_.teisr == null ? null : net.minecraftforge.fml.DistExecutor.callWhenOn(Dist.CLIENT, p_i48487_1_.teisr);
|
|
+ this.teisr = tmp == null ? null : () -> (net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer) tmp;
|
|
if (this.maxDamage > 0) {
|
|
this.addPropertyOverride(new ResourceLocation("damaged"), DAMAGED_GETTER);
|
|
this.addPropertyOverride(new ResourceLocation("damage"), DAMAGE_GETTER);
|
|
@@ -149,10 +153,12 @@
|
|
return stack;
|
|
}
|
|
|
|
+ @Deprecated // Use ItemStack sensitive version.
|
|
public final int getItemStackLimit() {
|
|
return this.maxStackSize;
|
|
}
|
|
|
|
+ @Deprecated // Use ItemStack sensitive version.
|
|
public final int getMaxDamage() {
|
|
return this.maxDamage;
|
|
}
|
|
@@ -207,6 +213,7 @@
|
|
return this.containerItem;
|
|
}
|
|
|
|
+ @Deprecated // Use ItemStack sensitive version.
|
|
public boolean hasContainerItem() {
|
|
return this.containerItem != null;
|
|
}
|
|
@@ -263,7 +270,7 @@
|
|
}
|
|
|
|
public boolean isEnchantable(ItemStack stack) {
|
|
- return this.getItemStackLimit() == 1 && this.isDamageable();
|
|
+ return this.getItemStackLimit(stack) == 1 && this.isDamageable();
|
|
}
|
|
|
|
@Nullable
|
|
@@ -280,8 +287,8 @@
|
|
float f5 = MathHelper.sin(-f * ((float)Math.PI / 180F));
|
|
float f6 = f3 * f4;
|
|
float f7 = f2 * f4;
|
|
- double d3 = 5.0D;
|
|
- Vec3d vec3d1 = vec3d.add((double)f6 * 5.0D, (double)f5 * 5.0D, (double)f7 * 5.0D);
|
|
+ double d3 = playerIn.getEntityAttribute(EntityPlayer.REACH_DISTANCE).getAttributeValue();
|
|
+ Vec3d vec3d1 = vec3d.add((double)f6 * d3, (double)f5 * d3, (double)f7 * d3);
|
|
return worldIn.func_200259_a(vec3d, vec3d1, useLiquids ? RayTraceFluidMode.SOURCE_ONLY : RayTraceFluidMode.NEVER, false, false);
|
|
}
|
|
|
|
@@ -297,6 +304,7 @@
|
|
}
|
|
|
|
protected boolean isInCreativeTab(ItemGroup targetTab) {
|
|
+ if (getCreativeTabs().stream().anyMatch(tab -> tab == targetTab)) return true;
|
|
ItemGroup itemgroup = this.getCreativeTab();
|
|
return itemgroup != null && (targetTab == ItemGroup.SEARCH || targetTab == itemgroup);
|
|
}
|
|
@@ -310,10 +318,49 @@
|
|
return false;
|
|
}
|
|
|
|
+ @Deprecated // Use ItemStack sensitive version.
|
|
public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot) {
|
|
return HashMultimap.<String, AttributeModifier>create();
|
|
}
|
|
|
|
+ /* ======================================== FORGE START =====================================*/
|
|
+
|
|
+ @Nullable
|
|
+ private final java.util.function.Supplier<net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer> teisr;
|
|
+
|
|
+ private final java.util.Map<String, Integer> toolClasses = new java.util.HashMap<String, Integer>();
|
|
+
|
|
+ protected final boolean canRepair;
|
|
+
|
|
+ @Override
|
|
+ public boolean isRepairable()
|
|
+ {
|
|
+ return canRepair && isDamageable();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public java.util.Set<String> getToolClasses(ItemStack stack)
|
|
+ {
|
|
+ return toolClasses.keySet();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public int getHarvestLevel(ItemStack stack, String toolClass, @Nullable EntityPlayer player, @Nullable IBlockState blockState)
|
|
+ {
|
|
+ Integer ret = toolClasses.get(toolClass);
|
|
+ return ret == null ? -1 : ret;
|
|
+ }
|
|
+
|
|
+ @OnlyIn(Dist.CLIENT)
|
|
+ @Override
|
|
+ public final net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer getTileEntityItemStackRenderer()
|
|
+ {
|
|
+ net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer renderer = teisr != null ? teisr.get() : null;
|
|
+ return renderer != null ? renderer : net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer.instance;
|
|
+ }
|
|
+
|
|
+ /* ======================================== FORGE END =====================================*/
|
|
+
|
|
public static void registerItems() {
|
|
registerItemBlock(Blocks.AIR, new ItemAir(Blocks.AIR, new Item.Builder()));
|
|
func_200879_a(Blocks.STONE, ItemGroup.BUILDING_BLOCKS);
|
|
@@ -1147,6 +1194,9 @@
|
|
private Item field_200922_c;
|
|
private ItemGroup field_200923_d;
|
|
private EnumRarity field_208104_e = EnumRarity.COMMON;
|
|
+ private boolean canRepair = true;
|
|
+ private java.util.Map<String, Integer> toolClasses = new java.util.HashMap<String, Integer>();
|
|
+ private java.util.function.Supplier<java.util.concurrent.Callable<net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer>> teisr;
|
|
|
|
public Item.Builder func_200917_a(int p_200917_1_) {
|
|
if (this.field_200921_b > 0) {
|
|
@@ -1181,5 +1231,27 @@
|
|
this.field_208104_e = p_208103_1_;
|
|
return this;
|
|
}
|
|
+
|
|
+ public Item.Builder setNoRepair() {
|
|
+ canRepair = false;
|
|
+ return this;
|
|
}
|
|
+
|
|
+ /**
|
|
+ * Sets or removes the harvest level for the specified tool class.
|
|
+ *
|
|
+ * @param toolClass Class
|
|
+ * @param level Harvest level: Wood: 0 Stone: 1 Iron: 2 Diamond: 3 Gold: 0
|
|
+ */
|
|
+ public void setHarvestLevel(String toolClass, int level) {
|
|
+ if (level < 0)
|
|
+ toolClasses.remove(toolClass);
|
|
+ else
|
|
+ toolClasses.put(toolClass, level);
|
|
+ }
|
|
+
|
|
+ public void setTileEntityItemStackRenderer(java.util.function.Supplier<java.util.concurrent.Callable<net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer>> teisrSupplier) {
|
|
+ this.teisr = teisrSupplier;
|
|
+ }
|
|
+ }
|
|
}
|