diff --git a/patches/minecraft/net/minecraft/entity/ai/EntityAIEatGrass.java.patch b/patches/minecraft/net/minecraft/entity/ai/EntityAIEatGrass.java.patch deleted file mode 100644 index b1f6b330d9..0000000000 --- a/patches/minecraft/net/minecraft/entity/ai/EntityAIEatGrass.java.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/entity/ai/EntityAIEatGrass.java -+++ ../src-work/minecraft/net/minecraft/entity/ai/EntityAIEatGrass.java -@@ -78,7 +78,7 @@ - - if (field_179505_b.apply(this.field_151501_c.func_180495_p(blockpos))) - { -- if (this.field_151501_c.func_82736_K().func_82766_b("mobGriefing")) -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.field_151501_c, this.field_151500_b)) - { - this.field_151501_c.func_175655_b(blockpos, false); - } -@@ -91,7 +91,7 @@ - - if (this.field_151501_c.func_180495_p(blockpos1).func_177230_c() == Blocks.field_150349_c) - { -- if (this.field_151501_c.func_82736_K().func_82766_b("mobGriefing")) -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.field_151501_c, this.field_151500_b)) - { - this.field_151501_c.func_175718_b(2001, blockpos1, Block.func_149682_b(Blocks.field_150349_c)); - this.field_151501_c.func_180501_a(blockpos1, Blocks.field_150346_d.func_176223_P(), 2); diff --git a/patches/minecraft/net/minecraft/entity/ai/EntityAIHarvestFarmland.java.patch b/patches/minecraft/net/minecraft/entity/ai/EntityAIHarvestFarmland.java.patch deleted file mode 100644 index 5f941f5ab6..0000000000 --- a/patches/minecraft/net/minecraft/entity/ai/EntityAIHarvestFarmland.java.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/entity/ai/EntityAIHarvestFarmland.java -+++ ../src-work/minecraft/net/minecraft/entity/ai/EntityAIHarvestFarmland.java -@@ -29,7 +29,7 @@ - { - if (this.field_179496_a <= 0) - { -- if (!this.field_179504_c.field_70170_p.func_82736_K().func_82766_b("mobGriefing")) -+ if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.field_179504_c.field_70170_p, this.field_179504_c)) - { - return false; - } -@@ -94,6 +94,12 @@ - world.func_180501_a(blockpos, Blocks.field_185773_cZ.func_176223_P(), 3); - flag = true; - } -+ else if (itemstack.func_77973_b() instanceof net.minecraftforge.common.IPlantable) { -+ if(((net.minecraftforge.common.IPlantable)itemstack.func_77973_b()).getPlantType(world,blockpos) == net.minecraftforge.common.EnumPlantType.Crop) { -+ world.func_180501_a(blockpos, ((net.minecraftforge.common.IPlantable)itemstack.func_77973_b()).getPlant(world,blockpos),3); -+ flag = true; -+ } -+ } - } - - if (flag) diff --git a/patches/minecraft/net/minecraft/entity/monster/EntityCreeper.java.patch b/patches/minecraft/net/minecraft/entity/monster/EntityCreeper.java.patch deleted file mode 100644 index 260fcb2ad4..0000000000 --- a/patches/minecraft/net/minecraft/entity/monster/EntityCreeper.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/entity/monster/EntityCreeper.java -+++ ../src-work/minecraft/net/minecraft/entity/monster/EntityCreeper.java -@@ -265,7 +265,7 @@ - { - if (!this.field_70170_p.field_72995_K) - { -- boolean flag = this.field_70170_p.func_82736_K().func_82766_b("mobGriefing"); -+ boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.field_70170_p, this); - float f = this.func_70830_n() ? 2.0F : 1.0F; - this.field_70729_aU = true; - this.field_70170_p.func_72876_a(this, this.field_70165_t, this.field_70163_u, this.field_70161_v, (float)this.field_82226_g * f, flag); diff --git a/patches/minecraft/net/minecraft/entity/monster/EntityEvoker.java.patch b/patches/minecraft/net/minecraft/entity/monster/EntityEvoker.java.patch deleted file mode 100644 index f30aa06996..0000000000 --- a/patches/minecraft/net/minecraft/entity/monster/EntityEvoker.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/entity/monster/EntityEvoker.java -+++ ../src-work/minecraft/net/minecraft/entity/monster/EntityEvoker.java -@@ -369,7 +369,7 @@ - { - return false; - } -- else if (!EntityEvoker.this.field_70170_p.func_82736_K().func_82766_b("mobGriefing")) -+ else if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(EntityEvoker.this.field_70170_p, EntityEvoker.this)) - { - return false; - } diff --git a/patches/minecraft/net/minecraft/entity/monster/EntitySilverfish.java.patch b/patches/minecraft/net/minecraft/entity/monster/EntitySilverfish.java.patch deleted file mode 100644 index a2baf2bc70..0000000000 --- a/patches/minecraft/net/minecraft/entity/monster/EntitySilverfish.java.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/entity/monster/EntitySilverfish.java -+++ ../src-work/minecraft/net/minecraft/entity/monster/EntitySilverfish.java -@@ -184,7 +184,7 @@ - { - Random random = this.field_75457_a.func_70681_au(); - -- if (this.field_75457_a.field_70170_p.func_82736_K().func_82766_b("mobGriefing") && random.nextInt(10) == 0) -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.field_75457_a.field_70170_p, this.field_75457_a) && random.nextInt(10) == 0) - { - this.field_179483_b = EnumFacing.func_176741_a(random); - BlockPos blockpos = (new BlockPos(this.field_75457_a.field_70165_t, this.field_75457_a.field_70163_u + 0.5D, this.field_75457_a.field_70161_v)).func_177972_a(this.field_179483_b); -@@ -273,7 +273,7 @@ - - if (iblockstate.func_177230_c() == Blocks.field_150418_aU) - { -- if (world.func_82736_K().func_82766_b("mobGriefing")) -+ if (net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(world, this.field_179464_a)) - { - world.func_175655_b(blockpos1, true); - } diff --git a/patches/minecraft/net/minecraft/entity/passive/EntityRabbit.java.patch b/patches/minecraft/net/minecraft/entity/passive/EntityRabbit.java.patch deleted file mode 100644 index 8f525fd801..0000000000 --- a/patches/minecraft/net/minecraft/entity/passive/EntityRabbit.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/entity/passive/EntityRabbit.java -+++ ../src-work/minecraft/net/minecraft/entity/passive/EntityRabbit.java -@@ -551,7 +551,7 @@ - { - if (this.field_179496_a <= 0) - { -- if (!this.field_179500_c.field_70170_p.func_82736_K().func_82766_b("mobGriefing")) -+ if (!net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.field_179500_c.field_70170_p, this.field_179500_c)) - { - return false; - } diff --git a/patches/minecraft/net/minecraft/entity/projectile/EntityLargeFireball.java.patch b/patches/minecraft/net/minecraft/entity/projectile/EntityLargeFireball.java.patch deleted file mode 100644 index ec2f1066f7..0000000000 --- a/patches/minecraft/net/minecraft/entity/projectile/EntityLargeFireball.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/entity/projectile/EntityLargeFireball.java -+++ ../src-work/minecraft/net/minecraft/entity/projectile/EntityLargeFireball.java -@@ -40,7 +40,7 @@ - this.func_174815_a(this.field_70235_a, p_70227_1_.field_72308_g); - } - -- boolean flag = this.field_70170_p.func_82736_K().func_82766_b("mobGriefing"); -+ boolean flag = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.field_70170_p, this.field_70235_a); - this.field_70170_p.func_72885_a((Entity)null, this.field_70165_t, this.field_70163_u, this.field_70161_v, (float)this.field_92057_e, flag, flag); - this.func_70106_y(); - } diff --git a/patches/minecraft/net/minecraft/entity/projectile/EntitySmallFireball.java.patch b/patches/minecraft/net/minecraft/entity/projectile/EntitySmallFireball.java.patch deleted file mode 100644 index 4bf04d83af..0000000000 --- a/patches/minecraft/net/minecraft/entity/projectile/EntitySmallFireball.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/entity/projectile/EntitySmallFireball.java -+++ ../src-work/minecraft/net/minecraft/entity/projectile/EntitySmallFireball.java -@@ -57,7 +57,7 @@ - - if (this.field_70235_a != null && this.field_70235_a instanceof EntityLiving) - { -- flag1 = this.field_70170_p.func_82736_K().func_82766_b("mobGriefing"); -+ flag1 = net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.field_70170_p, this.field_70235_a); - } - - if (flag1) diff --git a/patches/minecraft/net/minecraft/item/crafting/IRecipe.java.patch b/patches/minecraft/net/minecraft/item/crafting/IRecipe.java.patch new file mode 100644 index 0000000000..518d551c12 --- /dev/null +++ b/patches/minecraft/net/minecraft/item/crafting/IRecipe.java.patch @@ -0,0 +1,21 @@ +--- a/net/minecraft/item/crafting/IRecipe.java ++++ b/net/minecraft/item/crafting/IRecipe.java +@@ -9,7 +9,7 @@ + import net.minecraftforge.api.distmarker.Dist; + import net.minecraftforge.api.distmarker.OnlyIn; + +-public interface IRecipe { ++public interface IRecipe extends net.minecraftforge.registries.IForgeRegistryEntry { + boolean matches(IInventory inv, World worldIn); + + ItemStack getCraftingResult(IInventory inv); +@@ -48,4 +48,9 @@ + ResourceLocation func_199560_c(); + + IRecipeSerializer func_199559_b(); ++ ++ @Override ++ default Class getRegistryType() { ++ return IRecipe.class; + } ++} diff --git a/src/main/java/net/minecraftforge/client/GuiIngameForge.java b/src/main/java/net/minecraftforge/client/GuiIngameForge.java index d794ef5ca3..0820155ed7 100644 --- a/src/main/java/net/minecraftforge/client/GuiIngameForge.java +++ b/src/main/java/net/minecraftforge/client/GuiIngameForge.java @@ -119,7 +119,7 @@ public class GuiIngameForge extends GuiIngame if (pre(ALL)) return; fontrenderer = mc.fontRenderer; - mc.entityRenderer.setupOverlayRendering(); + //mc.entityRenderer.setupOverlayRendering(); GlStateManager.enableBlend(); if (renderVignette && Minecraft.isFancyGraphicsEnabled()) diff --git a/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java b/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java index 82342651ba..ac8bdccf5d 100644 --- a/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java +++ b/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java @@ -42,11 +42,12 @@ import net.minecraft.util.math.Vec3i; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.ForgeHooksClient; + import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Triple; import com.google.common.base.MoreObjects; -import java.util.Optional; import com.google.common.collect.Maps; /* @@ -118,7 +119,7 @@ public final class TRSRTransformation implements IModelState, ITransformation return getRotation(facing).getMatrix(); } - @SideOnly(Side.CLIENT) + @OnlyIn(Dist.CLIENT) public static ModelRotation getRotation(EnumFacing facing) { switch (facing) @@ -537,7 +538,7 @@ public final class TRSRTransformation implements IModelState, ITransformation @OnlyIn(Dist.CLIENT) public net.minecraft.client.renderer.block.model.ItemTransformVec3f toItemTransform() { - return new ItemTransformVec3f(toLwjgl(toXYZDegrees(getLeftRot())), toLwjgl(getTranslation()), toLwjgl(getScale())); + return new ItemTransformVec3f(toMojang(toXYZDegrees(getLeftRot())), toMojang(getTranslation()), toMojang(getScale())); } public boolean isIdentity() @@ -689,59 +690,53 @@ public final class TRSRTransformation implements IModelState, ITransformation } @OnlyIn(Dist.CLIENT) - public static Vector3f toVecmath(org.lwjgl.util.vector.Vector3f vec) + public static Vector3f toVecmath(net.minecraft.client.renderer.Vector3f vec) { - return new Vector3f(vec.x, vec.y, vec.z); + return new Vector3f(vec.func_195899_a(), vec.func_195900_b(), vec.func_195902_c()); } @OnlyIn(Dist.CLIENT) - public static Vector4f toVecmath(org.lwjgl.util.vector.Vector4f vec) + public static Vector4f toVecmath(net.minecraft.client.renderer.Vector4f vec) { - return new Vector4f(vec.x, vec.y, vec.z, vec.w); + return new Vector4f(vec.func_195910_a(), vec.func_195913_b(), vec.func_195914_c(), vec.func_195915_d()); } @OnlyIn(Dist.CLIENT) - public static Matrix4f toVecmath(org.lwjgl.util.vector.Matrix4f m) + public static Matrix4f toVecmath(net.minecraft.client.renderer.Matrix4f m) { return new Matrix4f( - m.m00, m.m10, m.m20, m.m30, - m.m01, m.m11, m.m21, m.m31, - m.m02, m.m12, m.m22, m.m32, - m.m03, m.m13, m.m23, m.m33); + m.func_195885_a(0, 0), m.func_195885_a(1, 0), m.func_195885_a(2, 0), m.func_195885_a(3, 0), + m.func_195885_a(0, 1), m.func_195885_a(1, 1), m.func_195885_a(2, 1), m.func_195885_a(3, 1), + m.func_195885_a(0, 2), m.func_195885_a(1, 2), m.func_195885_a(2, 2), m.func_195885_a(3, 2), + m.func_195885_a(0, 3), m.func_195885_a(1, 3), m.func_195885_a(2, 3), m.func_195885_a(3, 3)); + } + + + @OnlyIn(Dist.CLIENT) + public static net.minecraft.client.renderer.Vector3f toMojang(Vector3f vec) + { + return new net.minecraft.client.renderer.Vector3f(vec.x, vec.y, vec.z); } @OnlyIn(Dist.CLIENT) - public static org.lwjgl.util.vector.Vector3f toLwjgl(Vector3f vec) + public static net.minecraft.client.renderer.Vector4f toMojang(Vector4f vec) { - return new org.lwjgl.util.vector.Vector3f(vec.x, vec.y, vec.z); + return new net.minecraft.client.renderer.Vector4f(vec.x, vec.y, vec.z, vec.w); } @OnlyIn(Dist.CLIENT) - public static org.lwjgl.util.vector.Vector4f toLwjgl(Vector4f vec) + public static net.minecraft.client.renderer.Matrix4f toMojang(Matrix4f m) { - return new org.lwjgl.util.vector.Vector4f(vec.x, vec.y, vec.z, vec.w); - } - - @OnlyIn(Dist.CLIENT) - public static org.lwjgl.util.vector.Matrix4f toLwjgl(Matrix4f m) - { - org.lwjgl.util.vector.Matrix4f r = new org.lwjgl.util.vector.Matrix4f(); - r.m00 = m.m00; - r.m01 = m.m10; - r.m02 = m.m20; - r.m03 = m.m30; - r.m10 = m.m01; - r.m11 = m.m11; - r.m12 = m.m21; - r.m13 = m.m31; - r.m20 = m.m02; - r.m21 = m.m12; - r.m22 = m.m22; - r.m23 = m.m32; - r.m30 = m.m03; - r.m31 = m.m13; - r.m32 = m.m23; - r.m33 = m.m33; + net.minecraft.client.renderer.Matrix4f r = new net.minecraft.client.renderer.Matrix4f(); + float[] row = new float[4]; + for (int x = 0; x < 4; x++) + { + m.getRow(x, row); + for (int y = 0; y < 4; y++) + { + r.func_195878_a(x, y, row[y]); + } + } return r; } diff --git a/src/main/java/net/minecraftforge/event/RegistryEvent.java b/src/main/java/net/minecraftforge/event/RegistryEvent.java index de63ffb637..bb60fec2bb 100644 --- a/src/main/java/net/minecraftforge/event/RegistryEvent.java +++ b/src/main/java/net/minecraftforge/event/RegistryEvent.java @@ -22,7 +22,6 @@ package net.minecraftforge.event; import java.util.Collection; import java.util.stream.Collectors; -import net.minecraftforge.registries.ForgeRegistryEntry; import org.apache.commons.lang3.Validate; import com.google.common.collect.ImmutableList; @@ -30,12 +29,13 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.ModContainer; import net.minecraftforge.eventbus.api.GenericEvent; import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.IForgeRegistryEntry; /** * RegistryEvent supertype. */ -public class RegistryEvent> extends GenericEvent +public class RegistryEvent> extends GenericEvent { RegistryEvent(Class clazz) { super(clazz); @@ -58,7 +58,7 @@ public class RegistryEvent> extends GenericEvent * ObjectHolders will reload between Blocks and Items, and after all registries have been visited. * @param The registry top level type */ - public static class Register> extends RegistryEvent + public static class Register> extends RegistryEvent { private final IForgeRegistry registry; private final ResourceLocation name; @@ -82,7 +82,7 @@ public class RegistryEvent> extends GenericEvent } - public static class MissingMappings> extends RegistryEvent + public static class MissingMappings> extends RegistryEvent { private final IForgeRegistry registry; private final ResourceLocation name; @@ -154,7 +154,7 @@ public class RegistryEvent> extends GenericEvent REMAP } - public static class Mapping> + public static class Mapping> { public final IForgeRegistry registry; private final IForgeRegistry pool; diff --git a/src/main/java/net/minecraftforge/event/terraingen/BiomeEvent.java b/src/main/java/net/minecraftforge/event/terraingen/BiomeEvent.java index fff94f6634..8ea9dc6972 100644 --- a/src/main/java/net/minecraftforge/event/terraingen/BiomeEvent.java +++ b/src/main/java/net/minecraftforge/event/terraingen/BiomeEvent.java @@ -20,10 +20,8 @@ package net.minecraftforge.event.terraingen; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.Cancelable; import net.minecraftforge.eventbus.api.Event; import net.minecraft.block.state.IBlockState; -import net.minecraft.world.biome.BiomeDecorator; import net.minecraft.world.biome.Biome; /** @@ -48,48 +46,6 @@ public class BiomeEvent extends net.minecraftforge.eventbus.api.Event return biome; } - /** - * CreateDecorator is fired when a BiomeDecorator is created.
- * This event is fired whenever a BiomeDecorator is created in - * {@link DeferredBiomeDecorator#fireCreateEventAndReplace(Biome)}.
- *
- * {@link #originalBiomeDecorator} contains the original BiomeDecorator that would be used in vanilla. - * {@link #newBiomeDecorator} contains the new BiomeDecoration to be used by Minecraft. - *
- * This event is not {@link net.minecraftforge.eventbus.api.Cancelable}. - *
- * This event does not have a result. {@link HasResult} - *
- * This event is fired on the {@link MinecraftForge#TERRAIN_GEN_BUS}. - **/ - public static class CreateDecorator extends BiomeEvent - { - private final BiomeDecorator originalBiomeDecorator; - private BiomeDecorator newBiomeDecorator; - - public CreateDecorator(Biome biome, BiomeDecorator original) - { - super(biome); - originalBiomeDecorator = original; - setNewBiomeDecorator(original); - } - - public BiomeDecorator getOriginalBiomeDecorator() - { - return originalBiomeDecorator; - } - - public BiomeDecorator getNewBiomeDecorator() - { - return newBiomeDecorator; - } - - public void setNewBiomeDecorator(BiomeDecorator newBiomeDecorator) - { - this.newBiomeDecorator = newBiomeDecorator; - } - } - /** * BiomeColor is fired whenever an event involving biome colors occurs.
* If a method utilizes this {@link net.minecraftforge.eventbus.api.Event} as its parameter, the method will diff --git a/src/main/java/net/minecraftforge/event/terraingen/ChunkGeneratorEvent.java b/src/main/java/net/minecraftforge/event/terraingen/ChunkGeneratorEvent.java index 98a7f59771..aef2313a36 100644 --- a/src/main/java/net/minecraftforge/event/terraingen/ChunkGeneratorEvent.java +++ b/src/main/java/net/minecraftforge/event/terraingen/ChunkGeneratorEvent.java @@ -19,23 +19,23 @@ package net.minecraftforge.event.terraingen; -import net.minecraftforge.eventbus.api.Event; import net.minecraft.world.World; import net.minecraft.world.chunk.ChunkPrimer; +import net.minecraft.world.gen.IChunkGenSettings; import net.minecraft.world.gen.IChunkGenerator; public class ChunkGeneratorEvent extends net.minecraftforge.eventbus.api.Event { - private final IChunkGenerator gen; + private final IChunkGenerator gen; - public ChunkGeneratorEvent(IChunkGenerator gen) + public ChunkGeneratorEvent(IChunkGenerator gen) { this.gen = gen; } - public IChunkGenerator getGenerator() { return this.getGen(); } + public IChunkGenerator getGenerator() { return this.getGen(); } - public IChunkGenerator getGen() + public IChunkGenerator getGen() { return gen; } @@ -54,7 +54,7 @@ public class ChunkGeneratorEvent extends net.minecraftforge.eventbus.api.Event private final ChunkPrimer primer; private final World world; // CAN BE NULL - public ReplaceBiomeBlocks(IChunkGenerator chunkProvider, int x, int z, ChunkPrimer primer, World world) + public ReplaceBiomeBlocks(IChunkGenerator chunkProvider, int x, int z, ChunkPrimer primer, World world) { super(chunkProvider); this.x = x; @@ -85,7 +85,7 @@ public class ChunkGeneratorEvent extends net.minecraftforge.eventbus.api.Event private final int sizeY; private final int sizeZ; - public InitNoiseField(IChunkGenerator chunkProvider, double[] noisefield, int posX, int posY, int posZ, int sizeX, int sizeY, int sizeZ) + public InitNoiseField(IChunkGenerator chunkProvider, double[] noisefield, int posX, int posY, int posZ, int sizeX, int sizeY, int sizeZ) { super(chunkProvider); this.setNoisefield(noisefield); diff --git a/src/main/java/net/minecraftforge/event/terraingen/DecorateBiomeEvent.java b/src/main/java/net/minecraftforge/event/terraingen/DecorateBiomeEvent.java index 12d0246314..d83f136951 100644 --- a/src/main/java/net/minecraftforge/event/terraingen/DecorateBiomeEvent.java +++ b/src/main/java/net/minecraftforge/event/terraingen/DecorateBiomeEvent.java @@ -28,11 +28,8 @@ import net.minecraft.util.math.ChunkPos; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.Cancelable; import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.Event.HasResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; /** * DecorateBiomeEvent is fired when a BiomeDecorator is created. diff --git a/src/main/java/net/minecraftforge/event/terraingen/DeferredBiomeDecorator.java b/src/main/java/net/minecraftforge/event/terraingen/DeferredBiomeDecorator.java deleted file mode 100644 index 886b13d087..0000000000 --- a/src/main/java/net/minecraftforge/event/terraingen/DeferredBiomeDecorator.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016-2018. - * - * 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.event.terraingen; - -import java.util.Random; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeDecorator; -import net.minecraft.world.biome.Biome; -import net.minecraftforge.common.MinecraftForge; - -public class DeferredBiomeDecorator extends BiomeDecorator { - private BiomeDecorator wrapped; - - public DeferredBiomeDecorator(BiomeDecorator wrappedOriginal) - { - this.wrapped = wrappedOriginal; - } - - @Override - public void decorate(World par1World, Random par2Random, Biome biome, BlockPos pos) - { - fireCreateEventAndReplace(biome); - // On first call to decorate, we fire and substitute ourselves, if we haven't already done so - biome.decorator.decorate(par1World, par2Random, biome, pos); - } - public void fireCreateEventAndReplace(Biome biome) - { - // Copy any configuration from us to the real instance. - wrapped.bigMushroomsPerChunk = bigMushroomsPerChunk; - wrapped.cactiPerChunk = cactiPerChunk; - wrapped.clayPerChunk = clayPerChunk; - wrapped.deadBushPerChunk = deadBushPerChunk; - wrapped.flowersPerChunk = flowersPerChunk; - wrapped.generateFalls = generateFalls; - wrapped.grassPerChunk = grassPerChunk; - wrapped.mushroomsPerChunk = mushroomsPerChunk; - wrapped.reedsPerChunk = reedsPerChunk; - wrapped.gravelPatchesPerChunk = gravelPatchesPerChunk; - wrapped.sandPatchesPerChunk = sandPatchesPerChunk; - wrapped.treesPerChunk = treesPerChunk; - wrapped.waterlilyPerChunk = waterlilyPerChunk; - - BiomeEvent.CreateDecorator event = new BiomeEvent.CreateDecorator(biome, wrapped); - MinecraftForge.TERRAIN_GEN_BUS.post(event); - biome.decorator = event.getNewBiomeDecorator(); - } -} diff --git a/src/main/java/net/minecraftforge/event/terraingen/InitMapGenEvent.java b/src/main/java/net/minecraftforge/event/terraingen/InitMapGenEvent.java index b0b62712f1..e65da5af63 100644 --- a/src/main/java/net/minecraftforge/event/terraingen/InitMapGenEvent.java +++ b/src/main/java/net/minecraftforge/event/terraingen/InitMapGenEvent.java @@ -20,7 +20,6 @@ package net.minecraftforge.event.terraingen; import net.minecraftforge.eventbus.api.Event; -import net.minecraft.world.gen.MapGenBase; public class InitMapGenEvent extends Event { @@ -28,6 +27,7 @@ public class InitMapGenEvent extends Event */ public static enum EventType { CAVE, MINESHAFT, NETHER_BRIDGE, NETHER_CAVE, RAVINE, SCATTERED_FEATURE, STRONGHOLD, VILLAGE, OCEAN_MONUMENT, WOODLAND_MANSION, END_CITY, CUSTOM } + /* TODO: Re-Evaluate private final EventType type; private final MapGenBase originalGen; private MapGenBase newGen; @@ -42,4 +42,5 @@ public class InitMapGenEvent extends Event public MapGenBase getOriginalGen() { return originalGen; } public MapGenBase getNewGen() { return newGen; } public void setNewGen(MapGenBase newGen) { this.newGen = newGen; } + */ } diff --git a/src/main/java/net/minecraftforge/fml/client/gui/GuiAccessDenied.java b/src/main/java/net/minecraftforge/fml/client/gui/GuiAccessDenied.java index a0a585ae9d..d8051e5ba4 100644 --- a/src/main/java/net/minecraftforge/fml/client/gui/GuiAccessDenied.java +++ b/src/main/java/net/minecraftforge/fml/client/gui/GuiAccessDenied.java @@ -23,7 +23,6 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.multiplayer.ServerData; import net.minecraft.client.resources.I18n; -import net.minecraftforge.fml.client.FMLClientHandler; public class GuiAccessDenied extends GuiScreen { @@ -38,17 +37,15 @@ public class GuiAccessDenied extends GuiScreen @Override public void initGui() { - this.buttonList.add(new GuiButton(1, this.width / 2 - 75, this.height - 38, I18n.format("gui.done"))); + this.buttonList.add(new GuiButton(1, this.width / 2 - 75, this.height - 38, I18n.format("gui.done")) + { + public void func_194829_a(double p_194829_1_, double p_194829_3_) + { + GuiAccessDenied.this.mc.displayGuiScreen(parent); + } + }); } - @Override - protected void actionPerformed(GuiButton p_73875_1_) - { - if (p_73875_1_.enabled && p_73875_1_.id == 1) - { - FMLClientHandler.instance().showGuiScreen(parent); - } - } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { diff --git a/src/main/java/net/minecraftforge/fml/client/gui/GuiBackupFailed.java b/src/main/java/net/minecraftforge/fml/client/gui/GuiBackupFailed.java index 9129b8853e..d824477acd 100644 --- a/src/main/java/net/minecraftforge/fml/client/gui/GuiBackupFailed.java +++ b/src/main/java/net/minecraftforge/fml/client/gui/GuiBackupFailed.java @@ -19,11 +19,11 @@ package net.minecraftforge.fml.client.gui; +import java.awt.Desktop; import java.io.File; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.I18n; -import net.minecraftforge.fml.client.FMLClientHandler; public class GuiBackupFailed extends GuiScreen { @@ -38,17 +38,15 @@ public class GuiBackupFailed extends GuiScreen @Override public void initGui() { - this.buttonList.add(new GuiButton(1, this.width / 2 - 75, this.height - 38, I18n.format("gui.done"))); + this.buttonList.add(new GuiButton(1, this.width / 2 - 75, this.height - 38, I18n.format("gui.done")) + { + public void func_194829_a(double p_194829_1_, double p_194829_3_) + { + GuiBackupFailed.this.mc.displayGuiScreen(parent); + } + }); } - @Override - protected void actionPerformed(GuiButton p_73875_1_) - { - if (p_73875_1_.enabled && p_73875_1_.id == 1) - { - FMLClientHandler.instance().showGuiScreen(parent); - } - } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { diff --git a/src/main/java/net/minecraftforge/fml/client/gui/GuiConfirmation.java b/src/main/java/net/minecraftforge/fml/client/gui/GuiConfirmation.java index f30b28046b..13f2e8c18b 100644 --- a/src/main/java/net/minecraftforge/fml/client/gui/GuiConfirmation.java +++ b/src/main/java/net/minecraftforge/fml/client/gui/GuiConfirmation.java @@ -18,11 +18,8 @@ */ package net.minecraftforge.fml.client.gui; - -import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiOptionButton; import net.minecraft.client.resources.I18n; -import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.StartupQuery; public class GuiConfirmation extends GuiNotification @@ -35,18 +32,23 @@ public class GuiConfirmation extends GuiNotification @Override public void initGui() { - this.buttonList.add(new GuiOptionButton(0, this.width / 2 - 155, this.height - 38, I18n.format("gui.yes"))); - this.buttonList.add(new GuiOptionButton(1, this.width / 2 - 155 + 160, this.height - 38, I18n.format("gui.no"))); - } - - @Override - protected void actionPerformed(GuiButton button) - { - if (button.enabled && (button.id == 0 || button.id == 1)) + this.buttonList.add(new GuiOptionButton(0, this.width / 2 - 155, this.height - 38, I18n.format("gui.yes")) { - FMLClientHandler.instance().showGuiScreen(null); - query.setResult(button.id == 0); - query.finish(); - } + public void func_194829_a(double p_194829_1_, double p_194829_3_) + { + GuiConfirmation.this.mc.displayGuiScreen(null); + query.setResult(true); + query.finish(); + } + }); + this.buttonList.add(new GuiOptionButton(1, this.width / 2 - 155 + 160, this.height - 38, I18n.format("gui.no")) + { + public void func_194829_a(double p_194829_1_, double p_194829_3_) + { + GuiConfirmation.this.mc.displayGuiScreen(null); + query.setResult(false); + query.finish(); + } + }); } } diff --git a/src/main/java/net/minecraftforge/fml/client/gui/GuiErrorBase.java b/src/main/java/net/minecraftforge/fml/client/gui/GuiErrorBase.java index 3c1b9ede3b..8f8fe32b16 100644 --- a/src/main/java/net/minecraftforge/fml/client/gui/GuiErrorBase.java +++ b/src/main/java/net/minecraftforge/fml/client/gui/GuiErrorBase.java @@ -22,14 +22,16 @@ package net.minecraftforge.fml.client.gui; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiErrorScreen; import net.minecraft.client.resources.I18n; -import net.minecraftforge.fml.common.FMLLog; -import net.minecraftforge.fml.common.Loader; import java.awt.*; import java.io.File; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + public class GuiErrorBase extends GuiErrorScreen { + private static final Logger LOGGER = LogManager.getLogger(); static final File minecraftDir = new File(Loader.instance().getConfigDir().getParent()); static final File logFile = new File(minecraftDir, "logs/latest.log"); public GuiErrorBase() @@ -47,45 +49,44 @@ public class GuiErrorBase extends GuiErrorScreen { super.initGui(); this.buttonList.clear(); - this.buttonList.add(new GuiButton(10, 50, this.height - 38, this.width / 2 - 55, 20, translateOrDefault("fml.button.open.mods.folder", "Open Mods Folder"))); + this.buttonList.add(new GuiButton(10, 50, this.height - 38, this.width / 2 - 55, 20, translateOrDefault("fml.button.open.mods.folder", "Open Mods Folder")) + { + public void func_194829_a(double p_194829_1_, double p_194829_3_) + { + try + { + File modsDir = new File(minecraftDir, "mods"); + Desktop.getDesktop().open(modsDir); + } + catch (Exception e) + { + LOGGER.error("Problem opening mods folder", e); + } + } + }); String openFileText = translateOrDefault("fml.button.open.file", "Open %s", logFile.getName()); - this.buttonList.add(new GuiButton(11, this.width / 2 + 5, this.height - 38, this.width / 2 - 55, 20, openFileText)); - } - - @Override - protected void actionPerformed(GuiButton button) - { - if (button.id == 10) + this.buttonList.add(new GuiButton(11, this.width / 2 + 5, this.height - 38, this.width / 2 - 55, 20, openFileText) { - try + public void func_194829_a(double p_194829_1_, double p_194829_3_) { - File modsDir = new File(minecraftDir, "mods"); - Desktop.getDesktop().open(modsDir); + try + { + Desktop.getDesktop().open(logFile); + } + catch (Exception e) + { + LOGGER.error("Problem opening log file {}", logFile, e); + } } - catch (Exception e) - { - FMLLog.log.error("Problem opening mods folder", e); - } - } - else if (button.id == 11) - { - try - { - Desktop.getDesktop().open(logFile); - } - catch (Exception e) - { - FMLLog.log.error("Problem opening log file {}", logFile, e); - } - } + }); } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { - for(GuiButton button : buttonList) + for (GuiButton button : buttonList) { - button.drawButton(this.mc, mouseX, mouseY, partialTicks); + button.func_194828_a(mouseX, mouseY, partialTicks); } } } diff --git a/src/main/java/net/minecraftforge/fml/client/gui/GuiModsMissingForServer.java b/src/main/java/net/minecraftforge/fml/client/gui/GuiModsMissingForServer.java index 63447e0d36..ecec5952c0 100644 --- a/src/main/java/net/minecraftforge/fml/client/gui/GuiModsMissingForServer.java +++ b/src/main/java/net/minecraftforge/fml/client/gui/GuiModsMissingForServer.java @@ -24,8 +24,6 @@ import java.util.List; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.I18n; -import net.minecraftforge.fml.client.FMLClientHandler; -import net.minecraftforge.fml.common.MissingModsException; import net.minecraftforge.fml.common.versioning.ArtifactVersion; public class GuiModsMissingForServer extends GuiScreen @@ -40,17 +38,15 @@ public class GuiModsMissingForServer extends GuiScreen @Override public void initGui() { - this.buttonList.add(new GuiButton(1, this.width / 2 - 75, this.height - 38, I18n.format("gui.done"))); + this.buttonList.add(new GuiButton(1, this.width / 2 - 75, this.height - 38, I18n.format("gui.done")) + { + public void func_194829_a(double p_194829_1_, double p_194829_3_) + { + GuiModsMissingForServer.this.mc.displayGuiScreen(null); + } + }); } - @Override - protected void actionPerformed(GuiButton p_73875_1_) - { - if (p_73875_1_.enabled && p_73875_1_.id == 1) - { - FMLClientHandler.instance().showGuiScreen(null); - } - } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { diff --git a/src/main/java/net/minecraftforge/fml/client/gui/GuiNotification.java b/src/main/java/net/minecraftforge/fml/client/gui/GuiNotification.java index 952154d477..a713192af6 100644 --- a/src/main/java/net/minecraftforge/fml/client/gui/GuiNotification.java +++ b/src/main/java/net/minecraftforge/fml/client/gui/GuiNotification.java @@ -22,7 +22,6 @@ package net.minecraftforge.fml.client.gui; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.I18n; -import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.StartupQuery; public class GuiNotification extends GuiScreen @@ -35,17 +34,14 @@ public class GuiNotification extends GuiScreen @Override public void initGui() { - this.buttonList.add(new GuiButton(0, this.width / 2 - 100, this.height - 38, I18n.format("gui.done"))); - } - - @Override - protected void actionPerformed(GuiButton button) - { - if (button.enabled && button.id == 0) + this.buttonList.add(new GuiButton(0, this.width / 2 - 100, this.height - 38, I18n.format("gui.done")) { - FMLClientHandler.instance().showGuiScreen(null); - query.finish(); - } + public void func_194829_a(double p_194829_1_, double p_194829_3_) + { + GuiNotification.this.mc.displayGuiScreen(null); + query.finish(); + } + }); } @Override diff --git a/src/main/java/net/minecraftforge/fml/common/registry/ForgeRegistries.java b/src/main/java/net/minecraftforge/fml/common/registry/ForgeRegistries.java index 6243685844..a379d5f370 100644 --- a/src/main/java/net/minecraftforge/fml/common/registry/ForgeRegistries.java +++ b/src/main/java/net/minecraftforge/fml/common/registry/ForgeRegistries.java @@ -51,7 +51,7 @@ public class ForgeRegistries public static final IForgeRegistry POTION_TYPES = RegistryManager.ACTIVE.getRegistry(PotionType.class); public static final IForgeRegistry ENCHANTMENTS = RegistryManager.ACTIVE.getRegistry(Enchantment.class); public static final IForgeRegistry VILLAGER_PROFESSIONS = RegistryManager.ACTIVE.getRegistry(VillagerProfession.class); - public static final IForgeRegistry ENTITIES = RegistryManager.ACTIVE.getRegistry(Entity.class); + public static final IForgeRegistry ENTITIES = RegistryManager.ACTIVE.getRegistry(EntityEntry.class); public static final IForgeRegistry RECIPES = RegistryManager.ACTIVE.getRegistry(IRecipe.class); diff --git a/src/main/java/net/minecraftforge/fml/relauncher/libraries/SnapshotJson.java b/src/main/java/net/minecraftforge/fml/relauncher/libraries/SnapshotJson.java index 8cf14b6386..2975d1cbca 100644 --- a/src/main/java/net/minecraftforge/fml/relauncher/libraries/SnapshotJson.java +++ b/src/main/java/net/minecraftforge/fml/relauncher/libraries/SnapshotJson.java @@ -29,12 +29,14 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import com.google.common.io.Files; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonSyntaxException; -import net.minecraftforge.fml.common.FMLLog; /** * This is different from the standard maven snapshot metadata. * Because none of that data is exposed to us as a user of gradle/maven/whatever. @@ -52,6 +54,7 @@ import net.minecraftforge.fml.common.FMLLog; */ public class SnapshotJson implements Comparable { + private static final Logger LOGGER = LogManager.getLogger(); public static final DateFormat TIMESTAMP = new SimpleDateFormat("yyyyMMdd.hhmmss"); public static final String META_JSON_FILE = "maven-metadata.json"; private static final Gson GSON = new GsonBuilder().create(); @@ -71,11 +74,11 @@ public class SnapshotJson implements Comparable } catch (JsonSyntaxException jse) { - FMLLog.log.info(FMLLog.log.getMessageFactory().newMessage("Failed to parse snapshot json file {}.", target), jse); + LOGGER.info("Failed to parse snapshot json file " + target + ".", jse); } catch (IOException ioe) { - FMLLog.log.info(FMLLog.log.getMessageFactory().newMessage("Failed to read snapshot json file {}.", target), ioe); + LOGGER.info("Failed to read snapshot json file " + target + ".", ioe); } return new SnapshotJson(); diff --git a/src/main/java/net/minecraftforge/registries/ForgeRegistry.java b/src/main/java/net/minecraftforge/registries/ForgeRegistry.java index 4fcc860cf5..b49f1ffae2 100644 --- a/src/main/java/net/minecraftforge/registries/ForgeRegistry.java +++ b/src/main/java/net/minecraftforge/registries/ForgeRegistry.java @@ -56,7 +56,7 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.MarkerManager; -public class ForgeRegistry> implements IForgeRegistryInternal, IForgeRegistryModifiable +public class ForgeRegistry> implements IForgeRegistryInternal, IForgeRegistryModifiable { public static Marker REGISTRIES = MarkerManager.getMarker("REGISTRIES"); private static Logger LOGGER = LogManager.getLogger(); diff --git a/src/main/java/net/minecraftforge/registries/ForgeRegistryEntry.java b/src/main/java/net/minecraftforge/registries/ForgeRegistryEntry.java index bd8aed73be..dbe99aed09 100644 --- a/src/main/java/net/minecraftforge/registries/ForgeRegistryEntry.java +++ b/src/main/java/net/minecraftforge/registries/ForgeRegistryEntry.java @@ -22,14 +22,17 @@ package net.minecraftforge.registries; import com.google.common.reflect.TypeToken; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.ModThreadContext; -import org.apache.logging.log4j.LogManager; - import javax.annotation.Nullable; +/** + * Default implementation of IForgeRegistryEntry, this is necessary to reduce redundant code. + * This also enables the registrie's ability to manage delegates. Which are automatically updated + * if another entry overrides existing ones in the registry. + */ @SuppressWarnings("unchecked") -public abstract class ForgeRegistryEntry> +public abstract class ForgeRegistryEntry> implements IForgeRegistryEntry { + @SuppressWarnings("serial") private final TypeToken token = new TypeToken(getClass()){}; public final IRegistryDelegate delegate = new RegistryDelegate<>((V)this, (Class)token.getRawType()); private ResourceLocation registryName = null; @@ -39,16 +42,7 @@ public abstract class ForgeRegistryEntry> if (getRegistryName() != null) throw new IllegalStateException("Attempted to set registry name with existing registry name! New: " + name + " Old: " + getRegistryName()); - int index = name.lastIndexOf(':'); - String oldPrefix = index == -1 ? "" : name.substring(0, index).toLowerCase(); - name = index == -1 ? name : name.substring(index + 1); - String prefix = ModThreadContext.get().getActiveContainer().getPrefix(); - if (!oldPrefix.equals(prefix) && oldPrefix.length() > 0) - { - LogManager.getLogger().info("Potentially Dangerous alternative prefix `{}` for name `{}`, expected `{}`. This could be a intended override, but in most cases indicates a broken mod.", oldPrefix, name, prefix); - prefix = oldPrefix; - } - this.registryName = new ResourceLocation(prefix, name); + this.registryName = GameData.checkPrefix(name); return (V)this; } @@ -65,4 +59,4 @@ public abstract class ForgeRegistryEntry> } public final Class getRegistryType() { return (Class)token.getRawType(); } -} \ No newline at end of file +} diff --git a/src/main/java/net/minecraftforge/registries/GameData.java b/src/main/java/net/minecraftforge/registries/GameData.java index ccb08cd6ee..3c54e67abe 100644 --- a/src/main/java/net/minecraftforge/registries/GameData.java +++ b/src/main/java/net/minecraftforge/registries/GameData.java @@ -25,17 +25,11 @@ import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import net.minecraft.block.Block; import net.minecraft.block.BlockAir; -import net.minecraft.block.BlockObserver; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.enchantment.Enchantment; -import net.minecraft.entity.Entity; -import net.minecraft.init.Items; -import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionType; import net.minecraft.util.ObjectIntIdentityMap; @@ -43,12 +37,12 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundEvent; import net.minecraft.util.registry.RegistryNamespaced; import net.minecraft.util.registry.RegistryNamespacedDefaultedByKey; -import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.RegistryEvent.MissingMappings; import net.minecraftforge.fml.common.EnhancedRuntimeException; +import net.minecraftforge.fml.ModThreadContext; import net.minecraftforge.fml.StartupQuery; import com.google.common.collect.ArrayListMultimap; @@ -196,7 +190,7 @@ public class GameData public static void vanillaSnapshot() { LOGGER.debug("Creating vanilla freeze snapshot"); - for (Map.Entry>> r : RegistryManager.ACTIVE.registries.entrySet()) + for (Map.Entry>> r : RegistryManager.ACTIVE.registries.entrySet()) { final Class clazz = RegistryManager.ACTIVE.getSuperType(r.getKey()); loadRegistry(r.getKey(), RegistryManager.ACTIVE, RegistryManager.VANILLA, clazz, true); @@ -244,7 +238,7 @@ public class GameData RegistryManager.ACTIVE.registries.forEach((name, reg) -> reg.resetDelegates()); LOGGER.debug(GD, "Reverting to frozen data state."); - for (Map.Entry>> r : RegistryManager.ACTIVE.registries.entrySet()) + for (Map.Entry>> r : RegistryManager.ACTIVE.registries.entrySet()) { final Class clazz = RegistryManager.ACTIVE.getSuperType(r.getKey()); loadRegistry(r.getKey(), RegistryManager.FROZEN, RegistryManager.ACTIVE, clazz, true); @@ -680,11 +674,12 @@ public class GameData STAGING.registries.forEach((name, reg) -> reg.validateContent(name)); // Load the STAGING registry into the ACTIVE registry - for (Map.Entry>> r : RegistryManager.ACTIVE.registries.entrySet()) + //for (Map.Entry>> r : RegistryManager.ACTIVE.registries.entrySet()) + RegistryManager.ACTIVE.registries.forEach((key, value) -> { - final Class registrySuperType = RegistryManager.ACTIVE.getSuperType(r.getKey()); - loadRegistry(r.getKey(), STAGING, RegistryManager.ACTIVE, registrySuperType, true); - } + final Class registrySuperType = RegistryManager.ACTIVE.getSuperType(key); + loadRegistry(key, STAGING, RegistryManager.ACTIVE, registrySuperType, true); + }); // Dump the active registry RegistryManager.ACTIVE.registries.forEach((name, reg) -> reg.dump(name)); @@ -700,7 +695,7 @@ public class GameData } //Has to be split because of generics, Yay! - private static > void loadPersistentDataToStagingRegistry(RegistryManager pool, RegistryManager to, Map remaps, Map missing, ResourceLocation name, ForgeRegistry.Snapshot snap, Class regType) + private static > void loadPersistentDataToStagingRegistry(RegistryManager pool, RegistryManager to, Map remaps, Map missing, ResourceLocation name, ForgeRegistry.Snapshot snap, Class regType) { ForgeRegistry active = pool.getRegistry(name); if (active == null) @@ -715,7 +710,7 @@ public class GameData //Another bouncer for generic reasons @SuppressWarnings("unchecked") - private static > void processMissing(Class clazz, ResourceLocation name, RegistryManager STAGING, MissingMappings e, Map missing, Map remaps, Collection defaulted, Collection failed, boolean injectNetworkDummies) + private static > void processMissing(Class clazz, ResourceLocation name, RegistryManager STAGING, MissingMappings e, Map missing, Map remaps, Collection defaulted, Collection failed, boolean injectNetworkDummies) { List> mappings = ((MissingMappings)e).getAllMappings(); ForgeRegistry active = RegistryManager.ACTIVE.getRegistry(name); @@ -723,7 +718,7 @@ public class GameData staging.processMissingEvent(name, active, mappings, missing, remaps, defaulted, failed, injectNetworkDummies); } - private static > void loadFrozenDataToStagingRegistry(RegistryManager STAGING, ResourceLocation name, Map remaps, Class clazz) + private static > void loadFrozenDataToStagingRegistry(RegistryManager STAGING, ResourceLocation name, Map remaps, Class clazz) { ForgeRegistry frozen = RegistryManager.FROZEN.getRegistry(name); ForgeRegistry newRegistry = STAGING.getRegistry(name, RegistryManager.FROZEN); @@ -781,11 +776,10 @@ public class GameData int index = name.lastIndexOf(':'); String oldPrefix = index == -1 ? "" : name.substring(0, index).toLowerCase(Locale.ROOT); name = index == -1 ? name : name.substring(index + 1); - ModContainer mc = Loader.instance().activeModContainer(); - String prefix = mc == null || (mc instanceof InjectedModContainer && ((InjectedModContainer)mc).wrappedContainer instanceof FMLContainer) ? "minecraft" : mc.getModId().toLowerCase(Locale.ROOT); + String prefix = ModThreadContext.get().getActiveContainer().getPrefix(); if (!oldPrefix.equals(prefix) && oldPrefix.length() > 0) { - FMLLog.log.warn("Potentially Dangerous alternative prefix `{}` for name `{}`, expected `{}`. This could be a intended override, but in most cases indicates a broken mod.", oldPrefix, name, prefix); + LogManager.getLogger().info("Potentially Dangerous alternative prefix `{}` for name `{}`, expected `{}`. This could be a intended override, but in most cases indicates a broken mod.", oldPrefix, name, prefix); prefix = oldPrefix; } return new ResourceLocation(prefix, name); @@ -798,7 +792,7 @@ public class GameData { try { - regName = IForgeRegistryEntry.Impl.class.getDeclaredField("registryName"); + regName = ForgeRegistryEntry.class.getDeclaredField("registryName"); regName.setAccessible(true); } catch (NoSuchFieldException | SecurityException e) diff --git a/src/main/java/net/minecraftforge/registries/IForgeRegistry.java b/src/main/java/net/minecraftforge/registries/IForgeRegistry.java index 55298995f6..5dd4a32f76 100644 --- a/src/main/java/net/minecraftforge/registries/IForgeRegistry.java +++ b/src/main/java/net/minecraftforge/registries/IForgeRegistry.java @@ -20,7 +20,6 @@ package net.minecraftforge.registries; import java.util.Collection; -import java.util.List; import java.util.Map.Entry; import java.util.Set; @@ -34,7 +33,7 @@ import javax.annotation.Nullable; * * @param The top level type for the registry */ -public interface IForgeRegistry> extends Iterable +public interface IForgeRegistry> extends Iterable { Class getRegistrySuperType(); @@ -49,13 +48,7 @@ public interface IForgeRegistry> extends Iterabl @Nullable ResourceLocation getKey(V value); @Nonnull Set getKeys(); - /** @deprecated use {@link #getValuesCollection} */ - @Deprecated // TODO: remove in 1.13 - @Nonnull List getValues(); - @Nonnull - default Collection getValuesCollection() { // TODO rename this to getValues in 1.13 - return getValues(); - } + @Nonnull Collection getValues(); @Nonnull Set> getEntries(); /** @@ -72,7 +65,7 @@ public interface IForgeRegistry> extends Iterabl * Callback fired when objects are added to the registry. This will fire when the registry is rebuilt * on the client side from a server side synchronization, or when a world is loaded. */ - interface AddCallback> + interface AddCallback> { void onAdd(IForgeRegistryInternal owner, RegistryManager stage, int id, V obj, @Nullable V oldObj); } @@ -81,7 +74,7 @@ public interface IForgeRegistry> extends Iterabl * Callback fired when the registry is cleared. This is done before a registry is reloaded from client * or server. */ - interface ClearCallback> + interface ClearCallback> { void onClear(IForgeRegistryInternal owner, RegistryManager stage); } @@ -89,7 +82,7 @@ public interface IForgeRegistry> extends Iterabl /** * Callback fired when a registry instance is created. Populate slave maps here. */ - interface CreateCallback> + interface CreateCallback> { void onCreate(IForgeRegistryInternal owner, RegistryManager stage); } @@ -105,7 +98,7 @@ public interface IForgeRegistry> extends Iterabl /** * Factory for creating dummy entries, allowing worlds to be loaded and keep the missing block references. */ - interface DummyFactory> + interface DummyFactory> { V createDummy(ResourceLocation key); } @@ -113,7 +106,7 @@ public interface IForgeRegistry> extends Iterabl /** * */ - interface MissingFactory> + interface MissingFactory> { V createMissing(ResourceLocation key, boolean isNetwork); } diff --git a/src/main/java/net/minecraftforge/registries/IForgeRegistryEntry.java b/src/main/java/net/minecraftforge/registries/IForgeRegistryEntry.java index 38e78da4eb..b1b529d672 100644 --- a/src/main/java/net/minecraftforge/registries/IForgeRegistryEntry.java +++ b/src/main/java/net/minecraftforge/registries/IForgeRegistryEntry.java @@ -18,9 +18,6 @@ */ package net.minecraftforge.registries; - -import com.google.common.reflect.TypeToken; - import net.minecraft.util.ResourceLocation; import javax.annotation.Nullable; @@ -41,7 +38,7 @@ public interface IForgeRegistryEntry * * @param name Unique registry name * @return This instance - * / + */ V setRegistryName(ResourceLocation name); /** @@ -50,44 +47,15 @@ public interface IForgeRegistryEntry * If neither are valid null is returned. * * @return Unique identifier or null. - * / + */ @Nullable ResourceLocation getRegistryName(); + /** + * Determines the type for this entry, used to look up the correct registry in the global registries list as there can only be one + * registry per concrete class. + * + * @return Root registry type. + */ Class getRegistryType(); - - // Default implementation, modders who make extra items SHOULD extend this instead of Object. - // So, all fields in interfaces are forced static, so even with Java8 people must still extend this. - @SuppressWarnings({ "serial", "unchecked" }) - public static class Impl> implements IForgeRegistryEntry - { - private TypeToken token = new TypeToken(getClass()){}; - public final IRegistryDelegate delegate = new RegistryDelegate((T)this, (Class)token.getRawType()); - private ResourceLocation registryName = null; - - public final T setRegistryName(String name) - { - if (getRegistryName() != null) - throw new IllegalStateException("Attempted to set registry name with existing registry name! New: " + name + " Old: " + getRegistryName()); - - this.registryName = GameData.checkPrefix(name); - return (T)this; - } - - //Helper functions - @Override - public final T setRegistryName(ResourceLocation name){ return setRegistryName(name.toString()); } - public final T setRegistryName(String modID, String name){ return setRegistryName(modID + ":" + name); } - @Override - @Nullable - public final ResourceLocation getRegistryName() - { - if (delegate.name() != null) return delegate.name(); - return registryName != null ? registryName : null; - } - - @Override - public final Class getRegistryType() { return (Class) token.getRawType(); }; - } - */ } diff --git a/src/main/java/net/minecraftforge/registries/IForgeRegistryInternal.java b/src/main/java/net/minecraftforge/registries/IForgeRegistryInternal.java index 63797cb531..9124756808 100644 --- a/src/main/java/net/minecraftforge/registries/IForgeRegistryInternal.java +++ b/src/main/java/net/minecraftforge/registries/IForgeRegistryInternal.java @@ -21,7 +21,7 @@ package net.minecraftforge.registries; import net.minecraft.util.ResourceLocation; -public interface IForgeRegistryInternal> extends IForgeRegistry +public interface IForgeRegistryInternal> extends IForgeRegistry { void setSlaveMap(ResourceLocation name, Object obj); } diff --git a/src/main/java/net/minecraftforge/registries/NamespacedDefaultedWrapper.java b/src/main/java/net/minecraftforge/registries/NamespacedDefaultedWrapper.java index c3ca0d7e0d..497b70c7fc 100644 --- a/src/main/java/net/minecraftforge/registries/NamespacedDefaultedWrapper.java +++ b/src/main/java/net/minecraftforge/registries/NamespacedDefaultedWrapper.java @@ -33,7 +33,7 @@ import net.minecraft.util.registry.RegistryNamespacedDefaultedByKey; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -class NamespacedDefaultedWrapper> extends RegistryNamespacedDefaultedByKey implements ILockableRegistry +class NamespacedDefaultedWrapper> extends RegistryNamespacedDefaultedByKey implements ILockableRegistry { private static final Logger LOGGER = LogManager.getLogger(); private boolean locked = false; @@ -130,7 +130,7 @@ class NamespacedDefaultedWrapper> extends Regist @Override public void lock(){ this.locked = true; } - public static class Factory> implements IForgeRegistry.CreateCallback + public static class Factory> implements IForgeRegistry.CreateCallback { public static final ResourceLocation ID = new ResourceLocation("forge", "registry_defaulted_wrapper"); @Override diff --git a/src/main/java/net/minecraftforge/registries/NamespacedWrapper.java b/src/main/java/net/minecraftforge/registries/NamespacedWrapper.java index 4897f2ab58..d5746963c8 100644 --- a/src/main/java/net/minecraftforge/registries/NamespacedWrapper.java +++ b/src/main/java/net/minecraftforge/registries/NamespacedWrapper.java @@ -33,7 +33,7 @@ import net.minecraft.util.registry.RegistryNamespaced; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -class NamespacedWrapper> extends RegistryNamespaced implements ILockableRegistry +class NamespacedWrapper> extends RegistryNamespaced implements ILockableRegistry { private static final Logger LOGGER = LogManager.getLogger(); private boolean locked = false; @@ -125,7 +125,7 @@ class NamespacedWrapper> extends RegistryNamespa @Override public void lock(){ this.locked = true; } - public static class Factory> implements IForgeRegistry.CreateCallback + public static class Factory> implements IForgeRegistry.CreateCallback { public static final ResourceLocation ID = new ResourceLocation("forge", "registry_defaulted_wrapper"); @Override diff --git a/src/main/java/net/minecraftforge/registries/RegistryBuilder.java b/src/main/java/net/minecraftforge/registries/RegistryBuilder.java index 17d73923b1..7014486192 100644 --- a/src/main/java/net/minecraftforge/registries/RegistryBuilder.java +++ b/src/main/java/net/minecraftforge/registries/RegistryBuilder.java @@ -28,7 +28,7 @@ import net.minecraftforge.registries.IForgeRegistry.*; import javax.annotation.Nullable; -public class RegistryBuilder> +public class RegistryBuilder> { private ResourceLocation registryName; private Class registryType; diff --git a/src/main/java/net/minecraftforge/registries/RegistryManager.java b/src/main/java/net/minecraftforge/registries/RegistryManager.java index 6255643238..3778fe22d7 100644 --- a/src/main/java/net/minecraftforge/registries/RegistryManager.java +++ b/src/main/java/net/minecraftforge/registries/RegistryManager.java @@ -44,7 +44,7 @@ public class RegistryManager public static final RegistryManager FROZEN = new RegistryManager("FROZEN"); BiMap>> registries = HashBiMap.create(); - private BiMap>, ResourceLocation> superTypes = HashBiMap.create(); + private BiMap>, ResourceLocation> superTypes = HashBiMap.create(); private Set persisted = Sets.newHashSet(); private final String name;