diff --git a/patches/minecraft/net/minecraft/client/settings/KeyBinding.java.patch b/patches/minecraft/net/minecraft/client/settings/KeyBinding.java.patch new file mode 100644 index 0000000000..b39501f3bb --- /dev/null +++ b/patches/minecraft/net/minecraft/client/settings/KeyBinding.java.patch @@ -0,0 +1,12 @@ +--- a/net/minecraft/client/settings/KeyBinding.java ++++ b/net/minecraft/client/settings/KeyBinding.java +@@ -163,4 +163,9 @@ + public String func_197982_m() { + return this.keyCode.func_197935_d(); + } ++ ++ public InputMappings.Input getKey() ++ { ++ return this.keyCode; ++ } + } diff --git a/patches/minecraft/net/minecraft/world/dimension/Dimension.java.patch b/patches/minecraft/net/minecraft/world/dimension/Dimension.java.patch index 421ea78304..064d2a59e8 100644 --- a/patches/minecraft/net/minecraft/world/dimension/Dimension.java.patch +++ b/patches/minecraft/net/minecraft/world/dimension/Dimension.java.patch @@ -9,3 +9,58 @@ public static final float[] MOON_PHASE_FACTORS = new float[]{1.0F, 0.75F, 0.5F, 0.25F, 0.0F, 0.25F, 0.5F, 0.75F}; protected World world; protected boolean doesWaterVaporize; +@@ -141,4 +141,54 @@ + public abstract boolean doesXZShowFog(int x, int z); + + public abstract DimensionType getDimensionType(); ++ ++ /*======================================= Forge Start =========================================*/ ++ private net.minecraftforge.client.IRenderHandler skyRenderer = null; ++ private net.minecraftforge.client.IRenderHandler cloudRenderer = null; ++ private net.minecraftforge.client.IRenderHandler weatherRenderer = null; ++ ++ @Nullable ++ @OnlyIn(Dist.CLIENT) ++ @Override ++ public net.minecraftforge.client.IRenderHandler getSkyRenderer() ++ { ++ return this.skyRenderer; ++ } ++ ++ @OnlyIn(Dist.CLIENT) ++ @Override ++ public void setSkyRenderer(net.minecraftforge.client.IRenderHandler skyRenderer) ++ { ++ this.skyRenderer = skyRenderer; ++ } ++ ++ @Nullable ++ @OnlyIn(Dist.CLIENT) ++ @Override ++ public net.minecraftforge.client.IRenderHandler getCloudRenderer() ++ { ++ return cloudRenderer; ++ } ++ ++ @OnlyIn(Dist.CLIENT) ++ @Override ++ public void setCloudRenderer(net.minecraftforge.client.IRenderHandler renderer) ++ { ++ cloudRenderer = renderer; ++ } ++ ++ @Nullable ++ @OnlyIn(Dist.CLIENT) ++ @Override ++ public net.minecraftforge.client.IRenderHandler getWeatherRenderer() ++ { ++ return weatherRenderer; ++ } ++ ++ @OnlyIn(Dist.CLIENT) ++ @Override ++ public void setWeatherRenderer(net.minecraftforge.client.IRenderHandler renderer) ++ { ++ weatherRenderer = renderer; ++ } + } diff --git a/src/main/java/net/minecraftforge/client/FluidContainerColorer.java b/src/main/java/net/minecraftforge/client/FluidContainerColorer.java index bf10b2fb30..1f41a2f3d4 100644 --- a/src/main/java/net/minecraftforge/client/FluidContainerColorer.java +++ b/src/main/java/net/minecraftforge/client/FluidContainerColorer.java @@ -19,21 +19,20 @@ package net.minecraftforge.client; +import javax.annotation.Nonnull; + import net.minecraft.client.renderer.color.IItemColor; import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; -import javax.annotation.Nonnull; - public class FluidContainerColorer implements IItemColor { @Override public int getColor(@Nonnull ItemStack stack, int tintIndex) { if (tintIndex != 1) return 0xFFFFFFFF; - FluidStack fluidStack = FluidUtil.getFluidContained(stack); - if (fluidStack == null) return 0xFFFFFFFF; - return fluidStack.getFluid().getColor(fluidStack); + return FluidUtil.getFluidContained(stack) + .map(fstack -> fstack.getFluid().getColor(fstack)) + .orElse(0xFFFFFFFF); } } diff --git a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java index 66b2cacc93..c4863a13b4 100644 --- a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java +++ b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java @@ -31,6 +31,7 @@ import java.nio.ByteBuffer; import java.nio.FloatBuffer; import java.util.Map; import java.util.Optional; +import java.util.Random; import java.util.function.Predicate; import javax.annotation.Nonnull; @@ -54,6 +55,7 @@ import net.minecraft.client.renderer.BlockRendererDispatcher; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderGlobal; import net.minecraft.client.renderer.block.model.BakedQuad; @@ -71,6 +73,7 @@ import net.minecraft.client.renderer.entity.model.ModelBiped; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.client.renderer.vertex.VertexFormatElement; @@ -87,6 +90,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.resources.IResourceManagerReloadListener; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; @@ -131,12 +135,17 @@ import net.minecraftforge.fml.VersionChecker; import net.minecraftforge.fml.client.registry.ClientRegistry; import org.apache.commons.lang3.tuple.Pair; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.lwjgl.BufferUtils; +import org.lwjgl.opengl.GL11; import com.google.common.collect.Maps; public class ForgeHooksClient { + private static final Logger LOGGER = LogManager.getLogger(); + //private static final ResourceLocation ITEM_GLINT = new ResourceLocation("textures/misc/enchanted_item_glint.png"); public static String getArmorTexture(Entity entity, ItemStack armor, String _default, EntityEquipmentSlot slot, String type) @@ -181,7 +190,7 @@ public class ForgeHooksClient public static void onTextureStitchedPre(TextureMap map) { MinecraftForge.EVENT_BUS.post(new TextureStitchEvent.Pre(map)); - ModelLoader.White.INSTANCE.register(map); +// ModelLoader.White.INSTANCE.register(map); // TODO Custom TAS ModelDynBucket.LoaderDynBucket.INSTANCE.register(map); } @@ -239,12 +248,12 @@ public class ForgeHooksClient return base + name; } } - +/* TODO mouse input public static boolean postMouseEvent() { return MinecraftForge.EVENT_BUS.post(new MouseEvent()); } - +*/ public static float getOffsetFOV(EntityPlayer entity, float fov) { FOVUpdateEvent fovUpdateEvent = new FOVUpdateEvent(entity, fov); @@ -446,7 +455,7 @@ public class ForgeHooksClient matrixBuf.put(t); } matrixBuf.flip(); - glMultMatrix(matrixBuf); + glMultMatrixf(matrixBuf); } // moved and expanded from WorldVertexBufferUploader.draw @@ -487,7 +496,7 @@ public class ForgeHooksClient glEnableVertexAttribArray(attr.getIndex()); glVertexAttribPointer(attr.getIndex(), count, constant, false, stride, buffer); default: - FMLLog.log.fatal("Unimplemented vanilla attribute upload: {}", attrType.getDisplayName()); + LOGGER.fatal("Unimplemented vanilla attribute upload: {}", attrType.getDisplayName()); } } @@ -517,7 +526,7 @@ public class ForgeHooksClient case GENERIC: glDisableVertexAttribArray(attr.getIndex()); default: - FMLLog.log.fatal("Unimplemented vanilla attribute upload: {}", attrType.getDisplayName()); + LOGGER.fatal("Unimplemented vanilla attribute upload: {}", attrType.getDisplayName()); } } @@ -572,10 +581,10 @@ public class ForgeHooksClient Class tileClass = tileItemMap.get(Pair.of(item, metadata)); if (tileClass != null) { - TileEntitySpecialRenderer r = TileEntityRendererDispatcher.instance.getRenderer(tileClass); + TileEntityRenderer r = TileEntityRendererDispatcher.instance.getRenderer(tileClass); if (r != null) { - r.render(null, 0, 0, 0, 0, -1, 0.0F); + r.func_199341_a(null, 0, 0, 0, 0, -1); } } } @@ -648,10 +657,10 @@ public class ForgeHooksClient } } - public static IBakedModel getDamageModel(IBakedModel ibakedmodel, TextureAtlasSprite texture, IBlockState state, IBlockAccess world, BlockPos pos) + public static IBakedModel getDamageModel(IBakedModel ibakedmodel, TextureAtlasSprite texture, IBlockState state, IWorldReader world, BlockPos pos) { state = state.getBlock().getExtendedState(state, world, pos); - return (new SimpleBakedModel.Builder(state, ibakedmodel, texture, pos)).makeBakedModel(); + return (new SimpleBakedModel.Builder(state, ibakedmodel, texture, new Random(), 42)).makeBakedModel(); } private static int slotMainHand = 0; @@ -743,7 +752,7 @@ public class ForgeHooksClient @SuppressWarnings("deprecation") public static Pair handlePerspective(IBakedModel model, ItemCameraTransforms.TransformType type) { - TRSRTransformation tr = new TRSRTransformation(model.getItemCameraTransforms().getTransform(type)); + TRSRTransformation tr = TRSRTransformation.from(model.getItemCameraTransforms().getTransform(type)); Matrix4f mat = null; if(!tr.equals(TRSRTransformation.identity())) mat = tr.getMatrix(); return Pair.of(model, mat); @@ -765,7 +774,7 @@ public class ForgeHooksClient { Predicate predicate = SelectiveReloadStateHandler.INSTANCE.get(); - if (listener instanceof ModelManager || listener instanceof RenderItem) + if (listener instanceof ModelManager || listener instanceof ItemRenderer) return predicate.test(VanillaResourceType.MODELS); else if (listener instanceof BlockRendererDispatcher || listener instanceof RenderGlobal) return predicate.test(VanillaResourceType.MODELS); diff --git a/src/main/java/net/minecraftforge/client/IRenderContextHandler.java b/src/main/java/net/minecraftforge/client/IRenderContextHandler.java deleted file mode 100644 index 5b1c3908a2..0000000000 --- a/src/main/java/net/minecraftforge/client/IRenderContextHandler.java +++ /dev/null @@ -1,36 +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.client; - -/** - * @deprecated TODO remove in 1.13. This has never been used - */ -@Deprecated -public interface IRenderContextHandler -{ - /** Run before the specified rendering context. - */ - void beforeRenderContext(); - - /** Run after the specified rendering context. - */ - void afterRenderContext(); -} - diff --git a/src/main/java/net/minecraftforge/client/gui/ForgeGuiFactory.java b/src/main/java/net/minecraftforge/client/gui/ForgeGuiFactory.java index 2d92fad565..d63a725b97 100644 --- a/src/main/java/net/minecraftforge/client/gui/ForgeGuiFactory.java +++ b/src/main/java/net/minecraftforge/client/gui/ForgeGuiFactory.java @@ -48,8 +48,9 @@ import net.minecraftforge.fml.client.config.GuiConfigEntries.IConfigEntry; import net.minecraftforge.fml.client.config.GuiConfigEntries.SelectValueEntry; import net.minecraftforge.fml.client.config.GuiConfigEntries.BooleanEntry; import net.minecraftforge.fml.client.config.IConfigElement; -import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.ModContainer; +import net.minecraftforge.fml.ModList; + import static net.minecraftforge.common.ForgeMod.VERSION_CHECK_CAT; /** @@ -399,7 +400,7 @@ public class ForgeGuiFactory implements IModGuiFactory @Override public void onGuiClosed() { - Object modObject = Loader.instance().getModObjectList().get(Loader.instance().getIndexedModList().get(currentValue)); + Object modObject = ModList.get().getModContainerById(getCurrentValue()); int maxTickets = 200; int maxChunks = 25; if (modObject != null) diff --git a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java index cc407feb83..22f9ff9d28 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java +++ b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java @@ -439,32 +439,28 @@ public final class ModelDynBucket implements IUnbakedModel @Override public IBakedModel func_209581_a(IBakedModel originalModel, ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) { - FluidStack fluidStack = FluidUtil.getFluidContained(stack); + return FluidUtil.getFluidContained(stack) + .map(fluidStack -> { + BakedDynBucket model = (BakedDynBucket)originalModel; - // not a fluid item apparently - if (fluidStack == null) - { - // empty bucket - return originalModel; - } + Fluid fluid = fluidStack.getFluid(); + String name = fluid.getName(); - BakedDynBucket model = (BakedDynBucket)originalModel; + if (!model.cache.containsKey(name)) + { + IUnbakedModel parent = model.parent.process(ImmutableMap.of("fluid", name)); + Function textureGetter; + textureGetter = location -> Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(location.toString()); - Fluid fluid = fluidStack.getFluid(); - String name = fluid.getName(); + IBakedModel bakedModel = parent.bake(ModelLoader.defaultModelGetter(), textureGetter, new SimpleModelState(model.transforms), false, model.format); + model.cache.put(name, bakedModel); + return bakedModel; + } - if (!model.cache.containsKey(name)) - { - IUnbakedModel parent = model.parent.process(ImmutableMap.of("fluid", name)); - Function textureGetter; - textureGetter = location -> Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(location.toString()); - - IBakedModel bakedModel = parent.bake(ModelLoader.defaultModelGetter(), textureGetter, new SimpleModelState(model.transforms), false, model.format); - model.cache.put(name, bakedModel); - return bakedModel; - } - - return model.cache.get(name); + return model.cache.get(name); + }) + // not a fluid item apparently + .orElse(originalModel); // empty bucket } } diff --git a/src/main/java/net/minecraftforge/client/resource/SelectiveReloadStateHandler.java b/src/main/java/net/minecraftforge/client/resource/SelectiveReloadStateHandler.java index 2b9a76264d..213e40802f 100644 --- a/src/main/java/net/minecraftforge/client/resource/SelectiveReloadStateHandler.java +++ b/src/main/java/net/minecraftforge/client/resource/SelectiveReloadStateHandler.java @@ -22,6 +22,7 @@ package net.minecraftforge.client.resource; import javax.annotation.Nullable; import java.util.function.Predicate; +import net.minecraftforge.common.ForgeMod; import net.minecraftforge.common.ForgeModContainer; /** @@ -58,7 +59,7 @@ public enum SelectiveReloadStateHandler */ public Predicate get() { - if (this.currentPredicate == null || !ForgeModContainer.selectiveResourceReloadEnabled) + if (this.currentPredicate == null && false) // TODO configs || !ForgeMod.selectiveResourceReloadEnabled) { return ReloadRequirements.all(); } diff --git a/src/main/java/net/minecraftforge/client/settings/KeyModifier.java b/src/main/java/net/minecraftforge/client/settings/KeyModifier.java index 5ea54203d9..6fa000e1e9 100644 --- a/src/main/java/net/minecraftforge/client/settings/KeyModifier.java +++ b/src/main/java/net/minecraftforge/client/settings/KeyModifier.java @@ -21,11 +21,12 @@ package net.minecraftforge.client.settings; import javax.annotation.Nullable; +import net.minecraft.client.GameSettings; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.I18n; -import net.minecraft.client.settings.GameSettings; -import org.lwjgl.input.Keyboard; + +import org.lwjgl.glfw.GLFW; public enum KeyModifier { CONTROL { @@ -34,11 +35,11 @@ public enum KeyModifier { { if (Minecraft.IS_RUNNING_ON_MAC) { - return keyCode == Keyboard.KEY_LMETA || keyCode == Keyboard.KEY_RMETA; + return keyCode == GLFW.GLFW_KEY_LEFT_ALT || keyCode == GLFW.GLFW_KEY_RIGHT_ALT; } else { - return keyCode == Keyboard.KEY_LCONTROL || keyCode == Keyboard.KEY_RCONTROL; + return keyCode == GLFW.GLFW_KEY_LEFT_CONTROL || keyCode == GLFW.GLFW_KEY_RIGHT_CONTROL; } } @@ -57,7 +58,7 @@ public enum KeyModifier { @Override public String getLocalizedComboName(int keyCode) { - String keyName = GameSettings.getKeyDisplayString(keyCode); + String keyName = GLFW.glfwGetKeyName(keyCode, 0); String localizationFormatKey = Minecraft.IS_RUNNING_ON_MAC ? "forge.controlsgui.control.mac" : "forge.controlsgui.control"; return I18n.format(localizationFormatKey, keyName); } @@ -66,7 +67,7 @@ public enum KeyModifier { @Override public boolean matches(int keyCode) { - return keyCode == Keyboard.KEY_LSHIFT || keyCode == Keyboard.KEY_RSHIFT; + return keyCode == GLFW.GLFW_KEY_LEFT_SHIFT || keyCode == GLFW.GLFW_KEY_RIGHT_SHIFT; } @Override @@ -84,7 +85,7 @@ public enum KeyModifier { @Override public String getLocalizedComboName(int keyCode) { - String keyName = GameSettings.getKeyDisplayString(keyCode); + String keyName = GLFW.glfwGetKeyName(keyCode, 0); return I18n.format("forge.controlsgui.shift", keyName); } }, @@ -92,7 +93,7 @@ public enum KeyModifier { @Override public boolean matches(int keyCode) { - return keyCode == Keyboard.KEY_LMENU || keyCode == Keyboard.KEY_RMENU; + return keyCode == GLFW.GLFW_KEY_LEFT_ALT || keyCode == GLFW.GLFW_KEY_RIGHT_ALT; } @Override @@ -110,7 +111,7 @@ public enum KeyModifier { @Override public String getLocalizedComboName(int keyCode) { - String keyName = GameSettings.getKeyDisplayString(keyCode); + String keyName = GLFW.glfwGetKeyName(keyCode, 0); return I18n.format("forge.controlsgui.alt", keyName); } }, @@ -146,7 +147,7 @@ public enum KeyModifier { @Override public String getLocalizedComboName(int keyCode) { - return GameSettings.getKeyDisplayString(keyCode); + return GLFW.glfwGetKeyName(keyCode, 0); } }; diff --git a/src/main/java/net/minecraftforge/common/ForgeMod.java b/src/main/java/net/minecraftforge/common/ForgeMod.java index 81f5044ec2..c5ae5803b8 100644 --- a/src/main/java/net/minecraftforge/common/ForgeMod.java +++ b/src/main/java/net/minecraftforge/common/ForgeMod.java @@ -329,6 +329,11 @@ public class ForgeMod implements WorldPersistenceHooks.WorldPersistenceHook } } } + + public static Configuration getConfig() + { + return config; + } /* public void missingMapping(RegistryEvent.MissingMappings event) diff --git a/src/main/java/net/minecraftforge/common/extensions/IForgeDimension.java b/src/main/java/net/minecraftforge/common/extensions/IForgeDimension.java index 78932a73c6..771e907b96 100644 --- a/src/main/java/net/minecraftforge/common/extensions/IForgeDimension.java +++ b/src/main/java/net/minecraftforge/common/extensions/IForgeDimension.java @@ -1,5 +1,12 @@ package net.minecraftforge.common.extensions; +import javax.annotation.Nullable; + +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.IRenderHandler; + public interface IForgeDimension { /** @@ -18,4 +25,25 @@ public interface IForgeDimension { return null; } + + @OnlyIn(Dist.CLIENT) + @Nullable + IRenderHandler getSkyRenderer(); + + @OnlyIn(Dist.CLIENT) + void setSkyRenderer(IRenderHandler skyRenderer); + + @OnlyIn(Dist.CLIENT) + @Nullable + IRenderHandler getCloudRenderer(); + + @OnlyIn(Dist.CLIENT) + void setCloudRenderer(IRenderHandler renderer); + + @OnlyIn(Dist.CLIENT) + @Nullable + IRenderHandler getWeatherRenderer(); + + @OnlyIn(Dist.CLIENT) + void setWeatherRenderer(IRenderHandler renderer); } diff --git a/src/main/java/net/minecraftforge/fml/client/config/GuiButtonExt.java b/src/main/java/net/minecraftforge/fml/client/config/GuiButtonExt.java index 4f5f1f6fa1..def8a40325 100644 --- a/src/main/java/net/minecraftforge/fml/client/config/GuiButtonExt.java +++ b/src/main/java/net/minecraftforge/fml/client/config/GuiButtonExt.java @@ -48,10 +48,11 @@ public class GuiButtonExt extends GuiButton * Draws this button to the screen. */ @Override - public void drawButton(Minecraft mc, int mouseX, int mouseY, float partial) + public void func_194828_a(int mouseX, int mouseY, float partial) { if (this.visible) { + Minecraft mc = Minecraft.getMinecraft(); this.hovered = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height; int k = this.getHoverState(this.hovered); GuiUtils.drawContinuousTexturedBox(BUTTON_TEXTURES, this.x, this.y, 0, 46 + k * 20, this.width, this.height, 200, 20, 2, 3, 2, 2, this.zLevel); diff --git a/src/main/java/net/minecraftforge/fml/client/config/GuiConfigEntries.java b/src/main/java/net/minecraftforge/fml/client/config/GuiConfigEntries.java index c2fa2d4a9e..078dc64f54 100644 --- a/src/main/java/net/minecraftforge/fml/client/config/GuiConfigEntries.java +++ b/src/main/java/net/minecraftforge/fml/client/config/GuiConfigEntries.java @@ -1684,7 +1684,7 @@ public class GuiConfigEntries extends GuiListExtended /** * Provides an interface for defining GuiConfigEntry.listEntry objects. */ - public static interface IConfigEntry extends GuiListExtended.IGuiListEntry + public static interface IConfigEntry { /** * Gets the IConfigElement object owned by this entry.