diff --git a/CHANGELOG b/CHANGELOG index 33e7aac..e675da4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -31,5 +31,12 @@ This version focuses on QOL and bug fixes * Added Russian translation (ru_ru) -* Fixed some issues with blocks being non opaque -* Deleted some unused textures and models \ No newline at end of file +* Added button to open config file when using Mod Menu +* Added several new achievements and challenges +* Minor bug fixes + * Fixed issue with some blocks being non opaque + * Switches no longer emit redstone particle + * Slightly improved cigarette's GUI model +* Technical changes + * Simplified recipe data generation + * Deleted various unused files - code, textures and models \ No newline at end of file diff --git a/src/client/java/su/a71/new_soviet/NewSovietClient.java b/src/client/java/su/a71/new_soviet/NewSovietClient.java index a9b27a7..8199a9a 100644 --- a/src/client/java/su/a71/new_soviet/NewSovietClient.java +++ b/src/client/java/su/a71/new_soviet/NewSovietClient.java @@ -31,15 +31,6 @@ public class NewSovietClient implements ClientModInitializer { BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.VINTAGE_IRON_BARS, RenderLayer.getCutout()); BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.BARBED_WIRE, RenderLayer.getCutout()); - // TODO: Needed? - BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.RED_CONCRETE_WITH_BARS, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.GREEN_CONCRETE_WITH_BARS, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.WHITE_CONCRETE_WITH_BARS, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.BEIGE_CONCRETE_WITH_BARS, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.YELLOW_CONCRETE_WITH_BARS, RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(NSE_Blocks.BLUE_CONCRETE_WITH_BARS, RenderLayer.getCutout()); - -// BlockEntityRendererRegistry.register(NSE_Custom.TV_BLOCK_ENTITY, TVBlockEntityRenderer::new); BlockRenderLayerMap.INSTANCE.putBlock(NSE_Custom.TV, RenderLayer.getCutout()); BlockRenderLayerMap.INSTANCE.putBlock(NSE_Custom.RED_TV, RenderLayer.getCutout()); BlockRenderLayerMap.INSTANCE.putBlock(NSE_Custom.BROWN_TV, RenderLayer.getCutout()); diff --git a/src/client/java/su/a71/new_soviet/TVBlockEntityRenderer.java b/src/client/java/su/a71/new_soviet/TVBlockEntityRenderer.java deleted file mode 100644 index 10f0c5e..0000000 --- a/src/client/java/su/a71/new_soviet/TVBlockEntityRenderer.java +++ /dev/null @@ -1,57 +0,0 @@ -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.client.render.VertexConsumerProvider; -import net.minecraft.client.render.block.entity.BlockEntityRenderer; -import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.RotationAxis; -import net.minecraft.util.math.Vec3d; -import su.a71.new_soviet.entities.TVBlockEntity; - -@Environment(EnvType.CLIENT) -public class TVBlockEntityRenderer implements BlockEntityRenderer { -// 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/generated/data/minecraft/advancements/new_soviet/gambler.json b/src/main/generated/data/minecraft/advancements/new_soviet/gambler.json new file mode 100644 index 0000000..0eb618f --- /dev/null +++ b/src/main/generated/data/minecraft/advancements/new_soviet/gambler.json @@ -0,0 +1,56 @@ +{ + "parent": "minecraft:new_soviet/root", + "criteria": { + "rolled_100": { + "conditions": { + "item": { + "tag": "new_soviet:dice" + }, + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "type": "minecraft:player", + "type_specific": { + "type": "player", + "stats": [ + { + "type": "minecraft:custom", + "stat": "minecraft:roll_dice", + "value": { + "min": 100 + } + } + ] + } + } + } + ] + }, + "trigger": "minecraft:using_item" + } + }, + "display": { + "announce_to_chat": true, + "background": "minecraft:textures/gui/advancements/backgrounds/adventure.png", + "description": { + "translate": "advancement.new_soviet.gambler.desc" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "new_soviet:dice_d6" + }, + "show_toast": true, + "title": { + "translate": "advancement.new_soviet.gambler.name" + } + }, + "requirements": [ + [ + "rolled_100" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/advancements/new_soviet/lucky_throw.json b/src/main/generated/data/minecraft/advancements/new_soviet/lucky_throw.json new file mode 100644 index 0000000..c0e4868 --- /dev/null +++ b/src/main/generated/data/minecraft/advancements/new_soviet/lucky_throw.json @@ -0,0 +1,56 @@ +{ + "parent": "minecraft:new_soviet/gambler", + "criteria": { + "rolled_100_perfect": { + "conditions": { + "item": { + "tag": "new_soviet:dice" + }, + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "type": "minecraft:player", + "type_specific": { + "type": "player", + "stats": [ + { + "type": "minecraft:custom", + "stat": "minecraft:roll_perfect_dice", + "value": { + "min": 100 + } + } + ] + } + } + } + ] + }, + "trigger": "minecraft:using_item" + } + }, + "display": { + "announce_to_chat": true, + "background": "minecraft:textures/gui/advancements/backgrounds/adventure.png", + "description": { + "translate": "advancement.new_soviet.lucky_throw.desc" + }, + "frame": "challenge", + "hidden": false, + "icon": { + "item": "new_soviet:dice_d4" + }, + "show_toast": true, + "title": { + "translate": "advancement.new_soviet.lucky_throw.name" + } + }, + "requirements": [ + [ + "rolled_100_perfect" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/advancements/new_soviet/serious_addiction.json b/src/main/generated/data/minecraft/advancements/new_soviet/serious_addiction.json new file mode 100644 index 0000000..3294031 --- /dev/null +++ b/src/main/generated/data/minecraft/advancements/new_soviet/serious_addiction.json @@ -0,0 +1,56 @@ +{ + "parent": "minecraft:new_soviet/gambler", + "criteria": { + "rolled_1000": { + "conditions": { + "item": { + "tag": "new_soviet:dice" + }, + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "type": "minecraft:player", + "type_specific": { + "type": "player", + "stats": [ + { + "type": "minecraft:custom", + "stat": "minecraft:roll_dice", + "value": { + "min": 1000 + } + } + ] + } + } + } + ] + }, + "trigger": "minecraft:using_item" + } + }, + "display": { + "announce_to_chat": true, + "background": "minecraft:textures/gui/advancements/backgrounds/adventure.png", + "description": { + "translate": "advancement.new_soviet.serious_addiction.desc" + }, + "frame": "challenge", + "hidden": false, + "icon": { + "item": "new_soviet:dice_d20" + }, + "show_toast": true, + "title": { + "translate": "advancement.new_soviet.serious_addiction.name" + } + }, + "requirements": [ + [ + "rolled_1000" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/main/java/su/a71/new_soviet/datagen/Advancements.java b/src/main/java/su/a71/new_soviet/datagen/Advancements.java index 5a4d50e..f8b1c8a 100644 --- a/src/main/java/su/a71/new_soviet/datagen/Advancements.java +++ b/src/main/java/su/a71/new_soviet/datagen/Advancements.java @@ -4,15 +4,24 @@ import net.minecraft.advancement.Advancement; import net.minecraft.advancement.AdvancementFrame; import net.minecraft.advancement.criterion.InventoryChangedCriterion; import net.minecraft.advancement.criterion.OnKilledCriterion; +import net.minecraft.advancement.criterion.UsingItemCriterion; +import net.minecraft.entity.EntityType; import net.minecraft.item.Items; +import net.minecraft.predicate.NumberRange; import net.minecraft.predicate.entity.DamageSourcePredicate; import net.minecraft.predicate.entity.EntityEquipmentPredicate; import net.minecraft.predicate.entity.EntityPredicate; +import net.minecraft.predicate.entity.PlayerPredicate; import net.minecraft.predicate.item.ItemPredicate; +import net.minecraft.stat.Stats; import net.minecraft.text.Text; import net.minecraft.util.Identifier; +import net.minecraft.util.UseAction; import su.a71.new_soviet.NewSoviet; +import su.a71.new_soviet.items.DiceItem; import su.a71.new_soviet.registration.NSE_Items; +import su.a71.new_soviet.registration.NSE_Stats; +import su.a71.new_soviet.registration.NSE_Tags; import java.util.function.Consumer; @@ -67,34 +76,54 @@ public class Advancements implements Consumer> { .build(consumer, NewSoviet.MOD_ID + "/sickle_kill"); -// // Throw a die 100 times -// Advancement gambler = Advancement.Builder.create() -// .display( -// NSE_Items.DICE_D6, -// Text.translatable("advancement.new_soviet.gambler.name"), -// Text.translatable("advancement.new_soviet.gambler.desc"), -// new Identifier("textures/gui/advancements/backgrounds/adventure.png"), -// AdvancementFrame.CHALLENGE, -// true, // Toast -// true, // Announcement -// false // Hidden -// ) -// .criterion("threw_dice", InventoryChangedCriterion.Conditions.items(Items.DIRT)) -// .build(consumer, NewSoviet.MOD_ID + "/gambler"); - // Throw a die 1000 times -// Advancement serious_addiction = Advancement.Builder.create() -// .display( -// NSE_Items.DICE_D20, -// Text.translatable("advancement.new_soviet.serious_addiction.name"), -// Text.translatable("advancement.new_soviet.serious_addiction.desc"), -// new Identifier("textures/gui/advancements/backgrounds/adventure.png"), -// AdvancementFrame.CHALLENGE, -// true, // Toast -// true, // Announcement -// false // Hidden -// ) -// .criterion("threw_dice", InventoryChangedCriterion.Conditions.items(Items.DIRT)) -// .parent(gambler) -// .build(consumer, NewSoviet.MOD_ID + "/serious_addiction"); + // Throw a die 100 times + Advancement gambler = Advancement.Builder.create() + .display( + NSE_Items.DICE_D6, + Text.translatable("advancement.new_soviet.gambler.name"), + Text.translatable("advancement.new_soviet.gambler.desc"), + new Identifier("textures/gui/advancements/backgrounds/adventure.png"), + AdvancementFrame.TASK, + true, // Toast + true, // Announcement + false // Hidden + ) + .parent(root) + .criterion("rolled_100", UsingItemCriterion.Conditions.create( + EntityPredicate.Builder.create().type(EntityType.PLAYER).typeSpecific(PlayerPredicate.Builder.create().stat(Stats.CUSTOM.getOrCreateStat(NSE_Stats.ROLL_ANY_DICE), NumberRange.IntRange.atLeast(100)).build()), + ItemPredicate.Builder.create().tag(NSE_Tags.Items.DICE))) + .build(consumer, NewSoviet.MOD_ID + "/gambler"); + +// Throw a die 1000 times + Advancement serious_addiction = Advancement.Builder.create() + .display( + NSE_Items.DICE_D20, + Text.translatable("advancement.new_soviet.serious_addiction.name"), + Text.translatable("advancement.new_soviet.serious_addiction.desc"), + new Identifier("textures/gui/advancements/backgrounds/adventure.png"), + AdvancementFrame.CHALLENGE, + true, // Toast + true, // Announcement + false // Hidden + ) + .criterion("rolled_1000", UsingItemCriterion.Conditions.create(EntityPredicate.Builder.create().type(EntityType.PLAYER).typeSpecific(PlayerPredicate.Builder.create().stat(Stats.CUSTOM.getOrCreateStat(NSE_Stats.ROLL_ANY_DICE), NumberRange.IntRange.atLeast(1000)).build()), ItemPredicate.Builder.create().tag(NSE_Tags.Items.DICE))) + .parent(gambler) + .build(consumer, NewSoviet.MOD_ID + "/serious_addiction"); + + // Roll perfect die 100 times + Advancement lucky_throw = Advancement.Builder.create() + .display( + NSE_Items.DICE_D4, + Text.translatable("advancement.new_soviet.lucky_throw.name"), + Text.translatable("advancement.new_soviet.lucky_throw.desc"), + new Identifier("textures/gui/advancements/backgrounds/adventure.png"), + AdvancementFrame.CHALLENGE, + true, // Toast + true, // Announcement + false // Hidden + ) + .parent(gambler) + .criterion("rolled_100_perfect", UsingItemCriterion.Conditions.create(EntityPredicate.Builder.create().type(EntityType.PLAYER).typeSpecific(PlayerPredicate.Builder.create().stat(Stats.CUSTOM.getOrCreateStat(NSE_Stats.ROLL_PERFECT_DICE), NumberRange.IntRange.atLeast(100)).build()), ItemPredicate.Builder.create().tag(NSE_Tags.Items.DICE))) + .build(consumer, NewSoviet.MOD_ID + "/lucky_throw"); } } diff --git a/src/main/java/su/a71/new_soviet/items/DiceItem.java b/src/main/java/su/a71/new_soviet/items/DiceItem.java index c7ac541..12302e7 100644 --- a/src/main/java/su/a71/new_soviet/items/DiceItem.java +++ b/src/main/java/su/a71/new_soviet/items/DiceItem.java @@ -48,7 +48,7 @@ public class DiceItem extends Item { user.sendMessage(Text.translatable(itemStack.getCount() == 1 ? "item.new_soviet.dice.thrown" : "item.new_soviet.dice.thrown_multiple").append(" " + output.subSequence(0, output.length() - 2)), true); } } - + user.increaseStat(Stats.CUSTOM.getOrCreateStat(NSE_Stats.ROLL_ANY_DICE), itemStack.getCount()); user.increaseStat(Stats.USED.getOrCreateStat(this), itemStack.getCount()); return TypedActionResult.success(itemStack, world.isClient()); } diff --git a/src/main/java/su/a71/new_soviet/registration/NSE_Stats.java b/src/main/java/su/a71/new_soviet/registration/NSE_Stats.java index 446958b..a27c993 100644 --- a/src/main/java/su/a71/new_soviet/registration/NSE_Stats.java +++ b/src/main/java/su/a71/new_soviet/registration/NSE_Stats.java @@ -8,10 +8,14 @@ import net.minecraft.util.Identifier; import su.a71.new_soviet.NewSoviet; public class NSE_Stats extends NSE_BaseRegistration { + public static final Identifier ROLL_ANY_DICE = new Identifier(NewSoviet.MOD_ID, "roll_dice"); public static final Identifier ROLL_PERFECT_DICE = new Identifier(NewSoviet.MOD_ID, "roll_perfect_dice"); public static void init() { Registry.register(Registries.CUSTOM_STAT, "roll_perfect_dice", ROLL_PERFECT_DICE); Stats.CUSTOM.getOrCreateStat(ROLL_PERFECT_DICE, StatFormatter.DEFAULT); + + Registry.register(Registries.CUSTOM_STAT, "roll_dice", ROLL_ANY_DICE); + Stats.CUSTOM.getOrCreateStat(ROLL_ANY_DICE, StatFormatter.DEFAULT); } } \ No newline at end of file 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 525ef0f..2a8ca21 100644 --- a/src/main/resources/assets/new_soviet/lang/en_us.json +++ b/src/main/resources/assets/new_soviet/lang/en_us.json @@ -474,5 +474,11 @@ "advancement.new_soviet.sickle.name": "Tool of a worker", "advancement.new_soviet.sickle.desc": "Acquire a sickle", "advancement.new_soviet.sickle_kill.name": "Kolkhoz Warrior", - "advancement.new_soviet.sickle_kill.desc": "Kill someone with a sickle" + "advancement.new_soviet.sickle_kill.desc": "Kill someone with a sickle", + "advancement.new_soviet.gambler.name": "Gambler", + "advancement.new_soviet.gambler.desc": "Roll dice 100 times", + "advancement.new_soviet.serious_addiction.name": "Serious addiction", + "advancement.new_soviet.serious_addiction.desc": "Throw a die 1000 times, and then reevaluate your life choices", + "advancement.new_soviet.lucky_throw.name": "Lucky throw", + "advancement.new_soviet.lucky_throw.desc": "Roll a perfect die 100 times" } \ No newline at end of file diff --git a/src/main/resources/assets/new_soviet/models/item/cigarette.json b/src/main/resources/assets/new_soviet/models/item/cigarette.json index a25de1c..ff9bc99 100644 --- a/src/main/resources/assets/new_soviet/models/item/cigarette.json +++ b/src/main/resources/assets/new_soviet/models/item/cigarette.json @@ -33,8 +33,8 @@ "rotation": [90, 0, 0] }, "gui": { - "rotation": [-157, 0, 0], - "scale": [3.5, 3.5, 3.5] + "rotation": [-155, 225, 0], + "scale": [2.5, 2.5, 2.5] }, "head": { "rotation": [90, 0, 0],