diff --git a/src/client/java/su/a71/new_soviet/TVBlockEntityRenderer.java b/src/client/java/su/a71/new_soviet/TVBlockEntityRenderer.java index 4ce9e74..4d9c5e9 100644 --- a/src/client/java/su/a71/new_soviet/TVBlockEntityRenderer.java +++ b/src/client/java/su/a71/new_soviet/TVBlockEntityRenderer.java @@ -2,21 +2,65 @@ package su.a71.new_soviet; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.block.BlockState; +import net.minecraft.block.SignBlock; +import net.minecraft.block.entity.SignText; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.block.entity.BlockEntityRenderer; import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; +import net.minecraft.client.render.block.entity.SignBlockEntityRenderer; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.OrderedText; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.RotationAxis; +import net.minecraft.util.math.Vec3d; +import org.joml.Matrix4f; import su.a71.new_soviet.entity.TVBlockEntity; +import java.util.List; + @Environment(EnvType.CLIENT) public class TVBlockEntityRenderer implements BlockEntityRenderer { - public TVBlockEntityRenderer(BlockEntityRendererFactory.Context ctx) {} + private static TextRenderer textRenderer; + private static final Vec3d TEXT_OFFSET = new Vec3d(0.0, 0.3333333432674408, 0.046666666865348816); + + + public TVBlockEntityRenderer(BlockEntityRendererFactory.Context ctx) { + textRenderer = ctx.getTextRenderer(); + } @Override public void render(TVBlockEntity blockEntity, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) { matrices.push(); // Rendering stuff here +// this.setTextAngles(matrices, true, TEXT_OFFSET); +// textRenderer.draw("Test amogus", 0, 0, 999999, false, matrices.peek().getPositionMatrix(), vertexConsumers, TextRenderer.TextLayerType.POLYGON_OFFSET, 19999, light); matrices.pop(); + + } + + public float getScale() { + return 0.6666667F; + } + + + void setAngles(MatrixStack matrices, float rotationDegrees, BlockState state) { + matrices.translate(0.5F, 0.75F * this.getScale(), 0.5F); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(rotationDegrees)); + if (!(state.getBlock() instanceof SignBlock)) { + matrices.translate(0.0F, -0.3125F, -0.4375F); + } + } + + private void setTextAngles(MatrixStack matrices, boolean front, Vec3d translation) { + if (!front) { + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(180.0F)); + } + + float f = 0.015625F * this.getScale(); + matrices.translate(translation.x, translation.y, translation.z); + matrices.scale(f, -f, f); } } \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/Config.java b/src/main/java/su/a71/new_soviet/Config.java new file mode 100644 index 0000000..2bf1ac9 --- /dev/null +++ b/src/main/java/su/a71/new_soviet/Config.java @@ -0,0 +1,55 @@ +package su.a71.new_soviet; + +import java.io.*; + +public class Config { + private boolean invert_lamps = false; + + public static Config INSTANCE; + + public Config() { + INSTANCE = this; + } + + public boolean shouldInvertLamps() { + return invert_lamps; + } + + + private static void generateDefault() { + File file = new File("config/new_soviet.json"); + if(!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + INSTANCE = new Config(); + try { + FileWriter writer = new FileWriter(file); + writer.write(NewSoviet.GSON.toJson(INSTANCE)); + writer.close(); + } catch (Exception e) { + INSTANCE = new Config(); + } + + } + + public static void load() { + // Generate config if it doesn't exist + File file = new File("config/new_soviet.json"); + if(!file.exists()) { + generateDefault(); + } + + try { + BufferedReader reader = new BufferedReader(new FileReader(file)); + StringBuilder sb = new StringBuilder(); + String s; + while((s = reader.readLine()) != null) + sb.append(s); + reader.close(); + + INSTANCE = NewSoviet.GSON.fromJson(sb.toString(), Config.class); + } catch(Exception e) { + INSTANCE = new Config(); + } + } +} diff --git a/src/main/java/su/a71/new_soviet/NewSoviet.java b/src/main/java/su/a71/new_soviet/NewSoviet.java index bd22de2..3fab95f 100644 --- a/src/main/java/su/a71/new_soviet/NewSoviet.java +++ b/src/main/java/su/a71/new_soviet/NewSoviet.java @@ -26,6 +26,8 @@ public class NewSoviet implements ModInitializer { @Override public void onInitialize() { + Config.load(); + NSE_Blocks.init(); NSE_Items.init(); NSE_Custom.init(); diff --git a/src/main/resources/assets/new_soviet/icon.png b/src/main/resources/assets/new_soviet/icon.png new file mode 100644 index 0000000..0260f1d Binary files /dev/null and b/src/main/resources/assets/new_soviet/icon.png differ diff --git a/src/main/resources/assets/new_soviet/lang/en_us.json b/src/main/resources/assets/new_soviet/lang/en_us.json index 6c06512..fb9b238 100644 --- a/src/main/resources/assets/new_soviet/lang/en_us.json +++ b/src/main/resources/assets/new_soviet/lang/en_us.json @@ -204,5 +204,6 @@ "block.new_soviet.brown_wallpaper": "Brown Wallpaper Block", "block.new_soviet.beige_wallpaper": "Beige Wallpaper Block", "block.new_soviet.purple_goo": "Purple Goo", - "subtitles.new_soviet.switch_press": "Switch clicks" + "subtitles.new_soviet.switch_press": "Switch clicks", + "subtitles.new_soviet.electric_hit": "Electric sparks" } \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index b64ff1e..071a2a5 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -12,7 +12,7 @@ "homepage": "https://nse.a71.su/", "sources": "https://git.a71.su/Ethyl/New-Soviet-Era" }, - "license": "All rights reserved", + "license": "Mixed: All rights reserved assets & MIT code", "icon": "assets/new_soviet/icon.png", "environment": "*", "entrypoints": { @@ -31,5 +31,14 @@ "minecraft": "~1.20.1", "java": ">=17", "fabric-api": "*" + }, + + "custom": { + "modmenu": { + "links": { + "modmenu.discord": "https://discord.gg/D46vGJeCfj" + }, + "update_checker": true + } } } \ No newline at end of file