diff --git a/build.gradle b/build.gradle index 13c2015d9..2593789ab 100755 --- a/build.gradle +++ b/build.gradle @@ -88,7 +88,7 @@ processResources { } dependencies { - minecraft 'net.minecraftforge:forge:1.15.1-30.0.18' + minecraft 'net.minecraftforge:forge:1.15.1-30.0.36' //compileOnly fg.deobf("mezz.jei:jei-1.14.4:6.0.0.11:api") //compileOnly 'mouse-tweaks:MouseTweaks:2.12:mc1.14.4' //runtimeOnly fg.deobf('crafting-tweaks:CraftingTweaks_1.14.4:10.1.3') diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java index ced5e3a6f..675cd8a2d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java @@ -7,7 +7,6 @@ import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.apiimpl.network.node.DiskState; import com.raoulvdberge.refinedstorage.tile.DiskDriveTile; import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.TransformationMatrix; import net.minecraft.client.renderer.Vector3f; import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.IBakedModel; @@ -76,7 +75,7 @@ public class DiskDriveBakedModel extends DelegateBakedModel { for (int i = 0; i < 8; ++i) { if (key.diskState[i] != DiskState.NONE) { - // quads.addAll(disksByFacing.get(facing).get(key.diskState[i]).get(i).getQuads(key.state, key.side, key.random)); + quads.addAll(disksByFacing.get(facing).get(key.diskState[i]).get(i).getQuads(key.state, key.side, key.random)); } } @@ -84,8 +83,6 @@ public class DiskDriveBakedModel extends DelegateBakedModel { } }); - private Runnable init; - public DiskDriveBakedModel(IBakedModel base, IBakedModel disk, IBakedModel diskNearCapacity, @@ -93,24 +90,19 @@ public class DiskDriveBakedModel extends DelegateBakedModel { IBakedModel diskDisconnected) { super(base); - this.init = () -> { - for (Direction facing : Direction.values()) { - if (facing.getHorizontalIndex() == -1) { - continue; - } - - baseByFacing.put(facing, new TRSRBakedModel(base, facing)); - - disksByFacing.put(facing, new HashMap<>()); - - addDiskModels(disk, DiskState.NORMAL, facing); - addDiskModels(diskNearCapacity, DiskState.NEAR_CAPACITY, facing); - addDiskModels(diskFull, DiskState.FULL, facing); - addDiskModels(diskDisconnected, DiskState.DISCONNECTED, facing); + for (Direction facing : Direction.values()) { + if (facing.getHorizontalIndex() == -1) { + continue; } - }; - init.run(); + baseByFacing.put(facing, new TRSRBakedModel(base, facing, null)); + disksByFacing.put(facing, new HashMap<>()); + + addDiskModels(disk, DiskState.NORMAL, facing); + addDiskModels(diskNearCapacity, DiskState.NEAR_CAPACITY, facing); + addDiskModels(diskFull, DiskState.FULL, facing); + addDiskModels(diskDisconnected, DiskState.DISCONNECTED, facing); + } } private void addDiskModels(IBakedModel disk, DiskState type, Direction facing) { @@ -118,9 +110,7 @@ public class DiskDriveBakedModel extends DelegateBakedModel { for (int y = 0; y < 4; ++y) { for (int x = 0; x < 2; ++x) { - /*TRSRBakedModel model = new TRSRBakedModel(disk, facing); - - Vector3f trans = model.transformation.getTranslation(); + Vector3f trans = new Vector3f(); if (facing == Direction.NORTH || facing == Direction.SOUTH) { trans.add(((2F / 16F) + ((float) x * 7F) / 16F) * (facing == Direction.NORTH ? -1 : 1), 0, 0); // Add to X @@ -130,14 +120,7 @@ public class DiskDriveBakedModel extends DelegateBakedModel { trans.add(0, -((2F / 16F) + ((float) y * 3F) / 16F), 0); // Remove from Y - model.transformation = new TransformationMatrix( - trans, - model.transformation.getRightRot(), - model.transformation.getScale(), - model.transformation.func_227989_d_() - );*/ - - disksByFacing.get(facing).get(type).add(disk); + disksByFacing.get(facing).get(type).add(new TRSRBakedModel(disk, facing, trans)); } } } @@ -152,9 +135,6 @@ public class DiskDriveBakedModel extends DelegateBakedModel { CacheKey key = new CacheKey(state, side, diskState, rand); - init.run(); - cache.refresh(key); - return cache.getUnchecked(key); } } 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 ca91136d4..2f2a808bd 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/FullbrightBakedModel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/FullbrightBakedModel.java @@ -8,14 +8,12 @@ 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.client.renderer.vertex.VertexFormat; 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.UnpackedBakedQuad; +import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; import net.minecraftforge.client.model.pipeline.VertexLighterFlat; -import net.minecraftforge.common.model.TransformationHelper; import javax.annotation.Nullable; import java.util.*; @@ -75,9 +73,7 @@ public class FullbrightBakedModel extends DelegateBakedModel { return quad; } - VertexFormat newFormat = RenderUtils.getFormatWithLightMap(quad.getFormat()); - - UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder(newFormat); + BakedQuadBuilder builder = new BakedQuadBuilder(quad.getSprite()); VertexLighterFlat trans = new VertexLighterFlat(Minecraft.getInstance().getBlockColors()) { @Override @@ -94,13 +90,12 @@ public class FullbrightBakedModel extends DelegateBakedModel { trans.setParent(builder); - // TODO quad.pipe(trans); - - builder.setQuadTint(quad.getTintIndex()); builder.setQuadOrientation(quad.getFace()); builder.setTexture(quad.getSprite()); builder.setApplyDiffuseLighting(false); + quad.pipe(trans); + return builder.build(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/TRSRBakedModel.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/TRSRBakedModel.java index 9ffef4d9e..0c48c858c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/TRSRBakedModel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/TRSRBakedModel.java @@ -10,18 +10,15 @@ import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.Direction; +import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; import net.minecraftforge.client.model.pipeline.TRSRTransformer; -import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; import net.minecraftforge.common.model.TransformationHelper; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.List; import java.util.Random; -/** - * @link https://github.com/SlimeKnights/Mantle/blob/1.14/src/main/java/slimeknights/mantle/client/model/TRSRBakedModel.java - */ -// for those wondering TRSR stands for Translation Rotation Scale Rotation public class TRSRBakedModel implements IBakedModel { protected final IBakedModel original; protected TransformationMatrix transformation; @@ -35,10 +32,7 @@ public class TRSRBakedModel implements IBakedModel { } public TRSRBakedModel(IBakedModel original, float x, float y, float z, float rotX, float rotY, float rotZ, float scaleX, float scaleY, float scaleZ) { - this(original, new TransformationMatrix(new Vector3f(x, y, z), - null, - new Vector3f(scaleX, scaleY, scaleZ), - TransformationHelper.quatFromXYZ(new Vector3f(rotX, rotY, rotZ), false))); + this(original, new TransformationMatrix(new Vector3f(x, y, z), null, new Vector3f(scaleX, scaleY, scaleZ), TransformationHelper.quatFromXYZ(new Vector3f(rotX, rotY, rotZ), true))); } public TRSRBakedModel(IBakedModel original, TransformationMatrix transform) { @@ -46,39 +40,31 @@ public class TRSRBakedModel implements IBakedModel { this.transformation = transform; } - /** - * Rotates around the Y axis and adjusts culling appropriately. South is default. - */ public TRSRBakedModel(IBakedModel original, Direction facing) { + this(original,facing,null); + } + + public TRSRBakedModel(IBakedModel original, Direction facing, @Nullable Vector3f translation) { this.original = original; double r = Math.PI * (360 - facing.getOpposite().getHorizontalIndex() * 90) / 180d; - this.transformation = new TransformationMatrix(null, TransformationHelper.quatFromXYZ(new Vector3f(0,(float)r,0), false), null, null).blockCenterToCorner(); - //new TransformationMatrix(null, TransformationHelper.quatFromXYZ(new Vector3f(0, 180, 0), true), null, null); + this.transformation = new TransformationMatrix(translation, TransformationHelper.quatFromXYZ(new Vector3f(0, (float) r, 0), false), null, null); } @Nonnull @Override @SuppressWarnings("deprecation") public List getQuads(BlockState state, Direction side, Random rand) { - // transform quads obtained from parent ImmutableList.Builder quads = ImmutableList.builder(); - if (!original.isBuiltInRenderer()) { - // adjust side to facing-rotation - /*if (side != null && side.getHorizontalIndex() > -1) { - side = Direction.byHorizontalIndex((side.getHorizontalIndex() + faceOffset) % 4); - }*/ + for (BakedQuad quad : original.getQuads(state, side, rand)) { + BakedQuadBuilder builder = new BakedQuadBuilder(quad.getSprite()); + TRSRTransformer transformer = new TRSRTransformer(builder, transformation.blockCenterToCorner()); - for (BakedQuad quad : original.getQuads(state, side, rand)) { - UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder(quad.getFormat()); - TRSRTransformer transformer = new TRSRTransformer(builder, transformation); + quad.pipe(transformer); - quad.pipe(transformer); - - quads.add(builder.build()); - } + quads.add(builder.build()); } return quads.build(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java index f83017f7d..66143fd9c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java @@ -73,14 +73,15 @@ public class ClientSetup { 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, "disk_drive"), (base, registry) -> + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel( new DiskDriveBakedModel( base, registry.get(new ResourceLocation(RS.ID + ":block/disks/disk")), 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()); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_manipulator"), (base, registry) -> new FullbrightBakedModel( new DiskManipulatorBakedModel( diff --git a/src/main/java/com/raoulvdberge/refinedstorage/util/RenderUtils.java b/src/main/java/com/raoulvdberge/refinedstorage/util/RenderUtils.java index fea2e26c0..b62b5a211 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/util/RenderUtils.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/util/RenderUtils.java @@ -244,8 +244,8 @@ public final class RenderUtils { } public static boolean isLightMapDisabled() { - // TODO return !ForgeConfig.CLIENT.forgeLightPipelineEnabled.get(); - return true; + // return ForgeConfig.CLIENT.forgeLightPipelineEnabled.get(); + return false; } public static VertexFormat getFormatWithLightMap(VertexFormat format) {