diff --git a/build.gradle b/build.gradle index 97559963c..13c2015d9 100755 --- a/build.gradle +++ b/build.gradle @@ -88,7 +88,7 @@ processResources { } dependencies { - minecraft 'net.minecraftforge:forge:1.15-29.0.3' + minecraft 'net.minecraftforge:forge:1.15.1-30.0.18' //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/DelegateBakedModel.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/DelegateBakedModel.java index 269c176f7..286e0d26e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/DelegateBakedModel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/DelegateBakedModel.java @@ -11,7 +11,6 @@ import net.minecraft.util.Direction; import org.apache.commons.lang3.tuple.Pair; import javax.annotation.Nullable; -import javax.vecmath.Matrix4f; import java.util.List; import java.util.Random; 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 3360de644..ced5e3a6f 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/DiskDriveBakedModel.java @@ -76,7 +76,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,6 +84,8 @@ public class DiskDriveBakedModel extends DelegateBakedModel { } }); + private Runnable init; + public DiskDriveBakedModel(IBakedModel base, IBakedModel disk, IBakedModel diskNearCapacity, @@ -91,20 +93,24 @@ public class DiskDriveBakedModel extends DelegateBakedModel { IBakedModel diskDisconnected) { super(base); - for (Direction facing : Direction.values()) { - if (facing.getHorizontalIndex() == -1) { - continue; + 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); } + }; - 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); - } + init.run(); } private void addDiskModels(IBakedModel disk, DiskState type, Direction facing) { @@ -112,7 +118,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); + /*TRSRBakedModel model = new TRSRBakedModel(disk, facing); Vector3f trans = model.transformation.getTranslation(); @@ -124,9 +130,14 @@ 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.func_227989_d_(), model.transformation.getScale(), model.transformation.getRightRot()); + model.transformation = new TransformationMatrix( + trans, + model.transformation.getRightRot(), + model.transformation.getScale(), + model.transformation.func_227989_d_() + );*/ - disksByFacing.get(facing).get(type).add(model); + disksByFacing.get(facing).get(type).add(disk); } } } @@ -141,6 +152,9 @@ 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/TRSRBakedModel.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/TRSRBakedModel.java index c989a005a..9ffef4d9e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/TRSRBakedModel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/TRSRBakedModel.java @@ -1,19 +1,17 @@ package com.raoulvdberge.refinedstorage.render.model; import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.matrix.MatrixStack; import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.*; +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; import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.VertexFormat; -import net.minecraft.client.renderer.vertex.VertexFormatElement; import net.minecraft.util.Direction; +import net.minecraftforge.client.model.pipeline.TRSRTransformer; import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad; -import net.minecraftforge.client.model.pipeline.VertexTransformer; import net.minecraftforge.common.model.TransformationHelper; import javax.annotation.Nonnull; @@ -27,7 +25,6 @@ import java.util.Random; public class TRSRBakedModel implements IBakedModel { protected final IBakedModel original; protected TransformationMatrix transformation; - private final int faceOffset; public TRSRBakedModel(IBakedModel original, float x, float y, float z, float scale) { this(original, x, y, z, 0, 0, 0, scale, scale, scale); @@ -46,8 +43,7 @@ public class TRSRBakedModel implements IBakedModel { public TRSRBakedModel(IBakedModel original, TransformationMatrix transform) { this.original = original; - this.transformation = TransformationHelper.blockCenterToCorner(transform); - this.faceOffset = 0; + this.transformation = transform; } /** @@ -56,11 +52,10 @@ public class TRSRBakedModel implements IBakedModel { public TRSRBakedModel(IBakedModel original, Direction facing) { this.original = original; - this.faceOffset = 4 + Direction.NORTH.getHorizontalIndex() - facing.getHorizontalIndex(); - double r = Math.PI * (360 - facing.getOpposite().getHorizontalIndex() * 90) / 180d; - TransformationMatrix t = new TransformationMatrix(null, null, null, TransformationHelper.quatFromXYZ(new Vector3f(0, (float) r, 0), false)); - this.transformation = TransformationHelper.blockCenterToCorner(t); + + 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); } @Nonnull @@ -68,26 +63,25 @@ public class TRSRBakedModel implements IBakedModel { @SuppressWarnings("deprecation") public List getQuads(BlockState state, Direction side, Random rand) { // transform quads obtained from parent - - ImmutableList.Builder builder = ImmutableList.builder(); + ImmutableList.Builder quads = ImmutableList.builder(); if (!original.isBuiltInRenderer()) { - try { - // 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)) { - Transformer transformer = new Transformer(transformation, quad.getFormat()); - // TODO quad.pipe(transformer); - builder.add(transformer.build()); - } - } catch (Exception e) { - // do nothing. Seriously, why are you using immutable lists?! + // 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)) { + UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder(quad.getFormat()); + TRSRTransformer transformer = new TRSRTransformer(builder, transformation); + + quad.pipe(transformer); + + quads.add(builder.build()); } } - return builder.build(); + return quads.build(); } @Override @@ -124,46 +118,4 @@ public class TRSRBakedModel implements IBakedModel { public ItemOverrideList getOverrides() { return original.getOverrides(); } - - private static class Transformer extends VertexTransformer { - protected Matrix4f transformation; - protected Matrix3f normalTransformation; - - public Transformer(TransformationMatrix transformation, VertexFormat format) { - super(new UnpackedBakedQuad.Builder(format)); - /* TODO - // position transform - this.transformation = transformation.func_227988_c_(); - // normal transform - this.normalTransformation = new Matrix3f(); - this.transformation.getRotationScale(this.normalTransformation); - this.normalTransformation.invert(); - this.normalTransformation.transpose();*/ - } - - @Override - public void put(int element, float... data) { - /* TODO - VertexFormatElement.Usage usage = parent.getVertexFormat().getElement(element).getUsage(); - - // transform normals and position - if (usage == VertexFormatElement.Usage.POSITION && data.length >= 3) { - Vector4f vec = new Vector4f(data[0], data[1], data[2], 1f); - transformation.transform(vec); - data = new float[4]; - vec.get(data); - } else if (usage == VertexFormatElement.Usage.NORMAL && data.length >= 3) { - Vector3f vec = new Vector3f(data); - normalTransformation.transform(vec); - vec.normalize(); - data = new float[4]; - vec.get(data); - }*/ - super.put(element, data); - } - - public UnpackedBakedQuad build() { - return ((UnpackedBakedQuad.Builder) parent).build(); - } - } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/GridScreen.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/GridScreen.java index a1f5a8844..d3ee33670 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/GridScreen.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/grid/GridScreen.java @@ -351,7 +351,7 @@ public class GridScreen extends BaseScreen implements IScreenInfo int slot = scrollbar != null ? (scrollbar.getOffset() * 9) : 0; - RenderSystem.setupGuiFlatDiffuseLighting(); + RenderSystem.setupGui3DDiffuseLighting(); for (int i = 0; i < 9 * getVisibleRows(); ++i) { if (RenderUtils.inBounds(x, y, 16, 16, mouseX, mouseY) || !grid.isActive()) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java index fb637ccde..f83017f7d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/setup/ClientSetup.java @@ -73,16 +73,14 @@ 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) -> new FullbrightBakedModel( + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> 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")) - ), - new ResourceLocation(RS.ID, "block/disks/leds") - ).disableCache()); + )); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_manipulator"), (base, registry) -> new FullbrightBakedModel( new DiskManipulatorBakedModel( diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 1b039a9a8..f182ec9f8 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,5 +1,5 @@ modLoader="javafml" -loaderVersion="[29,)" +loaderVersion="[30,)" issueTrackerURL="https://github.com/raoulvdberge/refinedstorage" [[mods]] modId="refinedstorage"