diff --git a/patches/minecraft/net/minecraft/block/state/BlockStateContainer.java.patch b/patches/minecraft/net/minecraft/block/state/BlockStateContainer.java.patch index 11935aade..6b8a55052 100644 --- a/patches/minecraft/net/minecraft/block/state/BlockStateContainer.java.patch +++ b/patches/minecraft/net/minecraft/block/state/BlockStateContainer.java.patch @@ -8,12 +8,12 @@ + this(p_i45663_1_, p_i45663_2_, null); + } + -+ protected StateImplementation createState(Block block, ImmutableMap, Comparable> properties, @Nullable ImmutableMap, com.google.common.base.Optional> unlistedProperties) ++ protected StateImplementation createState(Block block, ImmutableMap, Comparable> properties, @Nullable ImmutableMap, java.util.Optional> unlistedProperties) + { + return new StateImplementation(block, properties); + } + -+ protected BlockStateContainer(Block blockIn, IProperty[] properties, ImmutableMap, com.google.common.base.Optional> unlistedProperties) ++ protected BlockStateContainer(Block blockIn, IProperty[] properties, ImmutableMap, java.util.Optional> unlistedProperties) + { + this.field_177627_c = blockIn; Map < String, IProperty> map = Maps. < String, IProperty> newHashMap(); diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/IBakedModel.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/IBakedModel.java.patch index 91066f0a8..1715d81e2 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/IBakedModel.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/IBakedModel.java.patch @@ -1,10 +1,20 @@ --- ../src-base/minecraft/net/minecraft/client/renderer/block/model/IBakedModel.java +++ ../src-work/minecraft/net/minecraft/client/renderer/block/model/IBakedModel.java -@@ -21,6 +21,7 @@ +@@ -21,7 +21,16 @@ TextureAtlasSprite func_177554_e(); +- ItemCameraTransforms func_177552_f(); + @Deprecated - ItemCameraTransforms func_177552_f(); ++ default ItemCameraTransforms func_177552_f() { return ItemCameraTransforms.field_178357_a; } ItemOverrideList func_188617_f(); ++ ++ /* ++ * Returns the pair of the model for the given perspective, and the matrix ++ * that should be applied to the GL state before rendering it (matrix may be null). ++ */ ++ default org.apache.commons.lang3.tuple.Pair handlePerspective(ItemCameraTransforms.TransformType cameraTransformType) { ++ return net.minecraftforge.client.ForgeHooksClient.handlePerspective(this, cameraTransformType); ++ } + } diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransformVec3f.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransformVec3f.java.patch index 9dde502f9..174d76434 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransformVec3f.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransformVec3f.java.patch @@ -12,7 +12,7 @@ +@Deprecated +public class ItemTransformVec3f implements net.minecraftforge.common.model.IModelState { -+ public com.google.common.base.Optional apply(com.google.common.base.Optional part) { return net.minecraftforge.client.ForgeHooksClient.applyTransform(this, part); } ++ public java.util.Optional apply(java.util.Optional part) { return net.minecraftforge.client.ForgeHooksClient.applyTransform(this, part); } public static final ItemTransformVec3f field_178366_a = new ItemTransformVec3f(new Vector3f(), new Vector3f(), new Vector3f(1.0F, 1.0F, 1.0F)); public final Vector3f field_178364_b; public final Vector3f field_178365_c; diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch index fc4ccfcd0..aaded845c 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBakery.java.patch @@ -63,6 +63,15 @@ } } } +@@ -228,7 +239,7 @@ + try + { + inputstream = p_188636_2_.func_110527_b(); +- lvt_4_1_ = ModelBlockDefinition.func_178331_a(new InputStreamReader(inputstream, StandardCharsets.UTF_8)); ++ lvt_4_1_ = ModelBlockDefinition.parseFromReader(new InputStreamReader(inputstream, StandardCharsets.UTF_8), p_188636_1_); + } + catch (Exception exception) + { @@ -394,6 +405,7 @@ protected void func_177592_e() diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBlockDefinition.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBlockDefinition.java.patch index d486d3a6c..31a21668b 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBlockDefinition.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelBlockDefinition.java.patch @@ -1,11 +1,20 @@ --- ../src-base/minecraft/net/minecraft/client/renderer/block/model/ModelBlockDefinition.java +++ ../src-work/minecraft/net/minecraft/client/renderer/block/model/ModelBlockDefinition.java -@@ -34,7 +34,7 @@ +@@ -32,11 +32,16 @@ + private final Map field_178332_b = Maps.newHashMap(); + private Multipart field_188005_c; ++ @Deprecated public static ModelBlockDefinition func_178331_a(Reader p_178331_0_) { - return (ModelBlockDefinition)JsonUtils.func_193839_a(field_178333_a, p_178331_0_, ModelBlockDefinition.class); -+ return net.minecraftforge.client.model.BlockStateLoader.load(p_178331_0_, field_178333_a); ++ return parseFromReader(p_178331_0_, null); } ++ public static ModelBlockDefinition parseFromReader(Reader reader, net.minecraft.util.ResourceLocation location) { ++ return net.minecraftforge.client.model.BlockStateLoader.load(reader, location, field_178333_a); ++ } ++ public ModelBlockDefinition(Map p_i46572_1_, Multipart p_i46572_2_) + { + this.field_188005_c = p_i46572_2_; diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelRotation.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelRotation.java.patch index af4bc6663..5025d3973 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/ModelRotation.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/ModelRotation.java.patch @@ -14,7 +14,7 @@ } } + -+ public com.google.common.base.Optional apply(com.google.common.base.Optional part) { return net.minecraftforge.client.ForgeHooksClient.applyTransform(getMatrix(), part); } ++ public java.util.Optional apply(java.util.Optional part) { return net.minecraftforge.client.ForgeHooksClient.applyTransform(getMatrix(), part); } + public javax.vecmath.Matrix4f getMatrix() { return net.minecraftforge.client.ForgeHooksClient.getMatrix(this); } + public EnumFacing rotate(EnumFacing facing) { return func_177523_a(facing); } + public int rotate(EnumFacing facing, int vertexIndex) { return func_177520_a(facing, vertexIndex); } diff --git a/patches/minecraft/net/minecraft/client/renderer/block/model/Variant.java.patch b/patches/minecraft/net/minecraft/client/renderer/block/model/Variant.java.patch index d176aa5f9..8e59079cb 100644 --- a/patches/minecraft/net/minecraft/client/renderer/block/model/Variant.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/block/model/Variant.java.patch @@ -34,6 +34,6 @@ + + public net.minecraftforge.client.model.IModel process(net.minecraftforge.client.model.IModel base) + { -+ return net.minecraftforge.client.model.ModelProcessingHelper.uvlock(base, func_188049_c()); ++ return base.uvlock(func_188049_c()); + } } diff --git a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java index bc2e442a4..ef85126cd 100644 --- a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java +++ b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java @@ -103,7 +103,6 @@ import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.client.event.ScreenshotEvent; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.event.sound.PlaySoundEvent; -import net.minecraftforge.client.model.IPerspectiveAwareModel; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.animation.Animation; import net.minecraftforge.common.ForgeModContainer; @@ -120,7 +119,7 @@ import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.BufferUtils; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.Maps; public class ForgeHooksClient @@ -399,32 +398,21 @@ public class ForgeHooksClient flipX.m00 = -1; } - @SuppressWarnings("deprecation") public static IBakedModel handleCameraTransforms(IBakedModel model, ItemCameraTransforms.TransformType cameraTransformType, boolean leftHandHackery) { - if(model instanceof IPerspectiveAwareModel) - { - Pair pair = ((IPerspectiveAwareModel)model).handlePerspective(cameraTransformType); + Pair pair = model.handlePerspective(cameraTransformType); - if(pair.getRight() != null) - { - Matrix4f matrix = new Matrix4f(pair.getRight()); - if(leftHandHackery) - { - matrix.mul(flipX, matrix); - matrix.mul(matrix, flipX); - } - multiplyCurrentGlMatrix(matrix); - } - return pair.getLeft(); - } - else + if (pair.getRight() != null) { - //if(leftHandHackery) GlStateManager.scale(-1, 1, 1); - ItemCameraTransforms.applyTransformSide(model.getItemCameraTransforms().getTransform(cameraTransformType), leftHandHackery); - //if(leftHandHackery) GlStateManager.scale(-1, 1, 1); + Matrix4f matrix = new Matrix4f(pair.getRight()); + if (leftHandHackery) + { + matrix.mul(flipX, matrix); + matrix.mul(matrix, flipX); + } + multiplyCurrentGlMatrix(matrix); } - return model; + return pair.getLeft(); } private static final FloatBuffer matrixBuf = BufferUtils.createFloatBuffer(16); @@ -608,13 +596,13 @@ public class ForgeHooksClient @SuppressWarnings("deprecation") public static Optional applyTransform(net.minecraft.client.renderer.block.model.ItemTransformVec3f transform, Optional part) { - if(part.isPresent()) return Optional.absent(); + if(part.isPresent()) return Optional.empty(); return Optional.of(TRSRTransformation.blockCenterToCorner(new TRSRTransformation(transform))); } public static Optional applyTransform(Matrix4f matrix, Optional part) { - if(part.isPresent()) return Optional.absent(); + if(part.isPresent()) return Optional.empty(); return Optional.of(new TRSRTransformation(matrix)); } @@ -718,4 +706,12 @@ public class ForgeHooksClient return event; } + @SuppressWarnings("deprecation") + public static Pair handlePerspective(IBakedModel model, ItemCameraTransforms.TransformType type) + { + TRSRTransformation tr = new TRSRTransformation(model.getItemCameraTransforms().getTransform(type)); + Matrix4f mat = null; + if(!tr.equals(TRSRTransformation.identity())) mat = tr.getMatrix(); + return Pair.of(model, mat); + } } diff --git a/src/main/java/net/minecraftforge/client/model/Attributes.java b/src/main/java/net/minecraftforge/client/model/Attributes.java index 38716ec5c..04d4cb33a 100644 --- a/src/main/java/net/minecraftforge/client/model/Attributes.java +++ b/src/main/java/net/minecraftforge/client/model/Attributes.java @@ -19,8 +19,6 @@ package net.minecraftforge.client.model; -import java.util.List; - import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.client.renderer.vertex.VertexFormatElement; import net.minecraft.client.renderer.vertex.VertexFormatElement.EnumType; diff --git a/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java b/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java index 2a932b3dd..e6641ab57 100644 --- a/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java +++ b/src/main/java/net/minecraftforge/client/model/BlockStateLoader.java @@ -36,6 +36,7 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.model.IModelState; import net.minecraftforge.common.model.TRSRTransformation; +import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.io.Charsets; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.tuple.Pair; @@ -47,6 +48,8 @@ import com.google.common.collect.Maps; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import javax.annotation.Nullable; + public class BlockStateLoader { private static final Gson GSON = (new GsonBuilder()) @@ -62,11 +65,12 @@ public class BlockStateLoader * Note: This method is NOT thread safe * * @param reader json read + * @param location blockstate location * @param vanillaGSON ModelBlockDefinition's GSON reader. * * @return Model definition including variants for all known combinations. */ - public static ModelBlockDefinition load(Reader reader, final Gson vanillaGSON) + public static ModelBlockDefinition load(Reader reader, ResourceLocation location, final Gson vanillaGSON) { try { @@ -86,15 +90,15 @@ public class BlockStateLoader List mcVars = Lists.newArrayList(); for (ForgeBlockStateV1.Variant var : entry.getValue()) { - boolean uvLock = var.getUvLock().or(false); - boolean smooth = var.getSmooth().or(true); - boolean gui3d = var.getGui3d().or(true); - int weight = var.getWeight().or(1); + boolean uvLock = var.getUvLock().orElse(false); + boolean smooth = var.getSmooth().orElse(true); + boolean gui3d = var.getGui3d().orElse(true); + int weight = var.getWeight().orElse(1); - if (var.getModel() != null && var.getSubmodels().size() == 0 && var.getTextures().size() == 0 && var.getCustomData().size() == 0 && var.getState().orNull() instanceof ModelRotation) + if (var.getModel() != null && var.getSubmodels().size() == 0 && var.getTextures().size() == 0 && var.getCustomData().size() == 0 && var.getState().orElse(null) instanceof ModelRotation) mcVars.add(new Variant(var.getModel(), (ModelRotation)var.getState().get(), uvLock, weight)); else - mcVars.add(new ForgeVariant(var.getModel(), var.getState().or(TRSRTransformation.identity()), uvLock, smooth, gui3d, weight, var.getTextures(), var.getOnlyPartsVariant(), var.getCustomData())); + mcVars.add(new ForgeVariant(location, var.getModel(), var.getState().orElse(TRSRTransformation.identity()), uvLock, smooth, gui3d, weight, var.getTextures(), var.getOnlyPartsVariant(), var.getCustomData())); } variants.put(entry.getKey(), new VariantList(mcVars)); } @@ -125,10 +129,11 @@ public class BlockStateLoader private final boolean smooth; private final boolean gui3d; private final ImmutableMap textures; + @Nullable private final ResourceLocation model; private final ImmutableMap customData; - public SubModel(IModelState state, boolean uvLock, boolean smooth, boolean gui3d, ImmutableMap textures, ResourceLocation model, ImmutableMap customData) + public SubModel(IModelState state, boolean uvLock, boolean smooth, boolean gui3d, ImmutableMap textures, @Nullable ResourceLocation model, ImmutableMap customData) { this.state = state; this.uvLock = uvLock; @@ -142,12 +147,14 @@ public class BlockStateLoader public IModelState getState() { return state; } public boolean isUVLock() { return uvLock; } public ImmutableMap getTextures() { return textures; } + @Nullable public ResourceLocation getModelLocation() { return model; } public ImmutableMap getCustomData() { return customData; } } private static class ForgeVariant extends Variant implements ISmartVariant { + private final ResourceLocation blockstateLocation; private final ImmutableMap textures; private final ImmutableMap parts; private final ImmutableMap customData; @@ -155,9 +162,10 @@ public class BlockStateLoader private final boolean gui3d; private final IModelState state; - public ForgeVariant(ResourceLocation model, IModelState state, boolean uvLock, boolean smooth, boolean gui3d, int weight, ImmutableMap textures, ImmutableMap parts, ImmutableMap customData) + public ForgeVariant(ResourceLocation blockstateLocation, @Nullable ResourceLocation model, IModelState state, boolean uvLock, boolean smooth, boolean gui3d, int weight, ImmutableMap textures, ImmutableMap parts, ImmutableMap customData) { super(model == null ? new ResourceLocation("builtin/missing") : model, state instanceof ModelRotation ? (ModelRotation)state : ModelRotation.X0_Y0, uvLock, weight); + this.blockstateLocation = blockstateLocation; this.textures = textures; this.parts = parts; this.customData = customData; @@ -168,11 +176,11 @@ public class BlockStateLoader private IModel runModelHooks(IModel base, boolean smooth, boolean gui3d, boolean uvlock, ImmutableMap textureMap, ImmutableMap customData) { - base = ModelProcessingHelper.customData(base, customData); - base = ModelProcessingHelper.retexture(base, textureMap); - base = ModelProcessingHelper.smoothLighting(base, smooth); - base = ModelProcessingHelper.gui3d(base, gui3d); - base = ModelProcessingHelper.uvlock(base, uvlock); + base = base.process(customData); + base = base.retexture(textureMap); + base = base.smoothLighting(smooth); + base = base.gui3d(gui3d); + base = base.uvlock(uvlock); return base; } @@ -203,9 +211,19 @@ public class BlockStateLoader { SubModel part = entry.getValue(); - IModel model = ModelLoaderRegistry.getModelOrLogError(part.getModelLocation(), "Unable to load block sub-model: \'" + part.getModelLocation()); + final ResourceLocation modelLocation = part.getModelLocation(); + final IModel model; + if (modelLocation == null) + { + FMLLog.getLogger().error("model not found for variant " + entry.getKey() + "for blockstate " + blockstateLocation); + model = ModelLoaderRegistry.getMissingModel(blockstateLocation, new Throwable()); + } + else + { + model = ModelLoaderRegistry.getModelOrLogError(modelLocation, "Unable to load block sub-model: \'" + modelLocation); + } - models.put(entry.getKey(), Pair.of(runModelHooks(model, part.smooth, part.gui3d, part.uvLock, part.getTextures(), part.getCustomData()), part.getState())); + models.put(entry.getKey(), Pair.of(runModelHooks(model, part.smooth, part.gui3d, part.uvLock, part.getTextures(), part.getCustomData()), part.getState())); } return new MultiModel(getModelLocation(), hasBase ? base : null, baseTr, models.build()); diff --git a/src/main/java/net/minecraftforge/client/model/FancyMissingModel.java b/src/main/java/net/minecraftforge/client/model/FancyMissingModel.java index 820f3c9d1..89b3000ac 100644 --- a/src/main/java/net/minecraftforge/client/model/FancyMissingModel.java +++ b/src/main/java/net/minecraftforge/client/model/FancyMissingModel.java @@ -1,7 +1,7 @@ package net.minecraftforge.client.model; -import com.google.common.base.Function; -import com.google.common.base.Optional; +import java.util.function.Function; +import java.util.Optional; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -70,12 +70,6 @@ final class FancyMissingModel implements IModel this.message = message; } - @Override - public Collection getDependencies() - { - return ImmutableList.of(); - } - @Override public Collection getTextures() { @@ -91,13 +85,7 @@ final class FancyMissingModel implements IModel return new BakedModel(bigMissing, smallMissing, fontCache.getUnchecked(format), message, bakedTextureGetter.apply(font2)); } - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity(); - } - - private static final class BakedModel implements IPerspectiveAwareModel + private static final class BakedModel implements IBakedModel { private final SimpleModelFontRenderer fontRenderer; private final String message; @@ -168,9 +156,6 @@ final class FancyMissingModel implements IModel @Override public TextureAtlasSprite getParticleTexture() { return fontTexture; } - @Override - public ItemCameraTransforms getItemCameraTransforms() { return ItemCameraTransforms.DEFAULT; } - @Override public ItemOverrideList getOverrides() { return ItemOverrideList.NONE; } diff --git a/src/main/java/net/minecraftforge/client/model/ForgeBlockStateV1.java b/src/main/java/net/minecraftforge/client/model/ForgeBlockStateV1.java index 7a187d65d..22c6ac574 100644 --- a/src/main/java/net/minecraftforge/client/model/ForgeBlockStateV1.java +++ b/src/main/java/net/minecraftforge/client/model/ForgeBlockStateV1.java @@ -46,7 +46,7 @@ import net.minecraftforge.common.model.IModelState; import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.fml.common.FMLLog; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; @@ -93,7 +93,7 @@ public class ForgeBlockStateV1 extends Marker for (JsonElement a : e.getValue().getAsJsonArray()) { Variant.Deserializer.INSTANCE.simpleSubmodelKey = e.getKey(); - specified.put(e.getKey(), (ForgeBlockStateV1.Variant)context.deserialize(a, ForgeBlockStateV1.Variant.class)); + specified.put(e.getKey(), context.deserialize(a, Variant.class)); } } else @@ -107,14 +107,14 @@ public class ForgeBlockStateV1 extends Marker for (Entry se : e.getValue().getAsJsonObject().entrySet()) { Variant.Deserializer.INSTANCE.simpleSubmodelKey = e.getKey() + "=" + se.getKey(); - subs.put(se.getKey(), (ForgeBlockStateV1.Variant)context.deserialize(se.getValue(), ForgeBlockStateV1.Variant.class)); + subs.put(se.getKey(), context.deserialize(se.getValue(), Variant.class)); } } else { // fully-defined variant Variant.Deserializer.INSTANCE.simpleSubmodelKey = e.getKey(); - specified.put(e.getKey(), (ForgeBlockStateV1.Variant)context.deserialize(e.getValue(), ForgeBlockStateV1.Variant.class)); + specified.put(e.getKey(), context.deserialize(e.getValue(), Variant.class)); } } } @@ -243,7 +243,7 @@ public class ForgeBlockStateV1 extends Marker { List sorted = Lists.newArrayList(base.keySet()); Collections.sort(sorted); // Sort to get consistent results. - return getPermutations(sorted, base, 0, "", HashMultimap.create(), null); + return getPermutations(sorted, base, 0, "", HashMultimap.create(), null); } private List getSubmodelPermutations(ForgeBlockStateV1.Variant baseVar, List sorted, Map> map, int depth, Map parts, List ret) @@ -284,7 +284,7 @@ public class ForgeBlockStateV1 extends Marker { List sorted = Lists.newArrayList(variants.keySet()); Collections.sort(sorted); // Sort to get consistent results. - return getSubmodelPermutations(baseVar, sorted, variants, 0, new HashMap(), new ArrayList()); + return getSubmodelPermutations(baseVar, sorted, variants, 0, new HashMap<>(), new ArrayList<>()); } } @@ -292,13 +292,14 @@ public class ForgeBlockStateV1 extends Marker { public static final Object SET_VALUE = new Object(); + @Nullable private ResourceLocation model = null; private boolean modelSet = false; - private Optional state = Optional.absent(); - private Optional uvLock = Optional.absent(); - private Optional smooth = Optional.absent(); - private Optional gui3d = Optional.absent(); - private Optional weight = Optional.absent(); + private Optional state = Optional.empty(); + private Optional uvLock = Optional.empty(); + private Optional smooth = Optional.empty(); + private Optional gui3d = Optional.empty(); + private Optional weight = Optional.empty(); private Map textures = Maps.newHashMap(); private Map> submodels = Maps.newHashMap(); private Map simpleSubmodels = Maps.newHashMap(); // Makeshift Set to allow us to "remove" (replace value with null) singleParts when needed. @@ -393,7 +394,7 @@ public class ForgeBlockStateV1 extends Marker protected SubModel asGenericSubModel() { - return new SubModel(state.or(TRSRTransformation.identity()), uvLock.or(false), smooth.or(true), gui3d.or(true), getTextures(), model, getCustomData()); + return new SubModel(state.orElse(TRSRTransformation.identity()), uvLock.orElse(false), smooth.orElse(true), gui3d.orElse(true), getTextures(), model, getCustomData()); } /** @@ -503,7 +504,7 @@ public class ForgeBlockStateV1 extends Marker { // Load rotation values. int x = JsonUtils.getInt(json, "x", 0); int y = JsonUtils.getInt(json, "y", 0); - ret.state = Optional.of(new TRSRTransformation(ModelRotation.getModelRotation(x, y))); + ret.state = Optional.of(new TRSRTransformation(ModelRotation.getModelRotation(x, y))); if (!ret.state.isPresent()) throw new JsonParseException("Invalid BlockModelRotation x: " + x + " y: " + y); } @@ -517,7 +518,7 @@ public class ForgeBlockStateV1 extends Marker // TODO: vanilla now includes from parent, deprecate? if (transform.equals("identity")) { - ret.state = Optional.of(TRSRTransformation.identity()); + ret.state = Optional.of(TRSRTransformation.identity()); } // block/block else if (transform.equals("forge:default-block")) @@ -531,7 +532,7 @@ public class ForgeBlockStateV1 extends Marker builder.put(TransformType.THIRD_PERSON_LEFT_HAND, leftify(thirdperson)); builder.put(TransformType.FIRST_PERSON_RIGHT_HAND, get(0, 0, 0, 0, 45, 0, 0.4f)); builder.put(TransformType.FIRST_PERSON_LEFT_HAND, get(0, 0, 0, 0, 225, 0, 0.4f)); - ret.state = Optional.of(new SimpleModelState(builder.build())); + ret.state = Optional.of(new SimpleModelState(builder.build())); } // item/generated else if (transform.equals("forge:default-item")) @@ -546,12 +547,12 @@ public class ForgeBlockStateV1 extends Marker builder.put(TransformType.FIRST_PERSON_RIGHT_HAND, firstperson); builder.put(TransformType.FIRST_PERSON_LEFT_HAND, leftify(firstperson)); builder.put(TransformType.FIXED, get(0, 0, 0, 0, 180, 0, 1)); - ret.state = Optional.of(new SimpleModelState(builder.build())); + ret.state = Optional.of(new SimpleModelState(builder.build())); } // item/handheld else if (transform.equals("forge:default-tool")) { - ret.state = Optional.of(new SimpleModelState(ImmutableMap.of( + ret.state = Optional.of(new SimpleModelState(ImmutableMap.of( TransformType.THIRD_PERSON_RIGHT_HAND, get(0, 4, 0.5f, 0, -90, 55, 0.85f), TransformType.THIRD_PERSON_LEFT_HAND, get(0, 4, 0.5f, 0, 90, -55, 0.85f), TransformType.FIRST_PERSON_RIGHT_HAND, get(1.13f, 3.2f, 1.13f, 0, -90, 25, 0.68f), @@ -567,7 +568,7 @@ public class ForgeBlockStateV1 extends Marker try { TRSRTransformation base = context.deserialize(json.get("transform"), TRSRTransformation.class); - ret.state = Optional.of(TRSRTransformation.blockCenterToCorner(base)); + ret.state = Optional.of(TRSRTransformation.blockCenterToCorner(base)); } catch (JsonParseException e) { @@ -719,7 +720,7 @@ public class ForgeBlockStateV1 extends Marker { // Multiple variants of the submodel. submodelVariants = Lists.newArrayList(); for (JsonElement e : varEl.getAsJsonArray()) - submodelVariants.add((ForgeBlockStateV1.Variant)context.deserialize(e, ForgeBlockStateV1.Variant.class)); + submodelVariants.add(context.deserialize(e, Variant.class)); } else if (varEl.isJsonNull()) { @@ -727,7 +728,7 @@ public class ForgeBlockStateV1 extends Marker } else { - submodelVariants = Collections.singletonList((ForgeBlockStateV1.Variant)context.deserialize(varEl, ForgeBlockStateV1.Variant.class)); + submodelVariants = Collections.singletonList(context.deserialize(varEl, Variant.class)); } if (submodelVariants != null) // Throw an error if there are submodels inside a submodel. @@ -758,6 +759,7 @@ public class ForgeBlockStateV1 extends Marker } } + @Nullable public ResourceLocation getModel() { return model; } public boolean isModelSet() { return modelSet; } public Optional getState() { return state; } diff --git a/src/main/java/net/minecraftforge/client/model/IModel.java b/src/main/java/net/minecraftforge/client/model/IModel.java index 4017babe2..4d17e09f4 100644 --- a/src/main/java/net/minecraftforge/client/model/IModel.java +++ b/src/main/java/net/minecraftforge/client/model/IModel.java @@ -21,13 +21,18 @@ package net.minecraftforge.client.model; import java.util.Collection; +import java.util.Optional; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.model.IModelState; -import com.google.common.base.Function; +import java.util.function.Function; +import net.minecraftforge.common.model.TRSRTransformation; +import net.minecraftforge.common.model.animation.IClip; /* * Interface for models that can be baked @@ -40,13 +45,17 @@ public interface IModel * Assume that returned collection is immutable. * See ModelLoaderRegistry.getModel for dependency loading. */ - Collection getDependencies(); + default Collection getDependencies() { + return ImmutableList.of(); + } /* * Returns all texture locations that this model depends on. * Assume that returned collection is immutable. */ - Collection getTextures(); + default Collection getTextures() { + return ImmutableList.of(); + } /* * All model texture coordinates should be resolved at this method. @@ -63,5 +72,53 @@ public interface IModel * Default state this model will be baked with. * See IModelState. */ - IModelState getDefaultState(); + default IModelState getDefaultState() { + return TRSRTransformation.identity(); + } + + default Optional getClip(String name) { + return Optional.empty(); + } + + /** + * Allows the model to process custom data from the variant definition. + * If unknown data is encountered it should be skipped. + * @return a new model, with data applied. + */ + default IModel process(ImmutableMap customData) { + return this; + } + + default IModel smoothLighting(boolean value) { + return this; + } + + default IModel gui3d(boolean value) { + return this; + } + + default IModel uvlock(boolean value) { + return this; + } + + /** + * Applies new textures to the model. + * The returned model should be independent of the accessed one, + * as a model should be able to be retextured multiple times producing + * a separate model each time. + * + * The input map MAY map to an empty string "" which should be used + * to indicate the texture was removed. Handling of that is up to + * the model itself. Such as using default, missing texture, or + * removing vertices. + * + * The input should be considered a DIFF of the old textures, not a + * replacement as it may not contain everything. + * + * @param textures New + * @return Model with textures applied. + */ + default IModel retexture(ImmutableMap textures) { + return this; + } } diff --git a/src/main/java/net/minecraftforge/client/model/IModelCustomData.java b/src/main/java/net/minecraftforge/client/model/IModelCustomData.java deleted file mode 100644 index 4995456b1..000000000 --- a/src/main/java/net/minecraftforge/client/model/IModelCustomData.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.client.model; - -import com.google.common.collect.ImmutableMap; - -public interface IModelCustomData extends IModel -{ - /** - * Allows the model to process custom data from the variant definition. - * If unknown data is encountered it should be skipped. - * @return a new model, with data applied. - */ - IModel process(ImmutableMap customData); -} diff --git a/src/main/java/net/minecraftforge/client/model/IModelSimpleProperties.java b/src/main/java/net/minecraftforge/client/model/IModelSimpleProperties.java deleted file mode 100644 index ad6615dfc..000000000 --- a/src/main/java/net/minecraftforge/client/model/IModelSimpleProperties.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.client.model; - -/** - * Implement this if the model can process "smooth_lighting" or "gui3d" attributes from the json. - */ -public interface IModelSimpleProperties extends IModel -{ - IModel smoothLighting(boolean value); - IModel gui3d(boolean value); -} diff --git a/src/main/java/net/minecraftforge/client/model/IModelUVLock.java b/src/main/java/net/minecraftforge/client/model/IModelUVLock.java deleted file mode 100644 index f5d10b868..000000000 --- a/src/main/java/net/minecraftforge/client/model/IModelUVLock.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.client.model; - -public interface IModelUVLock extends IModel -{ - public IModel uvlock(boolean value); -} diff --git a/src/main/java/net/minecraftforge/client/model/IPerspectiveAwareModel.java b/src/main/java/net/minecraftforge/client/model/IPerspectiveAwareModel.java deleted file mode 100644 index 6112d8a11..000000000 --- a/src/main/java/net/minecraftforge/client/model/IPerspectiveAwareModel.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.client.model; - -import java.util.List; - -import javax.vecmath.Matrix4f; - -import net.minecraft.block.state.IBlockState; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.block.model.ItemOverrideList; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.util.EnumFacing; -import net.minecraftforge.common.model.IModelState; -import net.minecraftforge.common.model.TRSRTransformation; - -import org.apache.commons.lang3.tuple.Pair; - -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableMap; - -/* - * Model that changes based on the rendering perspective - * (first-person, GUI, e.t.c - see TransformType) - */ -public interface IPerspectiveAwareModel extends IBakedModel -{ - /* - * Returns the pair of the model for the given perspective, and the matrix - * that should be applied to the GL state before rendering it (matrix may be null). - */ - Pair handlePerspective(TransformType cameraTransformType); - - public static class MapWrapper implements IPerspectiveAwareModel - { - private final IBakedModel parent; - private final ImmutableMap transforms; - - public MapWrapper(IBakedModel parent, ImmutableMap transforms) - { - this.parent = parent; - this.transforms = transforms; - } - - public MapWrapper(IBakedModel parent, IModelState state) - { - this(parent, getTransforms(state)); - } - - public static ImmutableMap getTransforms(IModelState state) - { - ImmutableMap.Builder builder = ImmutableMap.builder(); - for(TransformType type : TransformType.values()) - { - Optional tr = state.apply(Optional.of(type)); - if(tr.isPresent()) - { - builder.put(type, tr.get()); - } - } - return builder.build(); - } - - @SuppressWarnings("deprecation") - public static ImmutableMap getTransforms(ItemCameraTransforms transforms) - { - ImmutableMap.Builder builder = ImmutableMap.builder(); - for(TransformType type : TransformType.values()) - { - builder.put(type, TRSRTransformation.blockCenterToCorner(new TRSRTransformation(transforms.getTransform(type)))); - } - return builder.build(); - } - - public static Pair handlePerspective(IBakedModel model, ImmutableMap transforms, TransformType cameraTransformType) - { - TRSRTransformation tr = transforms.get(cameraTransformType); - Matrix4f mat = null; - if(tr != null && !tr.equals(TRSRTransformation.identity())) mat = TRSRTransformation.blockCornerToCenter(tr).getMatrix(); - return Pair.of(model, mat); - } - - public static Pair handlePerspective(IBakedModel model, IModelState state, TransformType cameraTransformType) - { - TRSRTransformation tr = state.apply(Optional.of(cameraTransformType)).or(TRSRTransformation.identity()); - if(tr != TRSRTransformation.identity()) - { - return Pair.of(model, TRSRTransformation.blockCornerToCenter(tr).getMatrix()); - } - return Pair.of(model, null); - } - - @Override public boolean isAmbientOcclusion() { return parent.isAmbientOcclusion(); } - @Override public boolean isGui3d() { return parent.isGui3d(); } - @Override public boolean isBuiltInRenderer() { return parent.isBuiltInRenderer(); } - @Override public TextureAtlasSprite getParticleTexture() { return parent.getParticleTexture(); } - @SuppressWarnings("deprecation") - @Override public ItemCameraTransforms getItemCameraTransforms() { return parent.getItemCameraTransforms(); } - @Override public List getQuads(IBlockState state, EnumFacing side, long rand) { return parent.getQuads(state, side, rand); } - @Override public ItemOverrideList getOverrides() { return parent.getOverrides(); } - - @Override - public Pair handlePerspective(TransformType cameraTransformType) - { - return handlePerspective(this, transforms, cameraTransformType); - } - } -} diff --git a/src/main/java/net/minecraftforge/client/model/IRetexturableModel.java b/src/main/java/net/minecraftforge/client/model/IRetexturableModel.java deleted file mode 100644 index 022ee14d3..000000000 --- a/src/main/java/net/minecraftforge/client/model/IRetexturableModel.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.client.model; - -import com.google.common.collect.ImmutableMap; - -public interface IRetexturableModel extends IModel -{ - /** - * Applies new textures to the model. - * The returned model should be independent of the accessed one, - * as a model should be able to be retextured multiple times producing - * a separate model each time. - * - * The input map MAY map to an empty string "" which should be used - * to indicate the texture was removed. Handling of that is up to - * the model itself. Such as using default, missing texture, or - * removing vertices. - * - * The input should be considered a DIFF of the old textures, not a - * replacement as it may not contain everything. - * - * @param textures New - * @return Model with textures applied. - */ - IModel retexture(ImmutableMap textures); -} diff --git a/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java b/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java index 36f94a580..66fe16ab8 100644 --- a/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java +++ b/src/main/java/net/minecraftforge/client/model/ItemLayerModel.java @@ -34,7 +34,6 @@ import org.apache.commons.lang3.tuple.Pair; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.block.model.ItemOverrideList; import net.minecraft.client.renderer.block.model.ModelBlock; @@ -44,18 +43,17 @@ import net.minecraft.client.resources.IResourceManager; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; -import net.minecraftforge.common.model.IModelPart; import net.minecraftforge.common.model.IModelState; import net.minecraftforge.common.model.TRSRTransformation; -import com.google.common.base.Function; -import com.google.common.base.Optional; +import java.util.function.Function; +import java.util.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -public final class ItemLayerModel implements IRetexturableModel +public final class ItemLayerModel implements IModel { - public static final ItemLayerModel INSTANCE = new ItemLayerModel(ImmutableList.of()); + public static final ItemLayerModel INSTANCE = new ItemLayerModel(ImmutableList.of()); private final ImmutableList textures; private final ItemOverrideList overrides; @@ -86,25 +84,11 @@ public final class ItemLayerModel implements IRetexturableModel return builder.build(); } - @Override - public Collection getDependencies() - { - return ImmutableList.of(); - } - - @Override public Collection getTextures() { return textures; } - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity(); - } - - @Override public ItemLayerModel retexture(ImmutableMap textures) { ImmutableList.Builder builder = ImmutableList.builder(); @@ -126,18 +110,18 @@ public final class ItemLayerModel implements IRetexturableModel public IBakedModel bake(IModelState state, final VertexFormat format, Function bakedTextureGetter) { ImmutableList.Builder builder = ImmutableList.builder(); - Optional transform = state.apply(Optional.absent()); + Optional transform = state.apply(Optional.empty()); for(int i = 0; i < textures.size(); i++) { TextureAtlasSprite sprite = bakedTextureGetter.apply(textures.get(i)); builder.addAll(getQuadsForSprite(i, sprite, format, transform)); } TextureAtlasSprite particle = bakedTextureGetter.apply(textures.isEmpty() ? new ResourceLocation("missingno") : textures.get(0)); - ImmutableMap map = IPerspectiveAwareModel.MapWrapper.getTransforms(state); + ImmutableMap map = PerspectiveMapWrapper.getTransforms(state); return new BakedItemModel(builder.build(), particle, map, overrides, null); } - private static final class BakedItemModel implements IPerspectiveAwareModel + private static final class BakedItemModel implements IBakedModel { private final ImmutableList quads; private final TextureAtlasSprite particle; @@ -172,14 +156,12 @@ public final class ItemLayerModel implements IRetexturableModel } } - @Override public boolean isAmbientOcclusion() { return true; } - @Override public boolean isGui3d() { return false; } - @Override public boolean isBuiltInRenderer() { return false; } - @Override public TextureAtlasSprite getParticleTexture() { return particle; } - @Override public ItemCameraTransforms getItemCameraTransforms() { return ItemCameraTransforms.DEFAULT; } - @Override public ItemOverrideList getOverrides() { return overrides; } - @Override - public List getQuads(IBlockState state, EnumFacing side, long rand) + public boolean isAmbientOcclusion() { return true; } + public boolean isGui3d() { return false; } + public boolean isBuiltInRenderer() { return false; } + public TextureAtlasSprite getParticleTexture() { return particle; } + public ItemOverrideList getOverrides() { return overrides; } + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { if(side == null) return quads; return ImmutableList.of(); @@ -188,7 +170,7 @@ public final class ItemLayerModel implements IRetexturableModel @Override public Pair handlePerspective(TransformType type) { - Pair pair = IPerspectiveAwareModel.MapWrapper.handlePerspective(this, transforms, type); + Pair pair = PerspectiveMapWrapper.handlePerspective(this, transforms, type); if(type == TransformType.GUI && !isCulled && pair.getRight() == null) { return Pair.of(otherModel, null); diff --git a/src/main/java/net/minecraftforge/client/model/MapModelState.java b/src/main/java/net/minecraftforge/client/model/MapModelState.java index 26ad14f07..f48bb7f91 100644 --- a/src/main/java/net/minecraftforge/client/model/MapModelState.java +++ b/src/main/java/net/minecraftforge/client/model/MapModelState.java @@ -26,7 +26,7 @@ import net.minecraftforge.common.model.IModelState; import net.minecraftforge.common.model.TRSRTransformation; import com.google.common.base.Objects; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.ImmutableMap; /* @@ -58,7 +58,7 @@ public class MapModelState implements IModelState public Optional apply(Optional part) { if(!part.isPresent() || !map.containsKey(part.get())) return def.apply(part); - return map.get(part.get()).apply(Optional.absent()); + return map.get(part.get()).apply(Optional.empty()); } public IModelState getState(Object obj) diff --git a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java index ce1eed25f..466cf5d48 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java +++ b/src/main/java/net/minecraftforge/client/model/ModelDynBucket.java @@ -23,7 +23,6 @@ import java.util.Collection; import java.util.List; import java.util.Map; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.vecmath.Matrix4f; import javax.vecmath.Quat4f; @@ -56,14 +55,14 @@ import net.minecraftforge.fluids.FluidUtil; import org.apache.commons.lang3.tuple.Pair; -import com.google.common.base.Function; -import com.google.common.base.Optional; +import java.util.function.Function; +import java.util.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; -public final class ModelDynBucket implements IModel, IModelCustomData, IRetexturableModel +public final class ModelDynBucket implements IModel { public static final ModelResourceLocation LOCATION = new ModelResourceLocation(new ResourceLocation(ForgeVersion.MOD_ID, "dynbucket"), "inventory"); @@ -99,12 +98,6 @@ public final class ModelDynBucket implements IModel, IModelCustomData, IRetextur this.flipGas = flipGas; } - @Override - public Collection getDependencies() - { - return ImmutableList.of(); - } - @Override public Collection getTextures() { @@ -124,7 +117,7 @@ public final class ModelDynBucket implements IModel, IModelCustomData, IRetextur Function bakedTextureGetter) { - ImmutableMap transformMap = IPerspectiveAwareModel.MapWrapper.getTransforms(state); + ImmutableMap transformMap = PerspectiveMapWrapper.getTransforms(state); // if the fluid is a gas wi manipulate the initial state to be rotated 180° to turn it upside down if (flipGas && fluid != null && fluid.isGaseous()) @@ -132,7 +125,7 @@ public final class ModelDynBucket implements IModel, IModelCustomData, IRetextur state = new ModelStateComposition(state, TRSRTransformation.blockCenterToCorner(new TRSRTransformation(null, new Quat4f(0, 0, 1, 0), null, null))); } - TRSRTransformation transform = state.apply(Optional.absent()).or(TRSRTransformation.identity()); + TRSRTransformation transform = state.apply(Optional.empty()).orElse(TRSRTransformation.identity()); TextureAtlasSprite fluidSprite = null; ImmutableList.Builder builder = ImmutableList.builder(); @@ -162,13 +155,7 @@ public final class ModelDynBucket implements IModel, IModelCustomData, IRetextur } - return new BakedDynBucket(this, builder.build(), fluidSprite, format, Maps.immutableEnumMap(transformMap), Maps.newHashMap()); - } - - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity(); + return new BakedDynBucket(this, builder.build(), fluidSprite, format, Maps.immutableEnumMap(transformMap), Maps.newHashMap()); } /** @@ -255,12 +242,11 @@ public final class ModelDynBucket implements IModel, IModelCustomData, IRetextur public static final BakedDynBucketOverrideHandler INSTANCE = new BakedDynBucketOverrideHandler(); private BakedDynBucketOverrideHandler() { - super(ImmutableList.of()); + super(ImmutableList.of()); } @Override - @Nonnull - public IBakedModel handleItemState(@Nonnull IBakedModel originalModel, @Nonnull ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) + public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) { FluidStack fluidStack = FluidUtil.getFluidContained(stack); @@ -280,14 +266,7 @@ public final class ModelDynBucket implements IModel, IModelCustomData, IRetextur { IModel parent = model.parent.process(ImmutableMap.of("fluid", name)); Function textureGetter; - textureGetter = new Function() - { - @Override - public TextureAtlasSprite apply(ResourceLocation location) - { - return Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(location.toString()); - } - }; + textureGetter = location -> Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(location.toString()); IBakedModel bakedModel = parent.bake(new SimpleModelState(model.transforms), model.format, textureGetter); model.cache.put(name, bakedModel); @@ -299,7 +278,7 @@ public final class ModelDynBucket implements IModel, IModelCustomData, IRetextur } // the dynamic bucket is based on the empty bucket - private static final class BakedDynBucket implements IPerspectiveAwareModel + private static final class BakedDynBucket implements IBakedModel { private final ModelDynBucket parent; @@ -331,20 +310,19 @@ public final class ModelDynBucket implements IModel, IModelCustomData, IRetextur @Override public Pair handlePerspective(TransformType cameraTransformType) { - return IPerspectiveAwareModel.MapWrapper.handlePerspective(this, transforms, cameraTransformType); + return PerspectiveMapWrapper.handlePerspective(this, transforms, cameraTransformType); } @Override - public List getQuads(IBlockState state, EnumFacing side, long rand) + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { if(side == null) return quads; return ImmutableList.of(); } - @Override public boolean isAmbientOcclusion() { return true; } - @Override public boolean isGui3d() { return false; } - @Override public boolean isBuiltInRenderer() { return false; } - @Override public TextureAtlasSprite getParticleTexture() { return particle; } - @Override public ItemCameraTransforms getItemCameraTransforms() { return ItemCameraTransforms.DEFAULT; } + public boolean isAmbientOcclusion() { return true; } + public boolean isGui3d() { return false; } + public boolean isBuiltInRenderer() { return false; } + public TextureAtlasSprite getParticleTexture() { return particle; } } } diff --git a/src/main/java/net/minecraftforge/client/model/ModelFluid.java b/src/main/java/net/minecraftforge/client/model/ModelFluid.java index c5018ffb3..e91f5378a 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelFluid.java +++ b/src/main/java/net/minecraftforge/client/model/ModelFluid.java @@ -20,17 +20,16 @@ package net.minecraftforge.client.model; import java.util.Collection; -import java.util.Collections; import java.util.EnumMap; import java.util.List; +import javax.annotation.Nullable; import javax.vecmath.Matrix4f; import javax.vecmath.Vector4f; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.block.model.ItemOverrideList; import net.minecraft.client.renderer.block.model.ModelRotation; @@ -42,7 +41,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; import net.minecraftforge.common.ForgeVersion; -import net.minecraftforge.common.model.IModelPart; import net.minecraftforge.common.model.IModelState; import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.common.property.IExtendedBlockState; @@ -53,8 +51,8 @@ import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.lang3.tuple.Pair; -import com.google.common.base.Function; -import com.google.common.base.Optional; +import java.util.function.Function; +import java.util.Optional; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -65,7 +63,7 @@ import com.google.common.collect.Maps; import com.google.gson.JsonElement; import com.google.gson.JsonParser; -public final class ModelFluid implements IModelCustomData +public final class ModelFluid implements IModel { public static final ModelFluid WATER = new ModelFluid(FluidRegistry.WATER); public static final ModelFluid LAVA = new ModelFluid(FluidRegistry.LAVA); @@ -76,13 +74,6 @@ public final class ModelFluid implements IModelCustomData this.fluid = fluid; } - @Override - public Collection getDependencies() - { - return Collections.emptySet(); - } - - @Override public Collection getTextures() { return ImmutableSet.of(fluid.getStill(), fluid.getFlowing()); @@ -91,8 +82,8 @@ public final class ModelFluid implements IModelCustomData @Override public IBakedModel bake(IModelState state, VertexFormat format, Function bakedTextureGetter) { - ImmutableMap map = IPerspectiveAwareModel.MapWrapper.getTransforms(state); - return new BakedFluid(state.apply(Optional.absent()), map, format, fluid.getColor(), bakedTextureGetter.apply(fluid.getStill()), bakedTextureGetter.apply(fluid.getFlowing()), fluid.isGaseous(), Optional.absent()); + ImmutableMap map = PerspectiveMapWrapper.getTransforms(state); + return new BakedFluid(state.apply(Optional.empty()), map, format, fluid.getColor(), bakedTextureGetter.apply(fluid.getStill()), bakedTextureGetter.apply(fluid.getFlowing()), fluid.isGaseous(), Optional.empty()); } @Override @@ -124,7 +115,7 @@ public final class ModelFluid implements IModelCustomData } } - private static final class BakedFluid implements IPerspectiveAwareModel + private static final class BakedFluid implements IBakedModel { private static final int x[] = { 0, 0, 1, 1 }; private static final int z[] = { 0, 1, 1, 0 }; @@ -202,7 +193,7 @@ public final class ModelFluid implements IModelCustomData faceQuads = Maps.newEnumMap(EnumFacing.class); for(EnumFacing side : EnumFacing.values()) { - faceQuads.put(side, ImmutableList.of()); + faceQuads.put(side, ImmutableList.of()); } if(statePresent) @@ -271,7 +262,7 @@ public final class ModelFluid implements IModelCustomData still.getInterpolatedU(z[i] * 16), still.getInterpolatedV(x[i] * 16)); } - faceQuads.put(side, ImmutableList.of(builder.build())); + faceQuads.put(side, ImmutableList.of(builder.build())); // sides @@ -315,7 +306,7 @@ public final class ModelFluid implements IModelCustomData still.getInterpolatedU(z[i] * 16), still.getInterpolatedV(x[i] * 16)); } - faceQuads.put(EnumFacing.SOUTH, ImmutableList.of(builder.build())); + faceQuads.put(EnumFacing.SOUTH, ImmutableList.of(builder.build())); } } @@ -382,13 +373,7 @@ public final class ModelFluid implements IModelCustomData } @Override - public ItemCameraTransforms getItemCameraTransforms() - { - return ItemCameraTransforms.DEFAULT; - } - - @Override - public List getQuads(IBlockState state, EnumFacing side, long rand) + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { BakedFluid model = this; if(state instanceof IExtendedBlockState) @@ -419,7 +404,7 @@ public final class ModelFluid implements IModelCustomData @Override public Pair handlePerspective(TransformType type) { - return IPerspectiveAwareModel.MapWrapper.handlePerspective(this, transforms, type); + return PerspectiveMapWrapper.handlePerspective(this, transforms, type); } } diff --git a/src/main/java/net/minecraftforge/client/model/ModelLoader.java b/src/main/java/net/minecraftforge/client/model/ModelLoader.java index 7e8adb181..2d7e2ef17 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelLoader.java +++ b/src/main/java/net/minecraftforge/client/model/ModelLoader.java @@ -54,7 +54,6 @@ import net.minecraft.client.renderer.block.model.ModelBlock; import net.minecraft.client.renderer.block.model.ModelBlockDefinition; import net.minecraft.client.renderer.block.model.ModelBlockDefinition.MissingVariantException; import net.minecraft.client.renderer.block.model.ModelResourceLocation; -import net.minecraft.client.renderer.block.model.ModelRotation; import net.minecraft.client.renderer.block.model.MultipartBakedModel; import net.minecraft.client.renderer.block.model.SimpleBakedModel; import net.minecraft.client.renderer.block.model.Variant; @@ -78,7 +77,6 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraft.util.registry.IRegistry; import net.minecraftforge.client.model.animation.AnimationItemOverrideList; -import net.minecraftforge.client.model.animation.IAnimatedModel; import net.minecraftforge.client.model.animation.ModelBlockAnimation; import net.minecraftforge.common.ForgeModContainer; import net.minecraftforge.common.ForgeVersion; @@ -104,10 +102,10 @@ import net.minecraftforge.registries.IRegistryDelegate; import org.apache.commons.lang3.tuple.Pair; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Joiner; import com.google.common.base.Objects; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.base.Predicate; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -124,6 +122,7 @@ import com.google.common.collect.Multimaps; import com.google.common.collect.Sets; import javax.annotation.Nonnull; +import javax.annotation.Nullable; public final class ModelLoader extends ModelBakery { @@ -166,13 +165,7 @@ public final class ModelLoader extends ModelBakery textures.remove(TextureMap.LOCATION_MISSING_TEXTURE); textures.addAll(LOCATIONS_BUILTIN_TEXTURES); - textureMap.loadSprites(resourceManager, map -> - { - for (ResourceLocation t : textures) - { - map.registerSprite(t); - } - }); + textureMap.loadSprites(resourceManager, map -> textures.forEach(map::registerSprite)); IBakedModel missingBaked = missingModel.bake(missingModel.getDefaultState(), DefaultVertexFormats.ITEM, DefaultTextureGetter.INSTANCE); Map bakedModels = Maps.newHashMap(); @@ -242,7 +235,7 @@ public final class ModelLoader extends ModelBakery } @Override - protected void registerVariant(ModelBlockDefinition definition, ModelResourceLocation location) + protected void registerVariant(@Nullable ModelBlockDefinition definition, ModelResourceLocation location) { IModel model; try @@ -282,7 +275,7 @@ public final class ModelLoader extends ModelBakery { storeException(location, new Exception("Could not load model definition for variant " + location, exception)); } - return new ModelBlockDefinition(new ArrayList()); + return new ModelBlockDefinition(new ArrayList<>()); } @Override @@ -296,22 +289,8 @@ public final class ModelLoader extends ModelBakery registerVariantNames(); - List items = Lists.newArrayList(Iterables.filter(Item.REGISTRY, new Predicate() - { - @Override - public boolean apply(Item item) - { - return item.getRegistryName() != null; - } - })); - Collections.sort(items, new Comparator() - { - @Override - public int compare(Item i1, Item i2) - { - return i1.getRegistryName().toString().compareTo(i2.getRegistryName().toString()); - } - }); + List items = Lists.newArrayList(Iterables.filter(Item.REGISTRY, item -> item.getRegistryName() != null)); + Collections.sort(items, (i1, i2) -> i1.getRegistryName().toString().compareTo(i2.getRegistryName().toString())); ProgressBar itemBar = ProgressManager.push("ModelLoader: items", items.size()); for(Item item : items) @@ -442,7 +421,7 @@ public final class ModelLoader extends ModelBakery return new ResourceLocation(model.getResourceDomain(), model.getResourcePath() + ".json"); } - private final class VanillaModelWrapper implements IRetexturableModel, IModelSimpleProperties, IModelUVLock, IAnimatedModel + private final class VanillaModelWrapper implements IModel { private final ResourceLocation location; private final ModelBlock model; @@ -549,8 +528,8 @@ public final class ModelLoader extends ModelBakery ItemCameraTransforms transforms = model.getAllTransforms(); Map tMap = Maps.newHashMap(); - tMap.putAll(IPerspectiveAwareModel.MapWrapper.getTransforms(transforms)); - tMap.putAll(IPerspectiveAwareModel.MapWrapper.getTransforms(state)); + tMap.putAll(PerspectiveMapWrapper.getTransforms(transforms)); + tMap.putAll(PerspectiveMapWrapper.getTransforms(state)); IModelState perState = new SimpleModelState(ImmutableMap.copyOf(tMap)); if(hasItemModel(model)) @@ -563,7 +542,7 @@ public final class ModelLoader extends ModelBakery private IBakedModel bakeNormal(ModelBlock model, IModelState perState, final IModelState modelState, List newTransforms, final VertexFormat format, final Function bakedTextureGetter, boolean uvLocked) { - final TRSRTransformation baseState = modelState.apply(Optional.absent()).or(TRSRTransformation.identity()); + final TRSRTransformation baseState = modelState.apply(Optional.empty()).orElse(TRSRTransformation.identity()); TextureAtlasSprite particle = bakedTextureGetter.apply(new ResourceLocation(model.resolveTextureName("particle"))); SimpleBakedModel.Builder builder = (new SimpleBakedModel.Builder(model, model.createOverrides())).setTexture(particle); for(int i = 0; i < model.getElements().size(); i++) @@ -596,12 +575,12 @@ public final class ModelLoader extends ModelBakery } } - return new IPerspectiveAwareModel.MapWrapper(builder.makeBakedModel(), perState) + return new PerspectiveMapWrapper(builder.makeBakedModel(), perState) { private final ItemOverrideList overrides = new AnimationItemOverrideList(VanillaModelWrapper.this, modelState, format, bakedTextureGetter, super.getOverrides()); @Override - public List getQuads(IBlockState state, EnumFacing side, long rand) + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { if(state instanceof IExtendedBlockState) { @@ -693,15 +672,9 @@ public final class ModelLoader extends ModelBakery { if(animation.getClips().containsKey(name)) { - return Optional.fromNullable(animation.getClips().get(name)); + return Optional.ofNullable(animation.getClips().get(name)); } - return Optional.absent(); - } - - @Override - public IModelState getDefaultState() - { - return ModelRotation.X0_Y0; + return Optional.empty(); } @Override @@ -744,9 +717,9 @@ public final class ModelLoader extends ModelBakery private static final class WeightedRandomModel implements IModel { private final List variants; - private final List locations = new ArrayList(); + private final List locations = new ArrayList<>(); private final Set textures = Sets.newHashSet(); - private final List models = new ArrayList(); + private final List models = new ArrayList<>(); private final IModelState defaultState; public WeightedRandomModel(ResourceLocation parent, VariantList variants) throws Exception @@ -791,7 +764,7 @@ public final class ModelLoader extends ModelBakery // FIXME: log this? IModel missing = ModelLoaderRegistry.getMissingModel(); models.add(missing); - builder.add(Pair.of(missing, TRSRTransformation.identity())); + builder.add(Pair.of(missing, TRSRTransformation.identity())); } defaultState = new MultiModelState(builder.build()); @@ -894,6 +867,7 @@ public final class ModelLoader extends ModelBakery { INSTANCE; + @Nullable private ModelLoader loader; private LoadingCache modelCache = CacheBuilder.newBuilder().maximumSize(50).expireAfterWrite(100, TimeUnit.MILLISECONDS).build(new CacheLoader() { @Override @@ -908,6 +882,7 @@ public final class ModelLoader extends ModelBakery this.loader = loader; } + @Nullable ModelLoader getLoader() { return loader; @@ -1292,18 +1267,6 @@ public final class ModelLoader extends ModelBakery } // FIXME: represent selectors as dependencies? - @Override - public Collection getDependencies() - { - return ImmutableSet.of(); - } - - @Override - public Collection getTextures() - { - return ImmutableSet.of(); - } - // FIXME @Override public IBakedModel bake(IModelState state, VertexFormat format, Function bakedTextureGetter) @@ -1318,11 +1281,5 @@ public final class ModelLoader extends ModelBakery IBakedModel bakedModel = builder.makeMultipartModel(); return bakedModel; } - - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity(); - } } } diff --git a/src/main/java/net/minecraftforge/client/model/ModelLoaderRegistry.java b/src/main/java/net/minecraftforge/client/model/ModelLoaderRegistry.java index c656dbdeb..a32d18047 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelLoaderRegistry.java +++ b/src/main/java/net/minecraftforge/client/model/ModelLoaderRegistry.java @@ -211,11 +211,12 @@ public class ModelLoaderRegistry public static IModel getMissingModel() { - if(ModelLoader.VanillaLoader.INSTANCE.getLoader() == null) + final ModelLoader loader = VanillaLoader.INSTANCE.getLoader(); + if(loader == null) { throw new IllegalStateException("Using ModelLoaderRegistry too early."); } - return ModelLoader.VanillaLoader.INSTANCE.getLoader().getMissingModel(); + return loader.getMissingModel(); } static IModel getMissingModel(ResourceLocation location, Throwable cause) diff --git a/src/main/java/net/minecraftforge/client/model/ModelProcessingHelper.java b/src/main/java/net/minecraftforge/client/model/ModelProcessingHelper.java deleted file mode 100644 index f9468bea5..000000000 --- a/src/main/java/net/minecraftforge/client/model/ModelProcessingHelper.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.client.model; - -import com.google.common.collect.ImmutableMap; - -public class ModelProcessingHelper -{ - public static IModel retexture(IModel model, ImmutableMap textures) - { - if(model instanceof IRetexturableModel) - { - model = ((IRetexturableModel)model).retexture(textures); - } - return model; - } - - public static IModel customData(IModel model, ImmutableMap customData) - { - if(model instanceof IModelCustomData) - { - model = ((IModelCustomData)model).process(customData); - } - return model; - } - - public static IModel smoothLighting(IModel model, boolean smooth) - { - if(model instanceof IModelSimpleProperties) - { - model = ((IModelSimpleProperties)model).smoothLighting(smooth); - } - return model; - } - - public static IModel gui3d(IModel model, boolean gui3d) - { - if(model instanceof IModelSimpleProperties) - { - model = ((IModelSimpleProperties)model).gui3d(gui3d); - } - return model; - } - - public static IModel uvlock(IModel model, boolean uvlock) - { - if(model instanceof IModelUVLock) - { - model = ((IModelUVLock)model).uvlock(uvlock); - } - return model; - } -} diff --git a/src/main/java/net/minecraftforge/client/model/ModelStateComposition.java b/src/main/java/net/minecraftforge/client/model/ModelStateComposition.java index 7fcb7248b..54289341b 100644 --- a/src/main/java/net/minecraftforge/client/model/ModelStateComposition.java +++ b/src/main/java/net/minecraftforge/client/model/ModelStateComposition.java @@ -24,7 +24,7 @@ import net.minecraftforge.common.model.IModelPart; import net.minecraftforge.common.model.IModelState; import net.minecraftforge.common.model.TRSRTransformation; -import com.google.common.base.Optional; +import java.util.Optional; public class ModelStateComposition implements IModelState { @@ -45,7 +45,10 @@ public class ModelStateComposition implements IModelState { return Optional.of(f.get().compose(s.get())); } - return f.or(s); + if (f.isPresent()) { + return f; + } + return s; } @Override diff --git a/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java b/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java index 6eccfe404..9e61cca77 100644 --- a/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java +++ b/src/main/java/net/minecraftforge/client/model/MultiLayerModel.java @@ -22,13 +22,12 @@ package net.minecraftforge.client.model; import java.util.Collection; import java.util.List; -import javax.annotation.Nonnull; +import javax.annotation.Nullable; import javax.vecmath.Matrix4f; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.block.model.ItemOverrideList; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -46,16 +45,16 @@ import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.lang3.tuple.Pair; -import com.google.common.base.Function; -import com.google.common.base.Optional; +import java.util.function.Function; +import java.util.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.gson.JsonElement; import com.google.gson.JsonParser; -public final class MultiLayerModel implements IModelCustomData +public final class MultiLayerModel implements IModel { - public static final MultiLayerModel INSTANCE = new MultiLayerModel(ImmutableMap., ModelResourceLocation>of()); + public static final MultiLayerModel INSTANCE = new MultiLayerModel(ImmutableMap.of()); private final ImmutableMap, ModelResourceLocation> models; @@ -67,13 +66,7 @@ public final class MultiLayerModel implements IModelCustomData @Override public Collection getDependencies() { - return ImmutableList.copyOf(models.values()); - } - - @Override - public Collection getTextures() - { - return ImmutableList.of(); + return ImmutableList.copyOf(models.values()); } private static ImmutableMap, IBakedModel> buildModels(ImmutableMap, ModelResourceLocation> models, IModelState state, VertexFormat format, Function bakedTextureGetter) @@ -94,16 +87,10 @@ public final class MultiLayerModel implements IModelCustomData return new MultiLayerBakedModel( buildModels(models, state, format, bakedTextureGetter), missing.bake(missing.getDefaultState(), format, bakedTextureGetter), - IPerspectiveAwareModel.MapWrapper.getTransforms(state) + PerspectiveMapWrapper.getTransforms(state) ); } - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity(); - } - @Override public MultiLayerModel process(ImmutableMap customData) { @@ -112,7 +99,7 @@ public final class MultiLayerModel implements IModelCustomData { if("base".equals(key)) { - builder.put(Optional.absent(), getLocation(customData.get(key))); + builder.put(Optional.empty(), getLocation(customData.get(key))); } for(BlockRenderLayer layer : BlockRenderLayer.values()) { @@ -138,10 +125,10 @@ public final class MultiLayerModel implements IModelCustomData return new ModelResourceLocation("builtin/missing", "missing"); } - private static final class MultiLayerBakedModel implements IPerspectiveAwareModel + private static final class MultiLayerBakedModel implements IBakedModel { private final ImmutableMap, IBakedModel> models; - private final ImmutableMap cameraTransforms;; + private final ImmutableMap cameraTransforms; private final IBakedModel base; private final IBakedModel missing; private final ImmutableMap, ImmutableList> quads; @@ -151,16 +138,16 @@ public final class MultiLayerModel implements IModelCustomData this.models = models; this.cameraTransforms = cameraTransforms; this.missing = missing; - if(models.containsKey(Optional.absent())) + if(models.containsKey(Optional.empty())) { - base = models.get(Optional.absent()); + base = models.get(Optional.empty()); } else { base = missing; } ImmutableMap.Builder, ImmutableList> quadBuilder = ImmutableMap.builder(); - quadBuilder.put(Optional.absent(), buildQuads(models, Optional.absent())); + quadBuilder.put(Optional.empty(), buildQuads(models, Optional.empty())); for(EnumFacing side: EnumFacing.values()) { quadBuilder.put(Optional.of(side), buildQuads(models, Optional.of(side))); @@ -173,20 +160,19 @@ public final class MultiLayerModel implements IModelCustomData ImmutableList.Builder builder = ImmutableList.builder(); for(IBakedModel model : models.values()) { - builder.addAll(model.getQuads(null, side.orNull(), 0)); + builder.addAll(model.getQuads(null, side.orElse(null), 0)); } return builder.build(); } - @Nonnull @Override - public List getQuads(IBlockState state, EnumFacing side, long rand) + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { IBakedModel model; BlockRenderLayer layer = MinecraftForgeClient.getRenderLayer(); if(layer == null) { - return quads.get(Optional.fromNullable(side)); + return quads.get(Optional.ofNullable(side)); } else if(!models.containsKey(Optional.of(layer))) { @@ -224,16 +210,10 @@ public final class MultiLayerModel implements IModelCustomData return base.getParticleTexture(); } - @Override - public ItemCameraTransforms getItemCameraTransforms() - { - return ItemCameraTransforms.DEFAULT; - } - @Override public Pair handlePerspective(TransformType cameraTransformType) { - return IPerspectiveAwareModel.MapWrapper.handlePerspective(this, cameraTransforms, cameraTransformType); + return PerspectiveMapWrapper.handlePerspective(this, cameraTransforms, cameraTransformType); } @Override diff --git a/src/main/java/net/minecraftforge/client/model/MultiModel.java b/src/main/java/net/minecraftforge/client/model/MultiModel.java index 5995b1151..455c028c7 100644 --- a/src/main/java/net/minecraftforge/client/model/MultiModel.java +++ b/src/main/java/net/minecraftforge/client/model/MultiModel.java @@ -26,7 +26,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.vecmath.Matrix4f; @@ -35,7 +34,6 @@ import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.block.model.ItemOverride; import net.minecraft.client.renderer.block.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; @@ -51,8 +49,8 @@ import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.Level; -import com.google.common.base.Function; -import com.google.common.base.Optional; +import java.util.function.Function; +import java.util.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; @@ -62,20 +60,20 @@ import com.google.common.collect.Sets; @Deprecated public final class MultiModel implements IModel { - private static final class Baked implements IPerspectiveAwareModel + private static final class Baked implements IBakedModel { private final ResourceLocation location; + @Nullable private final IBakedModel base; private final ImmutableMap parts; private final IBakedModel internalBase; private ImmutableMap, ImmutableList> quads; private final ImmutableMap> transforms; - private final ItemOverrideList overrides = new ItemOverrideList(Lists.newArrayList()) + private final ItemOverrideList overrides = new ItemOverrideList(Lists.newArrayList()) { @Override - @Nonnull - public IBakedModel handleItemState(@Nonnull IBakedModel originalModel, @Nonnull ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) + public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) { if(originalModel != Baked.this) { @@ -105,13 +103,13 @@ public final class MultiModel implements IModel if(dirty) { // TODO: caching? - return new Baked(location, newBase instanceof IPerspectiveAwareModel, newBase, builder.build()); + return new Baked(location, true, newBase, builder.build()); } return Baked.this; } }; - public Baked(ResourceLocation location, boolean perspective, IBakedModel base, ImmutableMap parts) + public Baked(ResourceLocation location, boolean perspective, @Nullable IBakedModel base, ImmutableMap parts) { this.location = location; this.base = base; @@ -129,13 +127,12 @@ public final class MultiModel implements IModel } // Only changes the base model based on perspective, may recurse for parts in the future. - if(perspective && base instanceof IPerspectiveAwareModel) + if(base != null && perspective) { - IPerspectiveAwareModel perBase = (IPerspectiveAwareModel)base; ImmutableMap.Builder> builder = ImmutableMap.builder(); for(TransformType type : TransformType.values()) { - Pair p = perBase.handlePerspective(type); + Pair p = base.handlePerspective(type); IBakedModel newBase = p.getLeft(); builder.put(type, Pair.of(new Baked(location, false, newBase, parts), new TRSRTransformation(p.getRight()))); } @@ -178,7 +175,7 @@ public final class MultiModel implements IModel } @Override - public List getQuads(IBlockState state, EnumFacing side, long rand) + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { if(quads == null) { @@ -206,10 +203,10 @@ public final class MultiModel implements IModel { quads.addAll(bakedPart.getQuads(state, null, 0)); } - builder.put(Optional.absent(), quads.build()); + builder.put(Optional.empty(), quads.build()); this.quads = builder.build(); } - return quads.get(Optional.fromNullable(side)); + return quads.get(Optional.ofNullable(side)); } @Override @@ -228,11 +225,12 @@ public final class MultiModel implements IModel } private final ResourceLocation location; + @Nullable private final IModel base; private final IModelState baseState; private final Map> parts; - public MultiModel(ResourceLocation location, IModel base, IModelState baseState, ImmutableMap> parts) + public MultiModel(ResourceLocation location, @Nullable IModel base, IModelState baseState, ImmutableMap> parts) { this.location = location; this.base = base; diff --git a/src/main/java/net/minecraftforge/client/model/MultiModelState.java b/src/main/java/net/minecraftforge/client/model/MultiModelState.java index 9e78a68d7..d812753bc 100644 --- a/src/main/java/net/minecraftforge/client/model/MultiModelState.java +++ b/src/main/java/net/minecraftforge/client/model/MultiModelState.java @@ -26,7 +26,7 @@ import net.minecraftforge.common.model.TRSRTransformation; import org.apache.commons.lang3.tuple.Pair; import com.google.common.base.Objects; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -64,7 +64,7 @@ public final class MultiModelState implements IModelState MultiModelPart key = (MultiModelPart)part.get(); if(states.containsKey(key)) { - return Optional.of(states.get(key).apply(Optional.absent()).or(TRSRTransformation.identity())); + return Optional.of(states.get(key).apply(Optional.empty()).orElse(TRSRTransformation.identity())); } } else if(part.get() instanceof PartPart) @@ -77,7 +77,7 @@ public final class MultiModelState implements IModelState } } } - return Optional.absent(); + return Optional.empty(); } private static class PartState implements IModelState @@ -102,7 +102,10 @@ public final class MultiModelState implements IModelState { return Optional.of(normal.get().compose(multi.get())); } - return normal.or(multi); + if (normal.isPresent()) { + return normal; + } + return multi; } } diff --git a/src/main/java/net/minecraftforge/client/model/PerspectiveMapWrapper.java b/src/main/java/net/minecraftforge/client/model/PerspectiveMapWrapper.java new file mode 100644 index 000000000..c0924ee9a --- /dev/null +++ b/src/main/java/net/minecraftforge/client/model/PerspectiveMapWrapper.java @@ -0,0 +1,93 @@ +package net.minecraftforge.client.model; + +import java.util.Optional; +import com.google.common.collect.ImmutableMap; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.block.model.ItemOverrideList; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; +import org.apache.commons.lang3.tuple.Pair; + +import javax.annotation.Nullable; +import javax.vecmath.Matrix4f; +import java.util.List; + +public class PerspectiveMapWrapper implements IBakedModel +{ + private final IBakedModel parent; + private final ImmutableMap transforms; + + public PerspectiveMapWrapper(IBakedModel parent, ImmutableMap transforms) + { + this.parent = parent; + this.transforms = transforms; + } + + public PerspectiveMapWrapper(IBakedModel parent, IModelState state) + { + this(parent, getTransforms(state)); + } + + public static ImmutableMap getTransforms(IModelState state) + { + ImmutableMap.Builder builder = ImmutableMap.builder(); + for(ItemCameraTransforms.TransformType type : ItemCameraTransforms.TransformType.values()) + { + Optional tr = state.apply(Optional.of(type)); + if(tr.isPresent()) + { + builder.put(type, tr.get()); + } + } + return builder.build(); + } + + @SuppressWarnings("deprecation") + public static ImmutableMap getTransforms(ItemCameraTransforms transforms) + { + ImmutableMap.Builder builder = ImmutableMap.builder(); + for(ItemCameraTransforms.TransformType type : ItemCameraTransforms.TransformType.values()) + { + builder.put(type, TRSRTransformation.blockCenterToCorner(new TRSRTransformation(transforms.getTransform(type)))); + } + return builder.build(); + } + + public static Pair handlePerspective(IBakedModel model, ImmutableMap transforms, ItemCameraTransforms.TransformType cameraTransformType) + { + TRSRTransformation tr = transforms.get(cameraTransformType); + Matrix4f mat = null; + if(tr != null && !tr.equals(TRSRTransformation.identity())) mat = TRSRTransformation.blockCornerToCenter(tr).getMatrix(); + return Pair.of(model, mat); + } + + public static Pair handlePerspective(IBakedModel model, IModelState state, ItemCameraTransforms.TransformType cameraTransformType) + { + TRSRTransformation tr = state.apply(Optional.of(cameraTransformType)).orElse(TRSRTransformation.identity()); + if(tr != TRSRTransformation.identity()) + { + return Pair.of(model, TRSRTransformation.blockCornerToCenter(tr).getMatrix()); + } + return Pair.of(model, null); + } + + public boolean isAmbientOcclusion() { return parent.isAmbientOcclusion(); } + public boolean isGui3d() { return parent.isGui3d(); } + public boolean isBuiltInRenderer() { return parent.isBuiltInRenderer(); } + public TextureAtlasSprite getParticleTexture() { return parent.getParticleTexture(); } + @SuppressWarnings("deprecation") + public ItemCameraTransforms getItemCameraTransforms() { return parent.getItemCameraTransforms(); } + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { return parent.getQuads(state, side, rand); } + public ItemOverrideList getOverrides() { return parent.getOverrides(); } + + @Override + public Pair handlePerspective(ItemCameraTransforms.TransformType cameraTransformType) + { + return handlePerspective(this, transforms, cameraTransformType); + } +} diff --git a/src/main/java/net/minecraftforge/client/model/SimpleModelState.java b/src/main/java/net/minecraftforge/client/model/SimpleModelState.java index 2a89bcaa8..c6c403e72 100644 --- a/src/main/java/net/minecraftforge/client/model/SimpleModelState.java +++ b/src/main/java/net/minecraftforge/client/model/SimpleModelState.java @@ -23,7 +23,7 @@ import net.minecraftforge.common.model.IModelPart; import net.minecraftforge.common.model.IModelState; import net.minecraftforge.common.model.TRSRTransformation; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.ImmutableMap; /* @@ -36,7 +36,7 @@ public final class SimpleModelState implements IModelState public SimpleModelState(ImmutableMap map) { - this(map, Optional.absent()); + this(map, Optional.empty()); } public SimpleModelState(ImmutableMap map, Optional def) @@ -54,8 +54,8 @@ public final class SimpleModelState implements IModelState } if(!map.containsKey(part.get())) { - return Optional.absent(); + return Optional.empty(); } - return Optional.fromNullable(map.get(part.get())); + return Optional.ofNullable(map.get(part.get())); } } diff --git a/src/main/java/net/minecraftforge/client/model/animation/AnimationItemOverrideList.java b/src/main/java/net/minecraftforge/client/model/animation/AnimationItemOverrideList.java index 65ead8924..fa2d7bd55 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/AnimationItemOverrideList.java +++ b/src/main/java/net/minecraftforge/client/model/animation/AnimationItemOverrideList.java @@ -37,9 +37,8 @@ import net.minecraftforge.common.model.IModelState; import net.minecraftforge.common.model.animation.CapabilityAnimation; import net.minecraftforge.common.model.animation.IAnimationStateMachine; -import com.google.common.base.Function; +import java.util.function.Function; -import javax.annotation.Nonnull; import javax.annotation.Nullable; public final class AnimationItemOverrideList extends ItemOverrideList @@ -63,9 +62,8 @@ public final class AnimationItemOverrideList extends ItemOverrideList this.bakedTextureGetter = bakedTextureGetter; } - @Nonnull @Override - public IBakedModel handleItemState(@Nonnull IBakedModel originalModel, @Nonnull ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) + public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, @Nullable World world, @Nullable EntityLivingBase entity) { IAnimationStateMachine asm = stack.getCapability(CapabilityAnimation.ANIMATION_CAPABILITY, null); if (asm != null) diff --git a/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java b/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java index 0dfcdeeaa..a4325f2eb 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java +++ b/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java @@ -38,8 +38,6 @@ import net.minecraftforge.common.property.Properties; import org.apache.commons.lang3.tuple.Pair; -import javax.annotation.Nonnull; - /** * Generic TileEntitySpecialRenderer that works with the Forge model system and animations. */ @@ -48,8 +46,8 @@ public class AnimationTESR extends FastTESR implements protected static BlockRendererDispatcher blockRenderer; @Override - public void renderTileEntityFast(@Nonnull T te, double x, double y, double z, float partialTick, int breakStage, float partial, @Nonnull BufferBuilder renderer) - { + public void renderTileEntityFast(T te, double x, double y, double z, float partialTick, int breakStage, float partial, BufferBuilder renderer) + { if(!te.hasCapability(CapabilityAnimation.ANIMATION_CAPABILITY, null)) { return; diff --git a/src/main/java/net/minecraftforge/client/model/animation/FastTESR.java b/src/main/java/net/minecraftforge/client/model/animation/FastTESR.java index e318d1017..cae96fd65 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/FastTESR.java +++ b/src/main/java/net/minecraftforge/client/model/animation/FastTESR.java @@ -31,12 +31,10 @@ import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.tileentity.TileEntity; -import javax.annotation.Nonnull; - public abstract class FastTESR extends TileEntitySpecialRenderer { @Override - public final void render(@Nonnull T te, double x, double y, double z, float partialTicks, int destroyStage, float partial) + public final void render(T te, double x, double y, double z, float partialTicks, int destroyStage, float partial) { Tessellator tessellator = Tessellator.getInstance(); BufferBuilder buffer = tessellator.getBuffer(); @@ -66,5 +64,5 @@ public abstract class FastTESR extends TileEntitySpecialRe } @Override - public abstract void renderTileEntityFast(@Nonnull T te, double x, double y, double z, float partialTicks, int destroyStage, float partial, @Nonnull BufferBuilder buffer); + public abstract void renderTileEntityFast(T te, double x, double y, double z, float partialTicks, int destroyStage, float partial, BufferBuilder buffer); } diff --git a/src/main/java/net/minecraftforge/client/model/animation/IAnimatedModel.java b/src/main/java/net/minecraftforge/client/model/animation/IAnimatedModel.java deleted file mode 100644 index 96177ffae..000000000 --- a/src/main/java/net/minecraftforge/client/model/animation/IAnimatedModel.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.client.model.animation; - -import net.minecraftforge.client.model.IModel; -import net.minecraftforge.common.model.animation.IClip; - -import com.google.common.base.Optional; - -/** - * IModel that has animation data. - */ -public interface IAnimatedModel extends IModel -{ - Optional getClip(String name); -} diff --git a/src/main/java/net/minecraftforge/client/model/animation/ModelBlockAnimation.java b/src/main/java/net/minecraftforge/client/model/animation/ModelBlockAnimation.java index daf30b398..2ea14fbd4 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/ModelBlockAnimation.java +++ b/src/main/java/net/minecraftforge/client/model/animation/ModelBlockAnimation.java @@ -55,7 +55,7 @@ import net.minecraftforge.common.model.animation.JointClips; import net.minecraftforge.common.util.JsonUtils; import net.minecraftforge.fml.common.FMLLog; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -447,7 +447,7 @@ public class ModelBlockAnimation @Override public Optional getParent() { - return Optional.absent(); + return Optional.empty(); } public String getName() diff --git a/src/main/java/net/minecraftforge/client/model/animation/package-info.java b/src/main/java/net/minecraftforge/client/model/animation/package-info.java new file mode 100644 index 000000000..30fa5bb19 --- /dev/null +++ b/src/main/java/net/minecraftforge/client/model/animation/package-info.java @@ -0,0 +1,6 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package net.minecraftforge.client.model.animation; + +import mcp.MethodsReturnNonnullByDefault; +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/net/minecraftforge/client/model/b3d/B3DClip.java b/src/main/java/net/minecraftforge/client/model/b3d/B3DClip.java index 90daf31eb..959adbb67 100644 --- a/src/main/java/net/minecraftforge/client/model/b3d/B3DClip.java +++ b/src/main/java/net/minecraftforge/client/model/b3d/B3DClip.java @@ -49,7 +49,7 @@ public enum B3DClip implements IClip @Override public Iterable pastEvents(float lastPollTime, float time) { - return ImmutableSet.of(); + return ImmutableSet.of(); } protected static class NodeClip implements IJointClip diff --git a/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java b/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java index 3c876103e..17986bdd3 100644 --- a/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java +++ b/src/main/java/net/minecraftforge/client/model/b3d/B3DLoader.java @@ -22,7 +22,6 @@ package net.minecraftforge.client.model.b3d; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -37,7 +36,6 @@ import javax.vecmath.Vector3f; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.IBakedModel; -import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.block.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -49,14 +47,10 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraftforge.client.model.ICustomModelLoader; import net.minecraftforge.client.model.IModel; -import net.minecraftforge.client.model.IModelCustomData; -import net.minecraftforge.client.model.IModelSimpleProperties; -import net.minecraftforge.client.model.IPerspectiveAwareModel; -import net.minecraftforge.client.model.IRetexturableModel; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.client.model.ModelStateComposition; -import net.minecraftforge.client.model.animation.IAnimatedModel; +import net.minecraftforge.client.model.PerspectiveMapWrapper; import net.minecraftforge.client.model.b3d.B3DModel.Animation; import net.minecraftforge.client.model.b3d.B3DModel.Face; import net.minecraftforge.client.model.b3d.B3DModel.Key; @@ -79,9 +73,9 @@ import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Triple; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Objects; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.base.Predicate; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -104,8 +98,8 @@ public enum B3DLoader implements ICustomModelLoader private IResourceManager manager; - private final Set enabledDomains = new HashSet(); - private final Map cache = new HashMap(); + private final Set enabledDomains = new HashSet<>(); + private final Map cache = new HashMap<>(); public void addDomain(String domain) { @@ -134,7 +128,7 @@ public enum B3DLoader implements ICustomModelLoader { try { - IResource resource = null; + IResource resource; try { resource = manager.getResource(file); @@ -161,13 +155,14 @@ public enum B3DLoader implements ICustomModelLoader if(model == null) throw new ModelLoaderRegistry.LoaderException("Error loading model previously: " + file); if(!(model.getRoot().getKind() instanceof Mesh)) { - return new ModelWrapper(modelLocation, model, ImmutableSet.of(), true, true, 1); + return new ModelWrapper(modelLocation, model, ImmutableSet.of(), true, true, 1); } return new ModelWrapper(modelLocation, model, ImmutableSet.of(model.getRoot().getName()), true, true, 1); } public static final class B3DState implements IModelState { + @Nullable private final Animation animation; private final int frame; private final int nextFrame; @@ -175,22 +170,22 @@ public enum B3DLoader implements ICustomModelLoader @Nullable private final IModelState parent; - public B3DState(Animation animation, int frame) + public B3DState(@Nullable Animation animation, int frame) { this(animation, frame, frame, 0); } - public B3DState(Animation animation, int frame, IModelState parent) + public B3DState(@Nullable Animation animation, int frame, IModelState parent) { this(animation, frame, frame, 0, parent); } - public B3DState(Animation animation, int frame, int nextFrame, float progress) + public B3DState(@Nullable Animation animation, int frame, int nextFrame, float progress) { this(animation, frame, nextFrame, progress, null); } - public B3DState(Animation animation, int frame, int nextFrame, float progress, @Nullable IModelState parent) + public B3DState(@Nullable Animation animation, int frame, int nextFrame, float progress, @Nullable IModelState parent) { this.animation = animation; this.frame = frame; @@ -207,6 +202,7 @@ public enum B3DLoader implements ICustomModelLoader return parent; } + @Nullable public Animation getAnimation() { return animation; @@ -243,11 +239,11 @@ public enum B3DLoader implements ICustomModelLoader { return parent.apply(part); } - return Optional.absent(); + return Optional.empty(); } if(!(part.get() instanceof NodeJoint)) { - return Optional.absent(); + return Optional.empty(); } Node node = ((NodeJoint)part.get()).getNode(); TRSRTransformation nodeTransform; @@ -266,7 +262,7 @@ public enum B3DLoader implements ICustomModelLoader } if(parent != null && node.getParent() == null) { - return Optional.of(parent.apply(part).or(TRSRTransformation.identity()).compose(nodeTransform)); + return Optional.of(parent.apply(part).orElse(TRSRTransformation.identity()).compose(nodeTransform)); } return Optional.of(nodeTransform); } @@ -290,22 +286,22 @@ public enum B3DLoader implements ICustomModelLoader public TRSRTransformation getNodeMatrix(Node node, int frame) { - return cache.getUnchecked(Triple., Integer>of(animation, node, frame)); + return cache.getUnchecked(Triple.of(animation, node, frame)); } - public static TRSRTransformation getNodeMatrix(Animation animation, Node node, int frame) + public static TRSRTransformation getNodeMatrix(@Nullable Animation animation, Node node, int frame) { TRSRTransformation ret = TRSRTransformation.identity(); Key key = null; if(animation != null) key = animation.getKeys().get(frame, node); - else if(node.getAnimation() != null && node.getAnimation() != animation) key = node.getAnimation().getKeys().get(frame, node); + else if(node.getAnimation() != null) key = node.getAnimation().getKeys().get(frame, node); if(key != null) { Node parent = node.getParent(); if(parent != null) { // parent model-global current pose - TRSRTransformation pm = cache.getUnchecked(Triple., Integer>of(animation, node.getParent(), frame)); + TRSRTransformation pm = cache.getUnchecked(Triple.of(animation, node.getParent(), frame)); ret = ret.compose(pm); // joint offset in the parent coords ret = ret.compose(new TRSRTransformation(parent.getPos(), parent.getRot(), parent.getScale(), null)); @@ -334,7 +330,7 @@ public enum B3DLoader implements ICustomModelLoader if(parent != null) { // parent model-global current pose - TRSRTransformation pm = cache.getUnchecked(Triple., Integer>of(animation, node.getParent(), frame)); + TRSRTransformation pm = cache.getUnchecked(Triple.of(animation, node.getParent(), frame)); ret = ret.compose(pm); // joint offset in the parent coords ret = ret.compose(new TRSRTransformation(parent.getPos(), parent.getRot(), parent.getScale(), null)); @@ -376,7 +372,7 @@ public enum B3DLoader implements ICustomModelLoader public Optional getParent() { // FIXME cache? - if(node.getParent() == null) return Optional.absent(); + if(node.getParent() == null) return Optional.empty(); return Optional.of(new NodeJoint(node.getParent())); } @@ -402,39 +398,7 @@ public enum B3DLoader implements ICustomModelLoader } } - /** - * @deprecated use AnimationProperty. - */ - @Deprecated - public static enum B3DFrameProperty implements IUnlistedProperty - { - INSTANCE; - @Override - public String getName() - { - return "B3DFrame"; - } - - @Override - public boolean isValid(B3DState value) - { - return value instanceof B3DState; - } - - @Override - public Class getType() - { - return B3DState.class; - } - - @Override - public String valueToString(B3DState value) - { - return value.toString(); - } - } - - private static final class ModelWrapper implements IRetexturableModel, IModelCustomData, IModelSimpleProperties, IAnimatedModel + private static final class ModelWrapper implements IModel { private final ResourceLocation modelLocation; private final B3DModel model; @@ -480,23 +444,10 @@ public enum B3DLoader implements ICustomModelLoader return path; } - @Override - public Collection getDependencies() - { - return Collections.emptyList(); - } - @Override public Collection getTextures() { - return Collections2.filter(textures.values(), new Predicate() - { - @Override - public boolean apply(ResourceLocation loc) - { - return !loc.getResourcePath().startsWith("#"); - } - }); + return Collections2.filter(textures.values(), loc -> !loc.getResourcePath().startsWith("#")); } @Override @@ -596,9 +547,9 @@ public enum B3DLoader implements ICustomModelLoader { if(name.equals("main")) { - return Optional.of(B3DClip.INSTANCE); + return Optional.of(B3DClip.INSTANCE); } - return Optional.absent(); + return Optional.empty(); } @Override @@ -628,7 +579,7 @@ public enum B3DLoader implements ICustomModelLoader } } - private static final class BakedWrapper implements IPerspectiveAwareModel + private static final class BakedWrapper implements IBakedModel { private final Node node; private final IModelState state; @@ -676,41 +627,14 @@ public enum B3DLoader implements ICustomModelLoader } @Override - public List getQuads(IBlockState state, EnumFacing side, long rand) + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { if(side != null) return ImmutableList.of(); IModelState modelState = this.state; if(state instanceof IExtendedBlockState) { IExtendedBlockState exState = (IExtendedBlockState)state; - if(exState.getUnlistedNames().contains(B3DFrameProperty.INSTANCE)) - { - B3DState s = exState.getValue(B3DFrameProperty.INSTANCE); - if(s != null) - { - //return getCachedModel(s.getFrame()); - IModelState parent = this.state; - Animation newAnimation = s.getAnimation(); - if(parent instanceof B3DState) - { - B3DState ps = (B3DState)parent; - parent = ps.getParent(); - } - if(newAnimation == null) - { - newAnimation = node.getAnimation(); - } - if(s.getFrame() == s.getNextFrame()) - { - modelState = cache.getUnchecked(s.getFrame()); - } - else - { - modelState = new B3DState(newAnimation, s.getFrame(), s.getNextFrame(), s.getProgress(), parent); - } - } - } - else if(exState.getUnlistedNames().contains(Properties.AnimationProperty)) + if(exState.getUnlistedNames().contains(Properties.AnimationProperty)) { // FIXME: should animation state handle the parent state, or should it remain here? IModelState parent = this.state; @@ -722,21 +646,28 @@ public enum B3DLoader implements ICustomModelLoader IModelState newState = exState.getValue(Properties.AnimationProperty); if(newState != null) { - modelState = new ModelStateComposition(parent, newState); + if (parent == null) + { + modelState = newState; + } + else + { + modelState = new ModelStateComposition(parent, newState); + } } } } if(quads == null) { ImmutableList.Builder builder = ImmutableList.builder(); - generateQuads(builder, node, this.state, ImmutableList.of()); + generateQuads(builder, node, this.state, ImmutableList.of()); quads = builder.build(); } // TODO: caching? if(this.state != modelState) { ImmutableList.Builder builder = ImmutableList.builder(); - generateQuads(builder, node, modelState, ImmutableList.of()); + generateQuads(builder, node, modelState, ImmutableList.of()); return builder.build(); } return quads; @@ -757,7 +688,7 @@ public enum B3DLoader implements ICustomModelLoader Mesh mesh = (Mesh)node.getKind(); Collection faces = mesh.bake(new Function, Matrix4f>() { - private final TRSRTransformation global = state.apply(Optional.absent()).or(TRSRTransformation.identity()); + private final TRSRTransformation global = state.apply(Optional.empty()).orElse(TRSRTransformation.identity()); private final LoadingCache, TRSRTransformation> localCache = CacheBuilder.newBuilder() .maximumSize(32) .build(new CacheLoader, TRSRTransformation>() @@ -765,7 +696,7 @@ public enum B3DLoader implements ICustomModelLoader @Override public TRSRTransformation load(Node node) throws Exception { - return state.apply(Optional.of(new NodeJoint(node))).or(TRSRTransformation.identity()); + return state.apply(Optional.of(new NodeJoint(node))).orElse(TRSRTransformation.identity()); } }); @@ -873,16 +804,10 @@ public enum B3DLoader implements ICustomModelLoader return textures.values().asList().get(0); } - @Override - public ItemCameraTransforms getItemCameraTransforms() - { - return ItemCameraTransforms.DEFAULT; - } - @Override public Pair handlePerspective(TransformType cameraTransformType) { - return IPerspectiveAwareModel.MapWrapper.handlePerspective(this, state, cameraTransformType); + return PerspectiveMapWrapper.handlePerspective(this, state, cameraTransformType); } @Override diff --git a/src/main/java/net/minecraftforge/client/model/b3d/B3DModel.java b/src/main/java/net/minecraftforge/client/model/b3d/B3DModel.java index 232a5b2b7..7fd1de993 100644 --- a/src/main/java/net/minecraftforge/client/model/b3d/B3DModel.java +++ b/src/main/java/net/minecraftforge/client/model/b3d/B3DModel.java @@ -36,6 +36,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import javax.annotation.Nullable; import javax.vecmath.Matrix3f; import javax.vecmath.Matrix4f; import javax.vecmath.Quat4f; @@ -49,9 +50,9 @@ import org.apache.commons.lang3.tuple.Triple; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Joiner; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.HashBasedTable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -133,7 +134,7 @@ public class B3DModel return res; } - private final List textures = new ArrayList(); + private final List textures = new ArrayList<>(); private Texture getTexture(int texture) { @@ -146,27 +147,25 @@ public class B3DModel return textures.get(texture); } - private final List brushes = new ArrayList(); + private final List brushes = new ArrayList<>(); - private Brush getBrush(int brush) + private @Nullable Brush getBrush(int brush) throws IOException { if(brush > brushes.size()) { - logger.error("brush {} is out of range", brush); - return null; + throw new IOException(String.format("brush %s is out of range", brush)); } else if(brush == -1) return null; return brushes.get(brush); } - private final List vertices = new ArrayList(); + private final List vertices = new ArrayList<>(); - private Vertex getVertex(int vertex) + private Vertex getVertex(int vertex) throws IOException { if(vertex > vertices.size()) { - logger.error("vertex {} is out of range", vertex); - return null; + throw new IOException(String.format("vertex %s is out of range", vertex)); } return vertices.get(vertex); } @@ -199,11 +198,10 @@ public class B3DModel buf.position(start); buf.get(tmp); buf.get(); - String ret = new String(tmp, "UTF8"); - return ret; + return new String(tmp, "UTF8"); } - private Deque limitStack = new ArrayDeque(); + private Deque limitStack = new ArrayDeque<>(); private void pushLimit() { @@ -223,7 +221,7 @@ public class B3DModel if(version / 100 > Parser.version / 100) throw new IOException("Unsupported major model version: " + ((float)version / 100)); if(version % 100 > Parser.version % 100) - logger.warn(String.format("Minor version difference in model: ", ((float)version / 100))); + logger.warn(String.format("Minor version difference in model: %s", ((float)version / 100))); List textures = Collections.emptyList(); List brushes = Collections.emptyList(); Node root = null; @@ -238,13 +236,16 @@ public class B3DModel } dump("}"); popLimit(); + if (root == null) { + throw new IOException("not found the root node in the model"); + } return new B3DModel(textures, brushes, root, meshes.build()); } private List texs() throws IOException { chunk("TEXS"); - List ret = new ArrayList(); + List ret = new ArrayList<>(); while(buf.hasRemaining()) { String path = readString(); @@ -264,7 +265,7 @@ public class B3DModel private List brus() throws IOException { chunk("BRUS"); - List ret = new ArrayList(); + List ret = new ArrayList<>(); int n_texs = buf.getInt(); while(buf.hasRemaining()) { @@ -273,7 +274,7 @@ public class B3DModel float shininess = buf.getFloat(); int blend = buf.getInt(); int fx = buf.getInt(); - List textures = new ArrayList(); + List textures = new ArrayList<>(); for(int i = 0; i < n_texs; i++) textures.add(getTexture(buf.getInt())); ret.add(new Brush(name, color, shininess, blend, fx, textures)); } @@ -286,7 +287,7 @@ public class B3DModel private List vrts() throws IOException { chunk("VRTS"); - List ret = new ArrayList(); + List ret = new ArrayList<>(); int flags = buf.getInt(); int tex_coord_sets = buf.getInt(); int tex_coord_set_size = buf.getInt(); @@ -320,7 +321,7 @@ public class B3DModel tex_coords[i] = new Vector4f(buf.getFloat(), buf.getFloat(), buf.getFloat(), buf.getFloat()); break; default: - logger.error(String.format("Unsupported number of texture coords: ", tex_coord_set_size)); + logger.error(String.format("Unsupported number of texture coords: %s", tex_coord_set_size)); tex_coords[i] = new Vector4f(0, 0, 0, 1); } } @@ -336,7 +337,7 @@ public class B3DModel private List tris() throws IOException { chunk("TRIS"); - List ret = new ArrayList(); + List ret = new ArrayList<>(); int brush_id = buf.getInt(); while(buf.hasRemaining()) { @@ -354,7 +355,7 @@ public class B3DModel readHeader(); dump("MESH(brush = " + brush_id + ") {"); vrts(); - List ret = new ArrayList(); + List ret = new ArrayList<>(); while(buf.hasRemaining()) { readHeader(); @@ -368,7 +369,7 @@ public class B3DModel private List> bone() throws IOException { chunk("BONE"); - List> ret = new ArrayList>(); + List> ret = new ArrayList<>(); while(buf.hasRemaining()) { ret.add(Pair.of(getVertex(buf.getInt()), buf.getFloat())); @@ -378,12 +379,12 @@ public class B3DModel return ret; } - private final Deque>, Key>> animations = new ArrayDeque>, Key>>(); + private final Deque>, Key>> animations = new ArrayDeque<>(); private Map keys() throws IOException { chunk("KEYS"); - Map ret = new HashMap(); + Map ret = new HashMap<>(); int flags = buf.getInt(); Vector3f pos = null, scale = null; Quat4f rot = null; @@ -422,7 +423,7 @@ public class B3DModel else key = new Key(key.getPos(), key.getScale(), oldKey.getRot()); } } - animations.peek().put(frame, Optional.>absent(), key); + animations.peek().put(frame, Optional.empty(), key); ret.put(frame, key); } dump("KEYS([(" + Joiner.on("), (").withKeyValueSeparator(" -> ").join(ret) + ")])"); @@ -444,12 +445,12 @@ public class B3DModel private Node node() throws IOException { chunk("NODE"); - animations.push(HashBasedTable.>, Key>create()); + animations.push(HashBasedTable.create()); Triple animData = null; Pair> mesh = null; List> bone = null; - Map keys = new HashMap(); - List> nodes = new ArrayList>(); + Map keys = new HashMap<>(); + List> nodes = new ArrayList<>(); String name = readString(); Vector3f pos = new Vector3f(buf.getFloat(), buf.getFloat(), buf.getFloat()); Vector3f scale = new Vector3f(buf.getFloat(), buf.getFloat(), buf.getFloat()); @@ -481,7 +482,7 @@ public class B3DModel { for(Table.Cell>, Key> key : keyData.cellSet()) { - animations.peek().put(key.getRowKey(), key.getColumnKey().or(Optional.of(node)), key.getValue()); + animations.peek().put(key.getRowKey(), Optional.of(key.getColumnKey().orElse(node)), key.getValue()); } } else @@ -644,10 +645,12 @@ public class B3DModel public static class Vertex { private final Vector3f pos; + @Nullable private final Vector3f normal; + @Nullable private final Vector4f color; private final Vector4f[] texCoords; - public Vertex(Vector3f pos, Vector3f normal, Vector4f color, Vector4f[] texCoords) + public Vertex(Vector3f pos, @Nullable Vector3f normal, @Nullable Vector4f color, Vector4f[] texCoords) { this.pos = pos; this.normal = normal; @@ -707,11 +710,13 @@ public class B3DModel return pos; } + @Nullable public Vector3f getNormal() { return normal; } + @Nullable public Vector4f getColor() { return color; @@ -732,15 +737,16 @@ public class B3DModel public static class Face { private final Vertex v1, v2, v3; + @Nullable private final Brush brush; private final Vector3f normal; - public Face(Vertex v1, Vertex v2, Vertex v3, Brush brush) + public Face(Vertex v1, Vertex v2, Vertex v3, @Nullable Brush brush) { this(v1, v2, v3, brush, getNormal(v1, v2, v3)); } - public Face(Vertex v1, Vertex v2, Vertex v3, Brush brush, Vector3f normal) + public Face(Vertex v1, Vertex v2, Vertex v3, @Nullable Brush brush, Vector3f normal) { this.v1 = v1; this.v2 = v2; @@ -764,6 +770,7 @@ public class B3DModel return v3; } + @Nullable public Brush getBrush() { return brush; @@ -795,27 +802,33 @@ public class B3DModel public static class Key { + @Nullable private final Vector3f pos; + @Nullable private final Vector3f scale; + @Nullable private final Quat4f rot; - public Key(Vector3f pos, Vector3f scale, Quat4f rot) + public Key(@Nullable Vector3f pos, @Nullable Vector3f scale, @Nullable Quat4f rot) { this.pos = pos; this.scale = scale; this.rot = rot; } + @Nullable public Vector3f getPos() { return pos; } + @Nullable public Vector3f getScale() { return scale; } + @Nullable public Quat4f getRot() { return rot; @@ -883,13 +896,15 @@ public class B3DModel private final Vector3f scale; private final Quat4f rot; private final ImmutableMap> nodes; + @Nullable private Animation animation; private final K kind; + @Nullable private Node> parent; public static > Node create(String name, Vector3f pos, Vector3f scale, Quat4f rot, List> nodes, K kind) { - return new Node(name, pos, scale, rot, nodes, kind); + return new Node<>(name, pos, scale, rot, nodes, kind); } public Node(String name, Vector3f pos, Vector3f scale, Quat4f rot, List> nodes, K kind) @@ -910,7 +925,7 @@ public class B3DModel public void setAnimation(Animation animation) { this.animation = animation; - Deque> q = new ArrayDeque>(nodes.values()); + Deque> q = new ArrayDeque<>(nodes.values()); while(!q.isEmpty()) { @@ -926,7 +941,7 @@ public class B3DModel ImmutableTable.Builder, Key> builder = ImmutableTable.builder(); for(Table.Cell>, Key> key : keyData.cellSet()) { - builder.put(key.getRowKey(), key.getColumnKey().or(this), key.getValue()); + builder.put(key.getRowKey(), key.getColumnKey().orElse(this), key.getValue()); } setAnimation(new Animation(animData.getLeft(), animData.getMiddle(), animData.getRight(), builder.build())); } @@ -971,11 +986,13 @@ public class B3DModel return nodes; } + @Nullable public Animation getAnimation() { return animation; } + @Nullable public Node> getParent() { return parent; @@ -1017,7 +1034,7 @@ public class B3DModel private final ImmutableList faces; //private final ImmutableList bones; - private Set> bones = new HashSet>(); + private Set> bones = new HashSet<>(); private ImmutableMultimap>> weightMap = ImmutableMultimap.of(); @@ -1071,7 +1088,7 @@ public class B3DModel public void setParent(Node parent) { this.parent = parent; - Deque> queue = new ArrayDeque>(parent.getNodes().values()); + Deque> queue = new ArrayDeque<>(parent.getNodes().values()); while(!queue.isEmpty()) { Node node = queue.pop(); diff --git a/src/main/java/net/minecraftforge/client/model/b3d/package-info.java b/src/main/java/net/minecraftforge/client/model/b3d/package-info.java new file mode 100644 index 000000000..3acdfe19b --- /dev/null +++ b/src/main/java/net/minecraftforge/client/model/b3d/package-info.java @@ -0,0 +1,6 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package net.minecraftforge.client.model.b3d; + +import mcp.MethodsReturnNonnullByDefault; +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/net/minecraftforge/client/model/obj/OBJLoader.java b/src/main/java/net/minecraftforge/client/model/obj/OBJLoader.java index 6a220df20..72d8cb22c 100644 --- a/src/main/java/net/minecraftforge/client/model/obj/OBJLoader.java +++ b/src/main/java/net/minecraftforge/client/model/obj/OBJLoader.java @@ -44,9 +44,9 @@ public enum OBJLoader implements ICustomModelLoader { INSTANCE; private IResourceManager manager; - private final Set enabledDomains = new HashSet(); - private final Map cache = new HashMap(); - private final Map errors = new HashMap(); + private final Set enabledDomains = new HashSet<>(); + private final Map cache = new HashMap<>(); + private final Map errors = new HashMap<>(); public void addDomain(String domain) { @@ -74,7 +74,7 @@ public enum OBJLoader implements ICustomModelLoader { ResourceLocation file = new ResourceLocation(modelLocation.getResourceDomain(), modelLocation.getResourcePath()); if (!cache.containsKey(file)) { - IResource resource = null; + IResource resource; try { resource = manager.getResource(file); diff --git a/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java b/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java index 7e8e62644..59f66cf41 100644 --- a/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java +++ b/src/main/java/net/minecraftforge/client/model/obj/OBJModel.java @@ -66,9 +66,9 @@ import net.minecraftforge.fml.common.FMLLog; import org.apache.commons.lang3.tuple.Pair; import com.google.common.base.Charsets; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Objects; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.base.Strings; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -78,7 +78,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -public class OBJModel implements IRetexturableModel, IModelCustomData +public class OBJModel implements IModel { //private Gson GSON = new GsonBuilder().create(); private MaterialLibrary matLib; @@ -97,12 +97,6 @@ public class OBJModel implements IRetexturableModel, IModelCustomData this.customData = customData; } - @Override - public Collection getDependencies() - { - return Collections.emptyList(); - } - @Override public Collection getTextures() { @@ -1081,7 +1075,7 @@ public class OBJModel implements IRetexturableModel, IModelCustomData for (Face f : this.faces) { // if (minUVBounds != null && maxUVBounds != null) f.normalizeUVs(minUVBounds, maxUVBounds); - faceSet.add(f.bake(transform.or(TRSRTransformation.identity()))); + faceSet.add(f.bake(transform.orElse(TRSRTransformation.identity()))); } return faceSet; } @@ -1142,7 +1136,7 @@ public class OBJModel implements IRetexturableModel, IModelCustomData public Optional apply(Optional part) { if (parent != null) return parent.apply(part); - return Optional.absent(); + return Optional.empty(); } public Map getVisibilityMap() @@ -1282,7 +1276,7 @@ public class OBJModel implements IRetexturableModel, IModelCustomData } } - public class OBJBakedModel implements IPerspectiveAwareModel + public class OBJBakedModel implements IBakedModel { private final OBJModel model; private IModelState state; @@ -1335,7 +1329,7 @@ public class OBJModel implements IRetexturableModel, IModelCustomData List quads = Lists.newArrayList(); Collections.synchronizedSet(new LinkedHashSet()); Set faces = Collections.synchronizedSet(new LinkedHashSet()); - Optional transform = Optional.absent(); + Optional transform = Optional.empty(); for (Group g : this.model.getMatLib().getGroups().values()) { // g.minUVBounds = this.model.getMatLib().minUVBounds; @@ -1351,7 +1345,7 @@ public class OBJModel implements IRetexturableModel, IModelCustomData OBJState state = (OBJState) modelState; if (state.parent != null) { - transform = state.parent.apply(Optional.absent()); + transform = state.parent.apply(Optional.empty()); } //TODO: can this be replaced by updateStateVisibilityMap(OBJState)? if (state.getGroupNamesFromMap().contains(Group.ALL)) @@ -1388,7 +1382,7 @@ public class OBJModel implements IRetexturableModel, IModelCustomData } else { - transform = modelState.apply(Optional.absent()); + transform = modelState.apply(Optional.empty()); faces.addAll(g.applyTransform(transform)); } } @@ -1487,12 +1481,6 @@ public class OBJModel implements IRetexturableModel, IModelCustomData return this.sprite; } - @Override - public ItemCameraTransforms getItemCameraTransforms() - { - return ItemCameraTransforms.DEFAULT; - } - // FIXME: merge with getQuads /* @Override public OBJBakedModel handleBlockState(IBlockState state) @@ -1580,7 +1568,7 @@ public class OBJModel implements IRetexturableModel, IModelCustomData @Override public Pair handlePerspective(TransformType cameraTransformType) { - return IPerspectiveAwareModel.MapWrapper.handlePerspective(this, state, cameraTransformType); + return PerspectiveMapWrapper.handlePerspective(this, state, cameraTransformType); } @Override @@ -1607,10 +1595,4 @@ public class OBJModel implements IRetexturableModel, IModelCustomData this.modelLocation = modelLocation; } } - - @Override - public IModelState getDefaultState() - { - return TRSRTransformation.identity(); - } } diff --git a/src/main/java/net/minecraftforge/client/model/obj/package-info.java b/src/main/java/net/minecraftforge/client/model/obj/package-info.java new file mode 100644 index 000000000..bc1adf192 --- /dev/null +++ b/src/main/java/net/minecraftforge/client/model/obj/package-info.java @@ -0,0 +1,6 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package net.minecraftforge.client.model.obj; + +import mcp.MethodsReturnNonnullByDefault; +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/net/minecraftforge/client/model/package-info.java b/src/main/java/net/minecraftforge/client/model/package-info.java new file mode 100644 index 000000000..4bafa744f --- /dev/null +++ b/src/main/java/net/minecraftforge/client/model/package-info.java @@ -0,0 +1,6 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package net.minecraftforge.client.model; + +import mcp.MethodsReturnNonnullByDefault; +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/BlockInfo.java b/src/main/java/net/minecraftforge/client/model/pipeline/BlockInfo.java index c543f9c35..cb44ff78b 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/BlockInfo.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/BlockInfo.java @@ -68,12 +68,6 @@ public class BlockInfo shz = (float) offset.z; } - @Deprecated - public void updateShift(boolean ignoreY) - { - updateShift(); - } - public void setWorld(IBlockAccess world) { this.world = world; diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/ForgeBlockModelRenderer.java b/src/main/java/net/minecraftforge/client/model/pipeline/ForgeBlockModelRenderer.java index eecc2041c..a6a7ed4d2 100644 --- a/src/main/java/net/minecraftforge/client/model/pipeline/ForgeBlockModelRenderer.java +++ b/src/main/java/net/minecraftforge/client/model/pipeline/ForgeBlockModelRenderer.java @@ -52,10 +52,10 @@ public class ForgeBlockModelRenderer extends BlockModelRenderer } }; - private final ThreadLocal wrFlat = new ThreadLocal(); - private final ThreadLocal wrSmooth = new ThreadLocal(); - private final ThreadLocal lastRendererFlat = new ThreadLocal(); - private final ThreadLocal lastRendererSmooth = new ThreadLocal(); + private final ThreadLocal wrFlat = new ThreadLocal<>(); + private final ThreadLocal wrSmooth = new ThreadLocal<>(); + private final ThreadLocal lastRendererFlat = new ThreadLocal<>(); + private final ThreadLocal lastRendererSmooth = new ThreadLocal<>(); private final BlockColors colors; diff --git a/src/main/java/net/minecraftforge/client/model/pipeline/package-info.java b/src/main/java/net/minecraftforge/client/model/pipeline/package-info.java new file mode 100644 index 000000000..5bbacc744 --- /dev/null +++ b/src/main/java/net/minecraftforge/client/model/pipeline/package-info.java @@ -0,0 +1,6 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package net.minecraftforge.client.model.pipeline; + +import mcp.MethodsReturnNonnullByDefault; +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/net/minecraftforge/common/ForgeChunkManager.java b/src/main/java/net/minecraftforge/common/ForgeChunkManager.java index 33c4205e5..135389953 100644 --- a/src/main/java/net/minecraftforge/common/ForgeChunkManager.java +++ b/src/main/java/net/minecraftforge/common/ForgeChunkManager.java @@ -26,6 +26,7 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.UUID; @@ -53,7 +54,7 @@ import net.minecraftforge.fml.common.eventhandler.Event; import org.apache.logging.log4j.Level; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.google.common.collect.ArrayListMultimap; @@ -129,14 +130,7 @@ public class ForgeChunkManager final ImmutableSetMultimap persistentChunksFor = getPersistentChunksFor(world); final ImmutableSet.Builder builder = ImmutableSet.builder(); world.profiler.startSection("forcedChunkLoading"); - builder.addAll(Iterators.transform(persistentChunksFor.keys().iterator(), new Function() { - @Nullable - @Override - public Chunk apply(@Nullable ChunkPos input) - { - return input == null ? null : world.getChunkFromChunkCoords(input.x, input.z); - } - })); + builder.addAll(persistentChunksFor.keys().stream().filter(Objects::nonNull).map(input -> world.getChunkFromChunkCoords(input.x, input.z)).iterator()); world.profiler.endStartSection("regularChunkLoading"); builder.addAll(chunkIterator); world.profiler.endSection(); diff --git a/src/main/java/net/minecraftforge/common/animation/TimeValues.java b/src/main/java/net/minecraftforge/common/animation/TimeValues.java index 2da47f94d..8c7abfcc2 100644 --- a/src/main/java/net/minecraftforge/common/animation/TimeValues.java +++ b/src/main/java/net/minecraftforge/common/animation/TimeValues.java @@ -24,7 +24,7 @@ import java.util.regex.Pattern; import net.minecraft.util.IStringSerializable; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; import com.google.gson.Gson; diff --git a/src/main/java/net/minecraftforge/common/capabilities/CapabilityManager.java b/src/main/java/net/minecraftforge/common/capabilities/CapabilityManager.java index b977afdee..b1a9b2eac 100644 --- a/src/main/java/net/minecraftforge/common/capabilities/CapabilityManager.java +++ b/src/main/java/net/minecraftforge/common/capabilities/CapabilityManager.java @@ -29,7 +29,7 @@ import java.util.concurrent.Callable; import org.apache.logging.log4j.Level; import org.objectweb.asm.Type; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Preconditions; import com.google.common.base.Throwables; import com.google.common.collect.Lists; diff --git a/src/main/java/net/minecraftforge/common/model/IModelState.java b/src/main/java/net/minecraftforge/common/model/IModelState.java index 52853850c..936785bfc 100644 --- a/src/main/java/net/minecraftforge/common/model/IModelState.java +++ b/src/main/java/net/minecraftforge/common/model/IModelState.java @@ -19,7 +19,7 @@ package net.minecraftforge.common.model; -import com.google.common.base.Optional; +import java.util.Optional; /* * Represents the dynamic information associated with the model. diff --git a/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java b/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java index ab8c44ab9..3d48270f4 100644 --- a/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java +++ b/src/main/java/net/minecraftforge/common/model/TRSRTransformation.java @@ -42,7 +42,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Triple; import com.google.common.base.MoreObjects; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.Maps; /* @@ -563,7 +563,7 @@ public final class TRSRTransformation implements IModelState, ITransformation { if(part.isPresent()) { - return Optional.absent(); + return Optional.empty(); } return Optional.of(this); } diff --git a/src/main/java/net/minecraftforge/common/model/animation/AnimationStateMachine.java b/src/main/java/net/minecraftforge/common/model/animation/AnimationStateMachine.java index 15fe73b1b..ddcc7ee7f 100644 --- a/src/main/java/net/minecraftforge/common/model/animation/AnimationStateMachine.java +++ b/src/main/java/net/minecraftforge/common/model/animation/AnimationStateMachine.java @@ -19,18 +19,24 @@ package net.minecraftforge.common.model.animation; -import java.io.IOException; -import java.io.InputStreamReader; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.Collection; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -import com.google.common.base.Supplier; -import com.google.common.collect.*; -import com.google.gson.*; +import com.google.common.base.Predicate; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimaps; +import com.google.common.collect.Sets; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; @@ -45,19 +51,18 @@ import net.minecraftforge.common.util.JsonUtils; import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; - import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Triple; -import org.apache.logging.log4j.Level; - -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.gson.annotations.SerializedName; import javax.annotation.Nullable; +import java.io.IOException; +import java.io.InputStreamReader; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.function.Function; public final class AnimationStateMachine implements IAnimationStateMachine { @@ -88,21 +93,7 @@ public final class AnimationStateMachine implements IAnimationStateMachine @Deprecated public AnimationStateMachine(ImmutableMap parameters, ImmutableMap clips, ImmutableList states, ImmutableMap transitions, String startState) { - this(parameters, clips, states, ImmutableMultimap.copyOf(Multimaps.newSetMultimap(Maps.transformValues(transitions, new Function>() - { - @Override - public Collection apply(String input) - { - return ImmutableSet.of(input); - } - }), new Supplier>() - { - @Override - public Set get() - { - return Sets.newHashSet(); - } - })), startState); + this(parameters, clips, states, ImmutableMultimap.copyOf(Multimaps.newSetMultimap(Maps.transformValues(transitions, ImmutableSet::of), Sets::newHashSet)), startState); } public AnimationStateMachine(ImmutableMap parameters, ImmutableMap clips, ImmutableList states, ImmutableMultimap transitions, String startState) diff --git a/src/main/java/net/minecraftforge/common/model/animation/Clips.java b/src/main/java/net/minecraftforge/common/model/animation/Clips.java index 276e4f759..c1cb5a803 100644 --- a/src/main/java/net/minecraftforge/common/model/animation/Clips.java +++ b/src/main/java/net/minecraftforge/common/model/animation/Clips.java @@ -27,7 +27,6 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModel; import net.minecraftforge.client.model.ModelLoaderRegistry; -import net.minecraftforge.client.model.animation.IAnimatedModel; import net.minecraftforge.common.animation.Event; import net.minecraftforge.common.animation.ITimeValue; import net.minecraftforge.common.model.IModelPart; @@ -40,9 +39,9 @@ import net.minecraftforge.fml.relauncher.SideOnly; import org.apache.commons.lang3.NotImplementedException; import org.apache.commons.lang3.tuple.Pair; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Objects; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Ordering; @@ -93,15 +92,12 @@ public final class Clips public static IClip getModelClipNode(ResourceLocation modelLocation, String clipName) { IModel model = ModelLoaderRegistry.getModelOrMissing(modelLocation); - if(model instanceof IAnimatedModel) + Optional clip = model.getClip(clipName); + if (clip.isPresent()) { - Optional clip = ((IAnimatedModel)model).getClip(clipName); - if(clip.isPresent()) - { - return new ModelClip(clip.get(), modelLocation, clipName); - } - FMLLog.log.error("Unable to find clip {} in the model {}", clipName, modelLocation); + return new ModelClip(clip.get(), modelLocation, clipName); } + FMLLog.log.error("Unable to find clip {} in the model {}", clipName, modelLocation); // FIXME: missing clip? return new ModelClip(IdentityClip.INSTANCE, modelLocation, clipName); } @@ -312,7 +308,7 @@ public final class Clips { if(!part.isPresent() || !(part.get() instanceof IJoint)) { - return Optional.absent(); + return Optional.empty(); } IJoint joint = (IJoint)part.get(); // TODO: Cache clip application? diff --git a/src/main/java/net/minecraftforge/common/model/animation/IJoint.java b/src/main/java/net/minecraftforge/common/model/animation/IJoint.java index cdd00681c..36f4ef699 100644 --- a/src/main/java/net/minecraftforge/common/model/animation/IJoint.java +++ b/src/main/java/net/minecraftforge/common/model/animation/IJoint.java @@ -19,7 +19,7 @@ package net.minecraftforge.common.model.animation; -import com.google.common.base.Optional; +import java.util.Optional; import net.minecraftforge.common.model.IModelPart; import net.minecraftforge.common.model.TRSRTransformation; diff --git a/src/main/java/net/minecraftforge/common/property/ExtendedBlockState.java b/src/main/java/net/minecraftforge/common/property/ExtendedBlockState.java index 373a96239..6f92b9989 100644 --- a/src/main/java/net/minecraftforge/common/property/ExtendedBlockState.java +++ b/src/main/java/net/minecraftforge/common/property/ExtendedBlockState.java @@ -29,7 +29,7 @@ import net.minecraft.block.properties.IProperty; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -65,7 +65,7 @@ public class ExtendedBlockState extends BlockStateContainer ImmutableMap.Builder, Optional> builder = ImmutableMap.builder(); for(IUnlistedProperty p : unlistedProperties) { - builder.put(p, Optional.absent()); + builder.put(p, Optional.empty()); } return builder.build(); } @@ -111,7 +111,7 @@ public class ExtendedBlockState extends BlockStateContainer } Map, Comparable> map = Maps.newHashMap(getProperties()); map.put(property, value); - if (Iterables.all(unlistedProperties.values(), Predicates.>equalTo(Optional.absent()))) + if (Iterables.all(unlistedProperties.values(), Predicates.>equalTo(Optional.empty()))) { // no dynamic properties present, looking up in the normal table return normalMap.get(map); } @@ -134,8 +134,8 @@ public class ExtendedBlockState extends BlockStateContainer throw new IllegalArgumentException("Cannot set unlisted property " + property + " to " + value + " on block " + Block.REGISTRY.getNameForObject(getBlock()) + ", it is not an allowed value"); } Map, Optional> newMap = new HashMap, Optional>(unlistedProperties); - newMap.put(property, Optional.fromNullable(value)); - if(Iterables.all(newMap.values(), Predicates.>equalTo(Optional.absent()))) + newMap.put(property, Optional.ofNullable(value)); + if(Iterables.all(newMap.values(), Predicates.>equalTo(Optional.empty()))) { // no dynamic properties, lookup normal state return (IExtendedBlockState) normalMap.get(getProperties()); } @@ -155,7 +155,7 @@ public class ExtendedBlockState extends BlockStateContainer { throw new IllegalArgumentException("Cannot get unlisted property " + property + " as it does not exist in " + getBlock().getBlockState()); } - return property.getType().cast(this.unlistedProperties.get(property).orNull()); + return property.getType().cast(this.unlistedProperties.get(property).orElse(null)); } @Override diff --git a/src/main/java/net/minecraftforge/common/property/IExtendedBlockState.java b/src/main/java/net/minecraftforge/common/property/IExtendedBlockState.java index 0fa25116f..ffdba719b 100644 --- a/src/main/java/net/minecraftforge/common/property/IExtendedBlockState.java +++ b/src/main/java/net/minecraftforge/common/property/IExtendedBlockState.java @@ -23,7 +23,7 @@ import java.util.Collection; import net.minecraft.block.state.IBlockState; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.ImmutableMap; public interface IExtendedBlockState extends IBlockState diff --git a/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java b/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java index 632c1ade3..3917eece7 100644 --- a/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java +++ b/src/main/java/net/minecraftforge/fml/client/FMLClientHandler.java @@ -109,7 +109,6 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.registries.GameData; import org.apache.commons.io.IOUtils; -import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.lwjgl.LWJGLUtil; diff --git a/src/main/java/net/minecraftforge/fml/client/FMLFileResourcePack.java b/src/main/java/net/minecraftforge/fml/client/FMLFileResourcePack.java index 370942cbc..74ff7e78c 100644 --- a/src/main/java/net/minecraftforge/fml/client/FMLFileResourcePack.java +++ b/src/main/java/net/minecraftforge/fml/client/FMLFileResourcePack.java @@ -24,14 +24,12 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import javax.imageio.ImageIO; import net.minecraft.client.resources.FileResourcePack; import net.minecraftforge.fml.common.FMLContainerHolder; -import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.ModContainer; import com.google.common.base.Charsets; diff --git a/src/main/java/net/minecraftforge/fml/client/FMLFolderResourcePack.java b/src/main/java/net/minecraftforge/fml/client/FMLFolderResourcePack.java index 8a343b6e3..bbf680ce6 100644 --- a/src/main/java/net/minecraftforge/fml/client/FMLFolderResourcePack.java +++ b/src/main/java/net/minecraftforge/fml/client/FMLFolderResourcePack.java @@ -24,14 +24,12 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import javax.imageio.ImageIO; import net.minecraft.client.resources.FolderResourcePack; import net.minecraftforge.fml.common.FMLContainerHolder; -import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.ModContainer; import com.google.common.base.Charsets; diff --git a/src/main/java/net/minecraftforge/fml/client/GuiErrorBase.java b/src/main/java/net/minecraftforge/fml/client/GuiErrorBase.java index 7f993a715..f10f1271e 100644 --- a/src/main/java/net/minecraftforge/fml/client/GuiErrorBase.java +++ b/src/main/java/net/minecraftforge/fml/client/GuiErrorBase.java @@ -24,7 +24,6 @@ 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 org.apache.logging.log4j.Level; import java.awt.*; import java.io.File; diff --git a/src/main/java/net/minecraftforge/fml/client/GuiModList.java b/src/main/java/net/minecraftforge/fml/client/GuiModList.java index 7b6b462e6..afaca2ae8 100644 --- a/src/main/java/net/minecraftforge/fml/client/GuiModList.java +++ b/src/main/java/net/minecraftforge/fml/client/GuiModList.java @@ -61,7 +61,6 @@ import net.minecraftforge.fml.common.ModContainer.Disableable; import net.minecraftforge.fml.common.versioning.ComparableVersion; import static net.minecraft.util.text.TextFormatting.*; -import org.apache.logging.log4j.Level; import org.lwjgl.input.Mouse; import com.google.common.base.Strings; diff --git a/src/main/java/net/minecraftforge/fml/client/GuiOldSaveLoadConfirm.java b/src/main/java/net/minecraftforge/fml/client/GuiOldSaveLoadConfirm.java index bb5fabdb5..c9d51f549 100644 --- a/src/main/java/net/minecraftforge/fml/client/GuiOldSaveLoadConfirm.java +++ b/src/main/java/net/minecraftforge/fml/client/GuiOldSaveLoadConfirm.java @@ -23,17 +23,13 @@ import java.io.File; import java.io.IOException; import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.GuiLabel; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; -import net.minecraft.world.WorldSettings; import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.StartupQuery; import net.minecraftforge.fml.common.ZipperUtil; -import org.apache.logging.log4j.Level; - public class GuiOldSaveLoadConfirm extends GuiYesNo implements GuiYesNoCallback { private String dirName; diff --git a/src/main/java/net/minecraftforge/fml/client/GuiWrongMinecraft.java b/src/main/java/net/minecraftforge/fml/client/GuiWrongMinecraft.java index da2a17ebe..76c2c8760 100644 --- a/src/main/java/net/minecraftforge/fml/client/GuiWrongMinecraft.java +++ b/src/main/java/net/minecraftforge/fml/client/GuiWrongMinecraft.java @@ -19,7 +19,6 @@ package net.minecraftforge.fml.client; -import net.minecraft.client.gui.GuiErrorScreen; import net.minecraft.client.resources.I18n; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.fml.common.Loader; diff --git a/src/main/java/net/minecraftforge/fml/client/SplashProgress.java b/src/main/java/net/minecraftforge/fml/client/SplashProgress.java index efb809b5e..ca69fa7f7 100644 --- a/src/main/java/net/minecraftforge/fml/client/SplashProgress.java +++ b/src/main/java/net/minecraftforge/fml/client/SplashProgress.java @@ -28,8 +28,6 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; -import java.io.PrintStream; -import java.io.PrintWriter; import java.lang.Thread.UncaughtExceptionHandler; import java.nio.IntBuffer; import java.util.Iterator; @@ -67,7 +65,6 @@ import net.minecraftforge.fml.common.asm.FMLSanityChecker; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.Level; import org.lwjgl.BufferUtils; import org.lwjgl.LWJGLException; import org.lwjgl.opengl.Display; diff --git a/src/main/java/net/minecraftforge/fml/client/config/GuiEditArrayEntries.java b/src/main/java/net/minecraftforge/fml/client/config/GuiEditArrayEntries.java index ccde2d3aa..d302f4526 100644 --- a/src/main/java/net/minecraftforge/fml/client/config/GuiEditArrayEntries.java +++ b/src/main/java/net/minecraftforge/fml/client/config/GuiEditArrayEntries.java @@ -31,7 +31,6 @@ import net.minecraft.util.text.TextFormatting; import net.minecraftforge.fml.client.config.GuiConfigEntries.ArrayEntry; import net.minecraftforge.fml.common.FMLLog; -import org.apache.logging.log4j.Level; import org.lwjgl.input.Keyboard; import static net.minecraftforge.fml.client.config.GuiUtils.INVALID; diff --git a/src/main/java/net/minecraftforge/fml/common/FMLModContainer.java b/src/main/java/net/minecraftforge/fml/common/FMLModContainer.java index 773826120..07e490ea1 100644 --- a/src/main/java/net/minecraftforge/fml/common/FMLModContainer.java +++ b/src/main/java/net/minecraftforge/fml/common/FMLModContainer.java @@ -63,7 +63,7 @@ import org.apache.logging.log4j.Logger; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Strings; import com.google.common.base.Throwables; import com.google.common.collect.ArrayListMultimap; diff --git a/src/main/java/net/minecraftforge/fml/common/LoadController.java b/src/main/java/net/minecraftforge/fml/common/LoadController.java index e130dbadd..e612ceb24 100644 --- a/src/main/java/net/minecraftforge/fml/common/LoadController.java +++ b/src/main/java/net/minecraftforge/fml/common/LoadController.java @@ -22,9 +22,11 @@ package net.minecraftforge.fml.common; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.stream.Collectors; import net.minecraftforge.fml.common.LoaderState.ModState; import net.minecraftforge.fml.common.ProgressManager.ProgressBar; @@ -33,16 +35,13 @@ import net.minecraftforge.fml.common.event.FMLLoadEvent; import net.minecraftforge.fml.common.event.FMLModDisabledEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLStateEvent; -import net.minecraftforge.fml.common.functions.ArtifactVersionNameFunction; import net.minecraftforge.fml.common.versioning.ArtifactVersion; -import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.ThreadContext; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.BiMap; -import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; @@ -236,7 +235,7 @@ public class LoadController private void sendEventToModContainer(FMLEvent stateEvent, ModContainer mc) { String modId = mc.getModId(); - Collection requirements = Collections2.transform(mc.getRequirements(),new ArtifactVersionNameFunction()); + Collection requirements = mc.getRequirements().stream().map(ArtifactVersion::getLabel).collect(Collectors.toCollection(HashSet::new)); for (ArtifactVersion av : mc.getDependencies()) { if (av.getLabel()!= null && requirements.contains(av.getLabel()) && modStates.containsEntry(av.getLabel(),ModState.ERRORED)) diff --git a/src/main/java/net/minecraftforge/fml/common/Loader.java b/src/main/java/net/minecraftforge/fml/common/Loader.java index 5a5f628a1..c24ee786e 100644 --- a/src/main/java/net/minecraftforge/fml/common/Loader.java +++ b/src/main/java/net/minecraftforge/fml/common/Loader.java @@ -46,8 +46,6 @@ import net.minecraftforge.fml.common.discovery.ModDiscoverer; import net.minecraftforge.fml.common.event.FMLInterModComms; import net.minecraftforge.fml.common.event.FMLLoadEvent; import net.minecraftforge.fml.common.event.FMLModIdMappingEvent; -import net.minecraftforge.fml.common.functions.ArtifactVersionNameFunction; -import net.minecraftforge.fml.common.functions.ModIdFunction; import net.minecraftforge.fml.common.registry.*; import net.minecraftforge.fml.common.toposort.ModSorter; import net.minecraftforge.fml.common.toposort.ModSortingException; @@ -64,7 +62,7 @@ import org.apache.commons.io.IOUtils; import org.apache.logging.log4j.Level; import com.google.common.base.CharMatcher; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.collect.ArrayListMultimap; @@ -248,7 +246,7 @@ public class Loader wrongMinecraftExceptions.add(ret); continue; } - Map names = Maps.uniqueIndex(mod.getRequirements(), new ArtifactVersionNameFunction()); + Map names = Maps.uniqueIndex(mod.getRequirements(), ArtifactVersion::getLabel); Set versionMissingMods = Sets.newHashSet(); Set missingMods = Sets.difference(names.keySet(), modVersions.keySet()); @@ -404,7 +402,7 @@ public class Loader mods.addAll(discoverer.identifyMods()); identifyDuplicates(mods); - namedMods = Maps.uniqueIndex(mods, new ModIdFunction()); + namedMods = Maps.uniqueIndex(mods, ModContainer::getModId); FMLLog.log.info("Forge Mod Loader has identified {} mod{} to load", mods.size(), mods.size() != 1 ? "s" : ""); return discoverer; } @@ -521,7 +519,7 @@ public class Loader { modController = new LoadController(this); mods = Lists.newArrayList(containers); - namedMods = Maps.uniqueIndex(mods, new ModIdFunction()); + namedMods = Maps.uniqueIndex(mods, ModContainer::getModId); modController.transition(LoaderState.LOADING, false); modController.transition(LoaderState.CONSTRUCTING, false); ObjectHolderRegistry.INSTANCE.findObjectHolders(new ASMDataTable()); @@ -652,14 +650,7 @@ public class Loader modStates.putAll(sysPropertyStateList); FMLLog.log.debug("After merging, found state information for {} mods", modStates.size()); - Map isEnabled = Maps.transformValues(modStates, new Function() - { - @Override - public Boolean apply(String input) - { - return Boolean.parseBoolean(input); - } - }); + Map isEnabled = Maps.transformValues(modStates, Boolean::parseBoolean); for (Map.Entry entry : isEnabled.entrySet()) { diff --git a/src/main/java/net/minecraftforge/fml/common/ModAPIManager.java b/src/main/java/net/minecraftforge/fml/common/ModAPIManager.java index d6a677bb7..86b97c2e5 100644 --- a/src/main/java/net/minecraftforge/fml/common/ModAPIManager.java +++ b/src/main/java/net/minecraftforge/fml/common/ModAPIManager.java @@ -20,16 +20,17 @@ package net.minecraftforge.fml.common; import java.io.File; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import net.minecraftforge.fml.common.asm.transformers.ModAPITransformer; import net.minecraftforge.fml.common.discovery.ASMDataTable; import net.minecraftforge.fml.common.discovery.ModCandidate; import net.minecraftforge.fml.common.discovery.ModDiscoverer; import net.minecraftforge.fml.common.discovery.ASMDataTable.ASMData; -import net.minecraftforge.fml.common.functions.ModIdFunction; import net.minecraftforge.fml.common.versioning.ArtifactVersion; import net.minecraftforge.fml.common.versioning.DefaultArtifactVersion; import net.minecraftforge.fml.common.versioning.VersionParser; @@ -195,7 +196,7 @@ public class ModAPIManager { Set candidates = dataTable.getCandidatesFor(pkg); for (ModCandidate candidate : candidates) { - List candidateIds = Lists.transform(candidate.getContainedMods(), new ModIdFunction()); + List candidateIds = candidate.getContainedMods().stream().map(ModContainer::getModId).collect(Collectors.toCollection(ArrayList::new)); if (!candidateIds.contains(container.ownerMod.getLabel()) && !container.currentReferents.containsAll(candidateIds)) { FMLLog.log.info("Found mod(s) {} containing declared API package {} (owned by {}) without associated API reference",candidateIds, pkg, container.ownerMod); diff --git a/src/main/java/net/minecraftforge/fml/common/ModMetadata.java b/src/main/java/net/minecraftforge/fml/common/ModMetadata.java index c458f9c76..18edcc01d 100644 --- a/src/main/java/net/minecraftforge/fml/common/ModMetadata.java +++ b/src/main/java/net/minecraftforge/fml/common/ModMetadata.java @@ -22,7 +22,6 @@ package net.minecraftforge.fml.common; import java.util.List; import java.util.Set; -import net.minecraftforge.fml.common.functions.ModNameFunction; import net.minecraftforge.fml.common.versioning.ArtifactVersion; import com.google.common.base.Joiner; @@ -84,7 +83,7 @@ public class ModMetadata public String getChildModList() { - return Joiner.on(", ").join(Lists.transform(childMods, new ModNameFunction())); + return Joiner.on(", ").join(childMods.stream().map(ModContainer::getName).iterator()); } public String printableSortingRules() diff --git a/src/main/java/net/minecraftforge/fml/common/asm/transformers/EventSubscriptionTransformer.java b/src/main/java/net/minecraftforge/fml/common/asm/transformers/EventSubscriptionTransformer.java index f589f04bd..235efe483 100644 --- a/src/main/java/net/minecraftforge/fml/common/asm/transformers/EventSubscriptionTransformer.java +++ b/src/main/java/net/minecraftforge/fml/common/asm/transformers/EventSubscriptionTransformer.java @@ -40,8 +40,6 @@ import static org.objectweb.asm.Type.VOID_TYPE; import static org.objectweb.asm.Type.BOOLEAN_TYPE; import static org.objectweb.asm.Type.getMethodDescriptor; -import java.util.List; - import net.minecraft.launchwrapper.IClassTransformer; import net.minecraftforge.fml.common.eventhandler.Event; diff --git a/src/main/java/net/minecraftforge/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java b/src/main/java/net/minecraftforge/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java index df203dafc..188a21ad8 100644 --- a/src/main/java/net/minecraftforge/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java +++ b/src/main/java/net/minecraftforge/fml/common/asm/transformers/deobf/FMLDeobfuscatingRemapper.java @@ -32,7 +32,6 @@ import net.minecraft.launchwrapper.LaunchClassLoader; import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.patcher.ClassPatchManager; -import org.apache.logging.log4j.message.Message; import org.objectweb.asm.ClassReader; import org.objectweb.asm.commons.Remapper; import org.objectweb.asm.tree.ClassNode; diff --git a/src/main/java/net/minecraftforge/fml/common/event/FMLInterModComms.java b/src/main/java/net/minecraftforge/fml/common/event/FMLInterModComms.java index 58a5b5987..bd3a9bbfc 100644 --- a/src/main/java/net/minecraftforge/fml/common/event/FMLInterModComms.java +++ b/src/main/java/net/minecraftforge/fml/common/event/FMLInterModComms.java @@ -19,8 +19,8 @@ package net.minecraftforge.fml.common.event; -import com.google.common.base.Function; -import com.google.common.base.Optional; +import java.util.function.Function; +import java.util.Optional; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; @@ -33,7 +33,6 @@ import net.minecraftforge.fml.common.Mod.Instance; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableList; -import org.apache.logging.log4j.Level; import javax.annotation.Nonnull; @@ -186,14 +185,14 @@ public class FMLInterModComms { @SuppressWarnings("unchecked") public Optional> getFunctionValue(Class functionFrom, Class functionTo) { if (!isFunction) { - return Optional.absent(); + return Optional.empty(); } try { Function f = Class.forName((String) value).asSubclass(Function.class).newInstance(); return Optional.of(f); } catch (Exception e) { FMLLog.log.info("An error occurred instantiating the IMC function. key: {} value: {}, caller: {}", key,value,sender); - return Optional.absent(); + return Optional.empty(); } } diff --git a/src/main/java/net/minecraftforge/fml/common/event/FMLPostInitializationEvent.java b/src/main/java/net/minecraftforge/fml/common/event/FMLPostInitializationEvent.java index 7c7780776..f58c26b5f 100644 --- a/src/main/java/net/minecraftforge/fml/common/event/FMLPostInitializationEvent.java +++ b/src/main/java/net/minecraftforge/fml/common/event/FMLPostInitializationEvent.java @@ -19,16 +19,14 @@ package net.minecraftforge.fml.common.event; -import com.google.common.base.Function; -import com.google.common.base.Optional; -import com.google.common.collect.Lists; +import java.util.Arrays; +import java.util.Objects; +import java.util.Optional; + import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.LoaderState.ModState; -import org.apache.logging.log4j.Level; - -import javax.annotation.Nullable; import java.lang.reflect.Constructor; /** @@ -66,13 +64,7 @@ public class FMLPostInitializationEvent extends FMLStateEvent { if (Loader.isModLoaded(modId)) { - Class[] args = Lists.transform(Lists.newArrayList(arguments),new Function>() { - @Nullable - @Override - public Class apply(@Nullable Object input) { - return input == null ? null : input.getClass(); - } - }).toArray(new Class[0]); + Class[] args = Arrays.stream(arguments).filter(Objects::nonNull).map(Object::getClass).toArray(Class[]::new); try { Class clz = Class.forName(className,true,Loader.instance().getModClassLoader()); @@ -82,9 +74,9 @@ public class FMLPostInitializationEvent extends FMLStateEvent catch (Exception e) { FMLLog.log.info("An error occurred trying to build a soft depend proxy", e); - return Optional.absent(); + return Optional.empty(); } } - return Optional.absent(); + return Optional.empty(); } } diff --git a/src/main/java/net/minecraftforge/fml/common/functions/ArtifactVersionNameFunction.java b/src/main/java/net/minecraftforge/fml/common/functions/ArtifactVersionNameFunction.java deleted file mode 100644 index 72456ebff..000000000 --- a/src/main/java/net/minecraftforge/fml/common/functions/ArtifactVersionNameFunction.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.fml.common.functions; - -import net.minecraftforge.fml.common.versioning.ArtifactVersion; - -import com.google.common.base.Function; - -public class ArtifactVersionNameFunction implements Function { - @Override - public String apply(ArtifactVersion v) - { - return v.getLabel(); - } -} diff --git a/src/main/java/net/minecraftforge/fml/common/functions/GenericIterableFactory.java b/src/main/java/net/minecraftforge/fml/common/functions/GenericIterableFactory.java deleted file mode 100644 index 356a9f425..000000000 --- a/src/main/java/net/minecraftforge/fml/common/functions/GenericIterableFactory.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.fml.common.functions; - -import java.util.Iterator; - -import com.google.common.collect.Iterables; -import com.google.common.collect.Iterators; - -public class GenericIterableFactory { - public static Iterable newCastingIterable(final Iterator input, final Class type) - { - return new Iterable() - { - @Override - public Iterator iterator() - { - return Iterators.transform(input, new TypeCastFunction(type)); - } - }; - } - - public static Iterable newCastingIterable(Iterable input, Class type) - { - return Iterables.transform(input, new TypeCastFunction(type)); - } -} diff --git a/src/main/java/net/minecraftforge/fml/common/functions/ModIdFunction.java b/src/main/java/net/minecraftforge/fml/common/functions/ModIdFunction.java deleted file mode 100644 index 72be18729..000000000 --- a/src/main/java/net/minecraftforge/fml/common/functions/ModIdFunction.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.fml.common.functions; - -import net.minecraftforge.fml.common.ModContainer; - -import com.google.common.base.Function; - -public final class ModIdFunction implements Function -{ - @Override - public String apply(ModContainer container) - { - return container.getModId(); - } -} diff --git a/src/main/java/net/minecraftforge/fml/common/functions/ModNameFunction.java b/src/main/java/net/minecraftforge/fml/common/functions/ModNameFunction.java deleted file mode 100644 index 42b0058d6..000000000 --- a/src/main/java/net/minecraftforge/fml/common/functions/ModNameFunction.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.fml.common.functions; - -import net.minecraftforge.fml.common.ModContainer; - -import com.google.common.base.Function; - -public class ModNameFunction implements Function -{ - @Override - public String apply(ModContainer input) - { - return input.getName(); - } - -} diff --git a/src/main/java/net/minecraftforge/fml/common/functions/TypeCastFunction.java b/src/main/java/net/minecraftforge/fml/common/functions/TypeCastFunction.java deleted file mode 100644 index c07df3a3f..000000000 --- a/src/main/java/net/minecraftforge/fml/common/functions/TypeCastFunction.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.fml.common.functions; - -import com.google.common.base.Function; - -public class TypeCastFunction implements Function { - private Class type; - public TypeCastFunction(Class type) - { - this.type = type; - } - - @Override - public T apply(Object input) - { - return type.cast(input); - } -} diff --git a/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java b/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java index 4fa492002..a132deb0c 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java +++ b/src/main/java/net/minecraftforge/fml/common/network/internal/FMLProxyPacket.java @@ -40,8 +40,6 @@ import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.network.handshake.NetworkDispatcher; import net.minecraftforge.fml.relauncher.Side; -import org.apache.logging.log4j.Level; - import com.google.common.collect.ConcurrentHashMultiset; import com.google.common.collect.Lists; import com.google.common.collect.Multiset; diff --git a/src/main/java/net/minecraftforge/fml/common/network/internal/HandshakeCompletionHandler.java b/src/main/java/net/minecraftforge/fml/common/network/internal/HandshakeCompletionHandler.java index e0cf96db4..04157fc0c 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/internal/HandshakeCompletionHandler.java +++ b/src/main/java/net/minecraftforge/fml/common/network/internal/HandshakeCompletionHandler.java @@ -23,8 +23,6 @@ import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.network.handshake.NetworkDispatcher; import net.minecraftforge.fml.common.network.internal.FMLMessage.CompleteHandshake; -import org.apache.logging.log4j.Level; - import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.ChannelHandler.Sharable; diff --git a/src/main/java/net/minecraftforge/fml/common/network/internal/NetworkModHolder.java b/src/main/java/net/minecraftforge/fml/common/network/internal/NetworkModHolder.java index cf6607ebd..4c80a410b 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/internal/NetworkModHolder.java +++ b/src/main/java/net/minecraftforge/fml/common/network/internal/NetworkModHolder.java @@ -33,8 +33,6 @@ import net.minecraftforge.fml.common.versioning.InvalidVersionSpecificationExcep import net.minecraftforge.fml.common.versioning.VersionRange; import net.minecraftforge.fml.relauncher.Side; -import org.apache.logging.log4j.Level; - import com.google.common.base.Preconditions; import com.google.common.base.Strings; import com.google.common.collect.ImmutableMap; diff --git a/src/main/java/net/minecraftforge/fml/common/network/internal/OpenGuiHandler.java b/src/main/java/net/minecraftforge/fml/common/network/internal/OpenGuiHandler.java index bd7e1a7b9..cc93e47be 100644 --- a/src/main/java/net/minecraftforge/fml/common/network/internal/OpenGuiHandler.java +++ b/src/main/java/net/minecraftforge/fml/common/network/internal/OpenGuiHandler.java @@ -19,8 +19,6 @@ package net.minecraftforge.fml.common.network.internal; -import org.apache.logging.log4j.Level; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.IThreadListener; import net.minecraftforge.fml.client.FMLClientHandler; diff --git a/src/main/java/net/minecraftforge/fml/common/registry/EntityRegistry.java b/src/main/java/net/minecraftforge/fml/common/registry/EntityRegistry.java index b90220e0c..a8e8aeba5 100644 --- a/src/main/java/net/minecraftforge/fml/common/registry/EntityRegistry.java +++ b/src/main/java/net/minecraftforge/fml/common/registry/EntityRegistry.java @@ -36,7 +36,7 @@ import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.ModContainer; import net.minecraftforge.fml.common.network.internal.FMLMessage.EntitySpawnMessage; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; diff --git a/src/main/java/net/minecraftforge/fml/server/FMLServerHandler.java b/src/main/java/net/minecraftforge/fml/server/FMLServerHandler.java index 9b0be0bdd..bb047cb0f 100644 --- a/src/main/java/net/minecraftforge/fml/server/FMLServerHandler.java +++ b/src/main/java/net/minecraftforge/fml/server/FMLServerHandler.java @@ -44,7 +44,6 @@ import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.ModContainer; import net.minecraftforge.fml.common.StartupQuery; import net.minecraftforge.fml.common.eventhandler.EventBus; -import net.minecraftforge.fml.common.functions.GenericIterableFactory; import net.minecraftforge.fml.common.network.FMLNetworkEvent; import net.minecraftforge.fml.relauncher.Side; @@ -190,7 +189,7 @@ public class FMLServerHandler implements IFMLSidedHandler // rudimentary command processing, check for fml confirm/cancel and stop commands synchronized (dedServer.pendingCommandList) { - for (Iterator it = GenericIterableFactory.newCastingIterable(dedServer.pendingCommandList, PendingCommand.class).iterator(); it.hasNext(); ) + for (Iterator it = dedServer.pendingCommandList.iterator(); it.hasNext(); ) { String cmd = it.next().command.trim().toLowerCase(); diff --git a/src/main/java/net/minecraftforge/server/console/ConsoleFormatter.java b/src/main/java/net/minecraftforge/server/console/ConsoleFormatter.java index fc13a3c90..638b9e8ef 100644 --- a/src/main/java/net/minecraftforge/server/console/ConsoleFormatter.java +++ b/src/main/java/net/minecraftforge/server/console/ConsoleFormatter.java @@ -24,7 +24,7 @@ import java.util.regex.Pattern; import org.fusesource.jansi.Ansi; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.collect.ImmutableMap; import net.minecraft.util.text.TextFormatting; diff --git a/src/main/java/net/minecraftforge/server/console/TerminalConsoleAppender.java b/src/main/java/net/minecraftforge/server/console/TerminalConsoleAppender.java index 53b0d155e..5a7160b3d 100644 --- a/src/main/java/net/minecraftforge/server/console/TerminalConsoleAppender.java +++ b/src/main/java/net/minecraftforge/server/console/TerminalConsoleAppender.java @@ -39,7 +39,7 @@ import org.apache.logging.log4j.core.layout.PatternLayout; import org.apache.logging.log4j.util.PropertiesUtil; import org.fusesource.jansi.AnsiConsole; -import com.google.common.base.Function; +import java.util.function.Function; import com.google.common.base.Functions; import jline.TerminalFactory; diff --git a/src/main/java/net/minecraftforge/server/console/TerminalHandler.java b/src/main/java/net/minecraftforge/server/console/TerminalHandler.java index a8e45641a..055945ce3 100644 --- a/src/main/java/net/minecraftforge/server/console/TerminalHandler.java +++ b/src/main/java/net/minecraftforge/server/console/TerminalHandler.java @@ -24,7 +24,7 @@ import java.io.IOException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import com.google.common.base.Function; +import java.util.function.Function; import jline.console.ConsoleReader; import net.minecraft.server.dedicated.DedicatedServer; diff --git a/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java b/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java index fc5034776..3757420ab 100644 --- a/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelAnimationDebug.java @@ -186,40 +186,38 @@ public class ModelAnimationDebug public static void registerItems(RegistryEvent.Register event) { event.getRegistry().register( - new ItemBlock(TEST_BLOCK) + new ItemBlock(TEST_BLOCK) + { + @Override + public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) { - @Override - public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) - { - return new ItemAnimationHolder(); - } - }.setRegistryName(TEST_BLOCK.getRegistryName()) + return new ItemAnimationHolder(); + } + }.setRegistryName(TEST_BLOCK.getRegistryName()) ); } - } - - @SubscribeEvent - public void registerModels(ModelRegistryEvent event) - { - B3DLoader.INSTANCE.addDomain(MODID); - ModelLoader.setCustomModelResourceLocation(TEST_ITEM, 0, new ModelResourceLocation(TEST_ITEM.getRegistryName(), "inventory")); - ClientRegistry.bindTileEntitySpecialRenderer(Chest.class, new AnimationTESR() + @SubscribeEvent + public static void registerModels(ModelRegistryEvent event) { - @Override - public void handleEvents(Chest chest, float time, Iterable pastEvents) + B3DLoader.INSTANCE.addDomain(MODID); + ModelLoader.setCustomModelResourceLocation(TEST_ITEM, 0, new ModelResourceLocation(TEST_ITEM.getRegistryName(), "inventory")); + ClientRegistry.bindTileEntitySpecialRenderer(Chest.class, new AnimationTESR() { - chest.handleEvents(time, pastEvents); - } - }); - String entityName = MODID + ":entity_chest"; - //EntityRegistry.registerGlobalEntityID(EntityChest.class, entityName, EntityRegistry.findGlobalUniqueEntityId()); - EntityRegistry.registerModEntity(new ResourceLocation(entityName), EntityChest.class, entityName, 0, ModelAnimationDebug.instance, 64, 20, true, 0xFFAAAA00, 0xFFDDDD00); - RenderingRegistry.registerEntityRenderingHandler(EntityChest.class, new IRenderFactory() - { - @SuppressWarnings("deprecation") - public Render createRenderFor(RenderManager manager) + @Override + public void handleEvents(Chest chest, float time, Iterable pastEvents) + { + chest.handleEvents(time, pastEvents); + } + }); + String entityName = MODID + ":entity_chest"; + //EntityRegistry.registerGlobalEntityID(EntityChest.class, entityName, EntityRegistry.findGlobalUniqueEntityId()); + EntityRegistry.registerModEntity(new ResourceLocation(entityName), EntityChest.class, entityName, 0, ModelAnimationDebug.instance, 64, 20, true, 0xFFAAAA00, 0xFFDDDD00); + RenderingRegistry.registerEntityRenderingHandler(EntityChest.class, new IRenderFactory() { + @SuppressWarnings("deprecation") + public Render createRenderFor(RenderManager manager) + { /*model = ModelLoaderRegistry.getModel(new ResourceLocation(ModelLoaderRegistryDebug.MODID, "block/chest.b3d")); if(model instanceof IRetexturableModel) { @@ -229,23 +227,24 @@ public class ModelAnimationDebug { model = ((IModelCustomData)model).process(ImmutableMap.of("mesh", "[\"Base\", \"Lid\"]")); }*/ - ResourceLocation location = new ModelResourceLocation(new ResourceLocation(MODID, blockName), "entity"); - return new RenderLiving(manager, new net.minecraftforge.client.model.animation.AnimationModelBase(location, new VertexLighterSmoothAo(Minecraft.getMinecraft().getBlockColors())) - { - @Override - public void handleEvents(EntityChest chest, float time, Iterable pastEvents) + ResourceLocation location = new ModelResourceLocation(new ResourceLocation(MODID, blockName), "entity"); + return new RenderLiving(manager, new net.minecraftforge.client.model.animation.AnimationModelBase(location, new VertexLighterSmoothAo(Minecraft.getMinecraft().getBlockColors())) { - chest.handleEvents(time, pastEvents); - } - }, 0.5f) - { - protected ResourceLocation getEntityTexture(EntityChest entity) + @Override + public void handleEvents(EntityChest chest, float time, Iterable pastEvents) + { + chest.handleEvents(time, pastEvents); + } + }, 0.5f) { - return TextureMap.LOCATION_BLOCKS_TEXTURE; - } - }; - } - }); + protected ResourceLocation getEntityTexture(EntityChest entity) + { + return TextureMap.LOCATION_BLOCKS_TEXTURE; + } + }; + } + }); + } } public static abstract class CommonProxy diff --git a/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java b/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java index a26b7fc79..28a0743fa 100644 --- a/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelBakeEventDebug.java @@ -327,12 +327,6 @@ public class ModelBakeEventDebug return this.base; } - @Override - public ItemCameraTransforms getItemCameraTransforms() - { - return ItemCameraTransforms.DEFAULT; - } - @Override public ItemOverrideList getOverrides() { diff --git a/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java b/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java index a013e52cd..969c65d61 100644 --- a/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java @@ -1,6 +1,6 @@ package net.minecraftforge.debug; -import com.google.common.base.Optional; +import java.util.Optional; import com.google.common.collect.UnmodifiableIterator; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; @@ -380,7 +380,7 @@ public class ModelLoaderRegistryDebug } } } - return Optional.absent(); + return Optional.empty(); } };