Fix most of the compile errors in the client package (#5137)

* Add KeyBinding#getKey and clean up errors in KeyModifier

* Add dimension IRenderHandler patches

* Fix most of the compile errors in client package.

The rest are missing Block/KeyBinding patches

* Disable selective reloads until configs are finished

* Add OnlyIn on IForgeDimension to match those of Dimension
This commit is contained in:
tterrag 2018-09-11 21:42:29 -04:00 committed by GitHub
parent a0cef07a0b
commit 949a62a0da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 163 additions and 91 deletions

View File

@ -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;
+ }
}

View File

@ -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;
+ }
}

View File

@ -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);
}
}

View File

@ -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<? extends TileEntity> 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<? extends IBakedModel,Matrix4f> 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<IResourceType> 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);

View File

@ -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();
}

View File

@ -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)

View File

@ -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<ResourceLocation, TextureAtlasSprite> 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<ResourceLocation, TextureAtlasSprite> 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
}
}

View File

@ -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<IResourceType> get()
{
if (this.currentPredicate == null || !ForgeModContainer.selectiveResourceReloadEnabled)
if (this.currentPredicate == null && false) // TODO configs || !ForgeMod.selectiveResourceReloadEnabled)
{
return ReloadRequirements.all();
}

View File

@ -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);
}
};

View File

@ -329,6 +329,11 @@ public class ForgeMod implements WorldPersistenceHooks.WorldPersistenceHook
}
}
}
public static Configuration getConfig()
{
return config;
}
/*
public void missingMapping(RegistryEvent.MissingMappings<Item> event)

View File

@ -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);
}

View File

@ -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);

View File

@ -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.