Skip to content

Commit

Permalink
add transformer rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
skiprocks999 committed Jan 3, 2025
1 parent 07e2ee5 commit aeb859c
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 6 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,4 @@ runData.launch

runServer.launch
*.launch
runs*
3 changes: 3 additions & 0 deletions runs/client/command_history.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,6 @@
/time set noon
/time set night
/time set noon
/time set da
/time set day
/gamerule doDaylightCycle false
2 changes: 1 addition & 1 deletion runs/client/usercache.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"name":"Dev","uuid":"380df991-f603-344c-a090-369bad2a924a","expiresOn":"2025-01-10 19:18:34 -0600"}]
[{"name":"Dev","uuid":"380df991-f603-344c-a090-369bad2a924a","expiresOn":"2025-02-03 09:14:17 -0600"}]
3 changes: 3 additions & 0 deletions src/main/java/electrodynamics/client/ClientRegister.java
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,9 @@ public static void registerEntities(EntityRenderersEvent.RegisterRenderers event
event.registerBlockEntityRenderer(ElectrodynamicsTiles.TILE_PIPE.get(), RenderConnectBlock::new);
event.registerBlockEntityRenderer(ElectrodynamicsTiles.TILE_GAS_PIPE.get(), RenderConnectBlock::new);

event.registerBlockEntityRenderer(ElectrodynamicsTiles.TILE_ADVANCEDUPGRADETRANSFORMER.get(), RenderAdvancedTransformer.RenderAdvancedUpgradeTransformer::new);
event.registerBlockEntityRenderer(ElectrodynamicsTiles.TILE_ADVANCEDDOWNGRADETRANSFORMER.get(), RenderAdvancedTransformer.RenderAdvancedDowngradeTransformer::new);

event.registerBlockEntityRenderer(ElectrodynamicsTiles.TILE_CHEMICALREACTOR.get(), RenderChemicalReactor::new);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
package electrodynamics.client.render.tile;

import com.mojang.blaze3d.vertex.PoseStack;
import electrodynamics.common.tile.electricitygrid.transformer.TileAdvancedTransformer;
import electrodynamics.prefab.utilities.math.Color;
import electrodynamics.prefab.utilities.math.MathUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.core.Direction;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.NotNull;
import org.joml.Matrix4f;

public abstract class RenderAdvancedTransformer extends AbstractTileRenderer<TileAdvancedTransformer> {

public RenderAdvancedTransformer(BlockEntityRendererProvider.Context context) {
super(context);
}

@Override
public void render(@NotNull TileAdvancedTransformer tile, float partialTick, @NotNull PoseStack poseStack, @NotNull MultiBufferSource bufferSource, int packedLight, int packedOverlay) {

Direction facing = tile.getFacing();

Font font = Minecraft.getInstance().font;

Component transfer = Component.literal(getTurnsString(tile));

float scale = 0.0215f / (font.width(transfer) / 16f);

float textX = -font.width(transfer) / 2.0f;



poseStack.pushPose();

Direction clockwise = facing.getClockWise();

poseStack.translate(0.5 + clockwise.getStepX() * 0.438, 0.55 + clockwise.getStepY() / 2.0, 0.5 + clockwise.getStepZ() * 0.438);

rotateMatrix(poseStack, clockwise);

poseStack.scale(-scale, -scale, -scale);

Matrix4f matrix4f = poseStack.last().pose();

font.drawInBatch(transfer, textX, 0, Color.WHITE.color(), false, matrix4f, bufferSource, Font.DisplayMode.NORMAL, 0, packedLight);

poseStack.popPose();




poseStack.pushPose();

Direction counterClockwise = facing.getCounterClockWise();

poseStack.translate(0.5 - clockwise.getStepX() * 0.438, 0.55 + clockwise.getStepY() / 2.0, 0.5 - clockwise.getStepZ() * 0.438);

rotateMatrix(poseStack, counterClockwise);

poseStack.scale(-scale, -scale, -scale);

matrix4f = poseStack.last().pose();

font.drawInBatch(transfer, textX, 0, Color.WHITE.color(), false, matrix4f, bufferSource, Font.DisplayMode.NORMAL, 0, packedLight);

poseStack.popPose();

}

public abstract String getTurnsString(TileAdvancedTransformer transformer);

private void rotateMatrix(PoseStack stack, Direction dir) {
switch (dir) {
case EAST -> stack.mulPose(MathUtils.rotQuaternionDeg(0, -90, 0));// stack.mulPose(new Quaternion(0, -90, 0, true));
case SOUTH -> stack.mulPose(MathUtils.rotQuaternionDeg(0, 180, 0));// stack.mulPose(new Quaternion(0, 180, 0, true));
case WEST -> stack.mulPose(MathUtils.rotQuaternionDeg(0, 90, 0));// stack.mulPose(new Quaternion(0, 90, 0, true));
default -> {
}
}
}

public static class RenderAdvancedUpgradeTransformer extends RenderAdvancedTransformer {

public RenderAdvancedUpgradeTransformer(BlockEntityRendererProvider.Context context) {
super(context);
}

@Override
public String getTurnsString(TileAdvancedTransformer transformer) {
int ratio = transformer.coilRatio.get().intValue();

return "1 : " + ratio;
}
}

public static class RenderAdvancedDowngradeTransformer extends RenderAdvancedTransformer {

public RenderAdvancedDowngradeTransformer(BlockEntityRendererProvider.Context context) {
super(context);
}

@Override
public String getTurnsString(TileAdvancedTransformer transformer) {
int ratio = (int) (1.0 / transformer.coilRatio.get());

return ratio + " : 1";
}
}
}
16 changes: 11 additions & 5 deletions src/main/java/electrodynamics/prefab/properties/Property.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public class Property<T> {
//set this if you want to update a property without having a tile tick
//otherwise the property will be synced to the client upon change at the end of the tile's tick
private boolean shouldUpdateOnChange = false;
private boolean shouldUpdateServer = true;
private String name;
private T value;

Expand Down Expand Up @@ -107,7 +108,7 @@ public Property<T> set(Object updated) {
alreadySynced = false;
}
manager.setDirty(this);
} else {
} else if(shouldUpdateServer) {
CompoundTag data = new CompoundTag();
saveToTag(data, manager.getOwner().getLevel().registryAccess());
PacketDistributor.sendToServer(new PacketSendUpdatePropertiesServer(data, getIndex(), manager.getOwner().getBlockPos()));
Expand Down Expand Up @@ -165,15 +166,15 @@ public boolean shouldSave() {
return shouldSave;
}

public boolean shouldUpdateClient() {
return shouldUpdateClient;
}

public Property<T> setNoSave() {
shouldSave = false;
return this;
}

public boolean shouldUpdateClient() {
return shouldUpdateClient;
}

public Property<T> setNoUpdateClient() {
shouldUpdateClient = false;
return this;
Expand All @@ -184,6 +185,11 @@ public Property<T> setShouldUpdateOnChange() {
return this;
}

public Property<T> setNoUpdateServer() {
shouldUpdateServer = false;
return this;
}

@Override
public String toString() {
return value == null ? "null" : value.toString();
Expand Down

0 comments on commit aeb859c

Please sign in to comment.