Skip to content

Commit b6715e0

Browse files
committed
Merge branch 'jei-compat' into 1.16.x
2 parents 0e905b9 + e45f39e commit b6715e0

File tree

12 files changed

+424
-27
lines changed

12 files changed

+424
-27
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,5 @@ forge*changelog.txt
2727
logs/
2828

2929
mods/
30+
31+
demo-files/

assets/jei-sprites.png

2 KB
Loading

src/main/java/com/robotgryphon/compactcrafting/blocks/FieldCraftingPreviewTile.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public CompoundNBT write(CompoundNBT compound) {
9797

9898
@Override
9999
public SUpdateTileEntityPacket getUpdatePacket() {
100-
return new SUpdateTileEntityPacket(pos, 1, getUpdateTag());
100+
return new SUpdateTileEntityPacket(pos, 0, getUpdateTag());
101101
}
102102

103103
@Override

src/main/java/com/robotgryphon/compactcrafting/blocks/FieldProjectorTile.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ public void doRecipeScan() {
215215
// If there are no registered recipes, then we obv can't match anything - exit early
216216
if (entries.isEmpty()) {
217217
this.currentRecipe = null;
218-
this.craftingState = EnumCraftingState.NOT_MATCHED;
218+
updateCraftingState(EnumCraftingState.NOT_MATCHED);
219219
return;
220220
}
221221

@@ -226,7 +226,7 @@ public void doRecipeScan() {
226226
// If no positions filled, exit early
227227
if (fieldBlocks.getNumberFilledBlocks() == 0) {
228228
this.currentRecipe = null;
229-
this.craftingState = EnumCraftingState.NOT_MATCHED;
229+
updateCraftingState(EnumCraftingState.NOT_MATCHED);
230230
return;
231231
}
232232

@@ -242,7 +242,7 @@ public void doRecipeScan() {
242242
// blocks were placed in a larger space than the max recipe size
243243
if (recipesBoundFitted.size() == 0) {
244244
this.currentRecipe = null;
245-
this.craftingState = EnumCraftingState.NOT_MATCHED;
245+
updateCraftingState(EnumCraftingState.NOT_MATCHED);
246246
return;
247247
}
248248

@@ -254,7 +254,7 @@ public void doRecipeScan() {
254254
continue;
255255

256256
matchedRecipe = recipe;
257-
this.craftingState = EnumCraftingState.MATCHED;
257+
updateCraftingState(EnumCraftingState.MATCHED);
258258
break;
259259
}
260260

@@ -277,7 +277,7 @@ private void tickCrafting() {
277277
// Start crafting
278278
switch (craftingState) {
279279
case MATCHED:
280-
craftingState = EnumCraftingState.CRAFTING;
280+
updateCraftingState(EnumCraftingState.CRAFTING);
281281

282282
// We know the "recipe" in the field is an exact match already, so wipe the field
283283
field.clearBlocks(world);
@@ -297,7 +297,7 @@ private void tickCrafting() {
297297

298298
case DONE:
299299
// We aren't crafting any more - recipe complete, reset for next one
300-
this.craftingState = EnumCraftingState.NOT_MATCHED;
300+
updateCraftingState(EnumCraftingState.NOT_MATCHED);
301301
this.currentRecipe = null;
302302
break;
303303
}
@@ -354,6 +354,9 @@ public Optional<MiniaturizationRecipe> getCurrentRecipe() {
354354

355355
public void updateCraftingState(EnumCraftingState state) {
356356
this.craftingState = state;
357-
this.markDirty();
357+
}
358+
359+
public EnumCraftingState getCraftingState() {
360+
return this.craftingState;
358361
}
359362
}

src/main/java/com/robotgryphon/compactcrafting/client/render/FieldCraftingPreviewRenderer.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
1212
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
1313
import net.minecraft.util.math.AxisAlignedBB;
14+
import net.minecraft.util.math.vector.Vector3f;
1415
import net.minecraftforge.client.model.data.EmptyModelData;
1516

1617
import java.util.Optional;
@@ -33,16 +34,16 @@ public void render(FieldCraftingPreviewTile tile, float partialTicks, MatrixStac
3334
mx.translate(0.5, 0.5, 0.5);
3435

3536
// progress, ticks required
36-
double craftProgress = (double) tile.getProgress();
37-
double progress = 1.0d - (craftProgress / (double) 200);
37+
double craftProgress = tile.getProgress();
38+
39+
double progress = 1.0d - (craftProgress / (double)rec.getTicks());
3840

3941
double scale = progress * (1.0f - ((Math.sin(Math.toDegrees(RenderTickCounter.renderTicks) / 2000) + 1.0f) * 0.1f));
40-
scale *= 0.7d;
4142

4243
mx.scale((float) scale, (float) scale, (float) scale);
4344

44-
// double yaw = Math.sin(Math.toDegrees(RenderTickCounter.renderTicks) / FieldProjectorRenderer.RotationSpeed.SLOW.getSpeed()) * 10;
45-
// mx.rotate(Vector3f.YP.rotation((float) yaw));
45+
double angle = RenderTickCounter.renderTicks * (45.0f / 64.0f);
46+
mx.rotate(Vector3f.YP.rotationDegrees((float) angle));
4647

4748
AxisAlignedBB dimensions = rec.getDimensions();
4849
mx.translate(-(dimensions.getXSize() / 2), -(dimensions.getYSize() / 2), -(dimensions.getZSize() / 2));

src/main/java/com/robotgryphon/compactcrafting/client/render/FieldProjectorRenderer.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import com.mojang.blaze3d.matrix.MatrixStack;
44
import com.mojang.blaze3d.vertex.IVertexBuilder;
5+
import com.robotgryphon.compactcrafting.blocks.FieldCraftingPreviewTile;
56
import com.robotgryphon.compactcrafting.blocks.FieldProjectorBlock;
67
import com.robotgryphon.compactcrafting.blocks.FieldProjectorTile;
78
import com.robotgryphon.compactcrafting.core.Constants;
89
import com.robotgryphon.compactcrafting.core.EnumProjectorColorType;
10+
import com.robotgryphon.compactcrafting.crafting.EnumCraftingState;
911
import com.robotgryphon.compactcrafting.field.FieldProjection;
1012
import net.minecraft.block.BlockState;
1113
import net.minecraft.client.Minecraft;
@@ -64,16 +66,43 @@ public void render(FieldProjectorTile tile, float partialTicks, MatrixStack matr
6466
BlockPos center = fp.getCenterPosition();
6567
int fieldSize = fp.getFieldSize().getSize();
6668

69+
float scale = 1f;
70+
71+
72+
6773
AxisAlignedBB cube = fp.getBounds();
6874

69-
renderFaces(tile, matrixStack, buffers, cube, 0);
75+
// renderFaces(tile, matrixStack, buffers, cube, 0);
7076

7177
// TODO - WIP ARC CODE
7278
// drawProjectorArcs(tile, matrixStack, buffers, cube, fieldSize);
7379

7480
if (tile.isMainProjector()) {
81+
EnumCraftingState state = tile.getCraftingState();
82+
if(state == EnumCraftingState.CRAFTING) {
83+
FieldCraftingPreviewTile preview = (FieldCraftingPreviewTile) tile
84+
.getWorld()
85+
.getTileEntity(fp.getCenterPosition());
86+
87+
// No preview tile found, not actually crafting rn
88+
if(preview == null)
89+
return;
90+
91+
double craftProgress = preview.getProgress();
92+
93+
double progress = 1.0d - (craftProgress / (double) tile.getCurrentRecipe().get().getTicks());
94+
95+
scale = (float) (progress * (1.0f - ((Math.sin(Math.toDegrees(RenderTickCounter.renderTicks) / 2000) + 1.0f) * 0.1f)));
96+
}
97+
98+
matrixStack.push();
99+
100+
matrixStack.scale(scale, scale, scale);
101+
75102
drawScanLines(tile, matrixStack, buffers, cube, fieldSize);
76103
renderProjectionCube(tile, matrixStack, buffers, cube, fieldSize);
104+
105+
matrixStack.pop();
77106
}
78107
}
79108
}

src/main/java/com/robotgryphon/compactcrafting/client/render/RenderTypesExtensions.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.mojang.blaze3d.platform.GlStateManager;
44
import com.mojang.blaze3d.systems.RenderSystem;
5+
import com.robotgryphon.compactcrafting.CompactCrafting;
6+
import net.minecraft.client.renderer.IRenderTypeBuffer;
57
import net.minecraft.client.renderer.RenderState;
68
import net.minecraft.client.renderer.RenderType;
79
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -44,4 +46,53 @@ public RenderTypesExtensions(String name, VertexFormat format, int p_i225992_3_,
4446
.writeMask(COLOR_WRITE)
4547
.depthTest(DepthTestState.DEPTH_LEQUAL) // Default, but let's make sure it stays that way
4648
.build(false));
49+
50+
public static final RenderType MULTIBLOCK_GUI = makeType(CompactCrafting.MOD_ID + ":multiblock_gui",
51+
DefaultVertexFormats.BLOCK, GL11.GL_QUADS, 256,
52+
RenderType.State.getBuilder()
53+
.transparency(PROJECTION_TRANSPARENCY)
54+
.target(RenderState.MAIN_TARGET)
55+
.cull(RenderState.CULL_ENABLED)
56+
.writeMask(RenderState.COLOR_WRITE)
57+
.diffuseLighting(DiffuseLightingState.DIFFUSE_LIGHTING_DISABLED)
58+
.depthTest(DepthTestState.DEPTH_LEQUAL)
59+
.build(false));
60+
61+
public static IRenderTypeBuffer disableLighting(IRenderTypeBuffer in)
62+
{
63+
return wrapWithAdditional(
64+
in,
65+
"no_lighting",
66+
RenderSystem::disableLighting,
67+
() -> {
68+
}
69+
);
70+
}
71+
72+
private static IRenderTypeBuffer wrapWithAdditional(
73+
IRenderTypeBuffer in,
74+
String name,
75+
Runnable setup,
76+
Runnable teardown
77+
)
78+
{
79+
return type -> in.getBuffer(new RenderType(
80+
CompactCrafting.MOD_ID+":"+type+"_"+name,
81+
type.getVertexFormat(),
82+
type.getDrawMode(),
83+
type.getBufferSize(),
84+
type.isUseDelegate(),
85+
false, // needsSorting is private and shouldn't be too relevant here
86+
() -> {
87+
type.setupRenderState();
88+
setup.run();
89+
},
90+
() -> {
91+
teardown.run();
92+
type.clearRenderState();
93+
}
94+
)
95+
{
96+
});
97+
}
4798
}

0 commit comments

Comments
 (0)