diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/FullbrightBakedModel.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/FullbrightBakedModel.java index 2f2a808bd..7fd024e2c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/FullbrightBakedModel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/FullbrightBakedModel.java @@ -3,17 +3,13 @@ package com.raoulvdberge.refinedstorage.render.model; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; -import com.raoulvdberge.refinedstorage.util.RenderUtils; import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.util.Direction; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.data.EmptyModelData; import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; -import net.minecraftforge.client.model.pipeline.VertexLighterFlat; import javax.annotation.Nullable; import java.util.*; @@ -26,28 +22,28 @@ public class FullbrightBakedModel extends DelegateBakedModel { } }); - private Set textures; - private boolean cacheDisabled = false; + private final Set textures; + private final boolean doCaching; - public FullbrightBakedModel(IBakedModel base, ResourceLocation... textures) { + public FullbrightBakedModel(IBakedModel base, boolean doCaching, ResourceLocation... textures) { super(base); this.textures = new HashSet<>(Arrays.asList(textures)); + this.doCaching = doCaching; } - public FullbrightBakedModel disableCache() { - this.cacheDisabled = true; - - return this; + private boolean canRenderFullbright() { + // return ForgeConfig.CLIENT.forgeLightPipelineEnabled.get(); + return true; } @Override public List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand, IModelData data) { - if (state == null) { + if (state == null || !canRenderFullbright()) { return base.getQuads(state, side, rand, data); } - if (cacheDisabled) { + if (!doCaching) { return transformQuads(base.getQuads(state, side, rand, data), textures); } @@ -61,42 +57,19 @@ public class FullbrightBakedModel extends DelegateBakedModel { BakedQuad quad = quads.get(i); if (textures.contains(quad.getSprite().getName())) { - quads.set(i, transformQuad(quad, 0.007F)); + quads.set(i, transformQuad(quad)); } } return quads; } - private static BakedQuad transformQuad(BakedQuad quad, float light) { - if (RenderUtils.isLightMapDisabled()) { - return quad; - } + private static BakedQuad transformQuad(BakedQuad quad) { + int[] vertexData = quad.getVertexData(); - BakedQuadBuilder builder = new BakedQuadBuilder(quad.getSprite()); + vertexData[6] = 0xF000F000; - VertexLighterFlat trans = new VertexLighterFlat(Minecraft.getInstance().getBlockColors()) { - @Override - protected void updateLightmap(float[] normal, float[] lightmap, float x, float y, float z) { - lightmap[0] = light; - lightmap[1] = light; - } - - @Override - public void setQuadTint(int tint) { - // NO OP - } - }; - - trans.setParent(builder); - - builder.setQuadOrientation(quad.getFace()); - builder.setTexture(quad.getSprite()); - builder.setApplyDiffuseLighting(false); - - quad.pipe(trans); - - return builder.build(); + return quad; } private class CacheKey { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java index 66143fd9c..27af31374 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java @@ -43,35 +43,38 @@ public class ClientSetup { bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "controller"), (base, registry) -> new FullbrightBakedModel( base, + true, new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_off"), new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_on"), new ResourceLocation(RS.ID, "block/controller/cutouts/on") )); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "creative_controller"), (base, registry) -> new FullbrightBakedModel( base, + true, new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_off"), new ResourceLocation(RS.ID, "block/controller/cutouts/nearly_on"), new ResourceLocation(RS.ID, "block/controller/cutouts/on") )); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "grid"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/grid/cutouts/front_connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafting_grid"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/grid/cutouts/crafting_front_connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern_grid"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/grid/cutouts/pattern_front_connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "fluid_grid"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/grid/cutouts/fluid_front_connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "network_receiver"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/network_receiver/cutouts/connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "network_transmitter"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/network_transmitter/cutouts/connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "relay"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/relay/cutouts/connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "detector"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/detector/cutouts/on"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "grid"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/grid/cutouts/front_connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafting_grid"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/grid/cutouts/crafting_front_connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern_grid"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/grid/cutouts/pattern_front_connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "fluid_grid"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/grid/cutouts/fluid_front_connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "network_receiver"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/network_receiver/cutouts/connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "network_transmitter"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/network_transmitter/cutouts/connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "relay"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/relay/cutouts/connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "detector"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/detector/cutouts/on"))); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "security_manager"), (base, registry) -> new FullbrightBakedModel( base, + true, new ResourceLocation(RS.ID, "block/security_manager/cutouts/top_connected"), new ResourceLocation(RS.ID, "block/security_manager/cutouts/front_connected"), new ResourceLocation(RS.ID, "block/security_manager/cutouts/left_connected"), new ResourceLocation(RS.ID, "block/security_manager/cutouts/back_connected"), new ResourceLocation(RS.ID, "block/security_manager/cutouts/right_connected") )); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "wireless_transmitter"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/wireless_transmitter/cutouts/connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "constructor"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/constructor/cutouts/connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "destructor"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/destructor/cutouts/connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "wireless_transmitter"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/wireless_transmitter/cutouts/connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "constructor"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/constructor/cutouts/connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "destructor"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/destructor/cutouts/connected"))); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel( new DiskDriveBakedModel( @@ -80,8 +83,10 @@ public class ClientSetup { registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_near_capacity")), registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_full")), registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_disconnected")) - ) - ).disableCache()); + ), + false, + new ResourceLocation(RS.ID, "block/disks/leds") + )); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_manipulator"), (base, registry) -> new FullbrightBakedModel( new DiskManipulatorBakedModel( @@ -92,9 +97,10 @@ public class ClientSetup { registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_full")), registry.get(new ResourceLocation(RS.ID + ":block/disks/disk_disconnected")) ), + false, new ResourceLocation(RS.ID, "block/disk_manipulator/cutouts/connected"), new ResourceLocation(RS.ID, "block/disks/leds") - ).disableCache()); + )); for (String portableGridName : new String[]{"portable_grid", "creative_portable_grid"}) { bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, portableGridName), (base, registry) -> new FullbrightBakedModel( @@ -106,12 +112,14 @@ public class ClientSetup { registry.get(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk_full")), registry.get(new ResourceLocation(RS.ID + ":block/disks/portable_grid_disk_disconnected")) ), + false, new ResourceLocation(RS.ID + ":block/disks/leds") - ).disableCache()); + )); } bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafter"), (base, registry) -> new FullbrightBakedModel( base, + true, new ResourceLocation(RS.ID, "block/crafter/cutouts/side_connected"), new ResourceLocation(RS.ID, "block/crafter/cutouts/side_connected_90"), new ResourceLocation(RS.ID, "block/crafter/cutouts/side_connected_180"), @@ -119,8 +127,8 @@ public class ClientSetup { new ResourceLocation(RS.ID, "block/crafter/cutouts/front_connected") )); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafter_manager"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/crafter_manager/cutouts/front_connected"))); - bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafting_monitor"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/crafting_monitor/cutouts/front_connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafter_manager"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/crafter_manager/cutouts/front_connected"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafting_monitor"), (base, registry) -> new FullbrightBakedModel(base, true, new ResourceLocation(RS.ID, "block/crafting_monitor/cutouts/front_connected"))); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern"), (base, registry) -> new PatternBakedModel(base)); @@ -143,6 +151,7 @@ public class ClientSetup { FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onModelBake); API.instance().addPatternRenderHandler(pattern -> Screen.hasShiftDown()); + API.instance().addPatternRenderHandler(pattern -> { Container container = Minecraft.getInstance().player.openContainer; @@ -156,6 +165,7 @@ public class ClientSetup { return false; }); + API.instance().addPatternRenderHandler(pattern -> { Container container = Minecraft.getInstance().player.openContainer; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/util/RenderUtils.java b/src/main/java/com/raoulvdberge/refinedstorage/util/RenderUtils.java index b62b5a211..b168c8bba 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/util/RenderUtils.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/util/RenderUtils.java @@ -30,8 +30,6 @@ import java.util.List; import java.util.Set; public final class RenderUtils { - private static final VertexFormat ITEM_FORMAT_WITH_LIGHTMAP = addTex2sToVertexFormat(DefaultVertexFormats.field_227849_i_); // TODO Is this item? - public static String shorten(String text, int length) { if (text.length() > length) { text = text.substring(0, length) + "..."; @@ -243,33 +241,6 @@ public final class RenderUtils { return tooltipStrings; } - public static boolean isLightMapDisabled() { - // return ForgeConfig.CLIENT.forgeLightPipelineEnabled.get(); - return false; - } - - public static VertexFormat getFormatWithLightMap(VertexFormat format) { - if (isLightMapDisabled()) { - return format; - } - - if (format == DefaultVertexFormats.BLOCK) { - return DefaultVertexFormats.BLOCK; - } else if (format == DefaultVertexFormats.field_227849_i_) { // TODO Is this item? - return ITEM_FORMAT_WITH_LIGHTMAP; - } else if (!format.hasUV(1)) { - return addTex2sToVertexFormat(format); - } - - return format; - } - - private static VertexFormat addTex2sToVertexFormat(VertexFormat format) { - List elems = new ArrayList<>(format.func_227894_c_()); - elems.add(DefaultVertexFormats.TEX_2S); - return new VertexFormat(ImmutableList.copyOf(elems)); - } - public static boolean inBounds(int x, int y, int w, int h, double ox, double oy) { return ox >= x && ox <= x + w && oy >= y && oy <= y + h; }