From fab547248a8dbfc82ce74de95bd75caa493a77b0 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 10 Feb 2024 20:16:07 -0600 Subject: [PATCH 01/46] update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d483c986..10ef7dfb 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ neoforge/runs/ *.iml *.ipr *.iws +!.idea/scopes/ # Visual Studio Code .settings/ From 2e2401653d8d4b7fc1b75ac5943d7c925b1f9a1d Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 10 Feb 2024 20:17:03 -0600 Subject: [PATCH 02/46] a --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 10ef7dfb..5e883a7a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,7 @@ neoforge/runs/ *.launch # IntelliJ Idea -.idea/ +.idea/* *.iml *.ipr *.iws From b9c915d997232f438c24c41daad6cd767cd3e3c5 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sun, 11 Feb 2024 03:15:16 -0600 Subject: [PATCH 03/46] New altar animations --- .../client/content/events/ClientEvents.java | 34 ++++++++ .../render/animation/AnimationHelper.java | 30 +++++++ .../render/animation/EasingFunction.java | 19 +++++ .../client/render/animation/Keyframe.java | 19 +++++ .../AltarCatalyzerBlockEntityRenderer.java | 35 +++++++- .../render/model/AltarCatalyzerModel.java | 77 ++++++++++++++++++ .../wwizardry/textures/entity/altar.png | Bin 0 -> 3189 bytes .../client/FabricClientInitializer.java | 16 +--- gradle.properties | 3 +- gradle/libs.versions.toml | 2 +- .../neoforge/NeoForgeInitializer.java | 16 +--- 11 files changed, 218 insertions(+), 33 deletions(-) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/AnimationHelper.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/EasingFunction.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/Keyframe.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java create mode 100644 common/src/main/resources/assets/wwizardry/textures/entity/altar.png diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java index 8932d8ad..a8e59877 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java @@ -1,19 +1,32 @@ package dev.sweetberry.wwizardry.client.content.events; import dev.sweetberry.wwizardry.api.Lazy; +import dev.sweetberry.wwizardry.client.WanderingWizardryClient; +import dev.sweetberry.wwizardry.client.render.model.AltarCatalyzerModel; import dev.sweetberry.wwizardry.content.block.BlockInitializer; import dev.sweetberry.wwizardry.content.block.entity.AltarCatalyzerBlockEntity; import dev.sweetberry.wwizardry.content.block.entity.AltarPedestalBlockEntity; import dev.sweetberry.wwizardry.client.render.blockentity.AltarCatalyzerBlockEntityRenderer; import dev.sweetberry.wwizardry.client.render.blockentity.AltarPedestalBlockEntityRenderer; +import dev.sweetberry.wwizardry.content.block.sign.ModdedSignBlock; +import dev.sweetberry.wwizardry.content.component.BoatComponent; import dev.sweetberry.wwizardry.content.item.ItemInitializer; +import net.minecraft.client.model.BoatModel; +import net.minecraft.client.model.ChestBoatModel; +import net.minecraft.client.model.geom.LayerDefinitions; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.blockentity.ChestRenderer; +import net.minecraft.client.renderer.blockentity.HangingSignRenderer; +import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.client.renderer.item.ClampedItemPropertyFunction; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.entity.BlockEntityType; import org.apache.logging.log4j.util.TriConsumer; import java.util.function.BiConsumer; +import java.util.function.Supplier; public class ClientEvents { public static void registerModelPredicates(TriConsumer, String, ClampedItemPropertyFunction> consumer) { @@ -39,4 +52,25 @@ public static void registerEntityRenderers(BiConsumer>, (BlockEntityRendererProvider) AltarCatalyzerBlockEntityRenderer::new ); } + + public static void registerModelLayers(BiConsumer> consumer) { + var boatModel = BoatModel.createBodyModel(); + var chestBoatModel = ChestBoatModel.createBodyModel(); + + for (var id : BoatComponent.BOATS.keySet()) { + consumer.accept(WanderingWizardryClient.getBoatLayerLocation(id, false), () -> boatModel); + consumer.accept(WanderingWizardryClient.getBoatLayerLocation(id, true), () -> chestBoatModel); + } + + var signModel = SignRenderer.createSignLayer(); + var hangingSignModel = HangingSignRenderer.createHangingSignLayer(); + + for (var id : ModdedSignBlock.SIGNS) { + consumer.accept(WanderingWizardryClient.getSignLayerLocation(id, false), () -> signModel); + consumer.accept(WanderingWizardryClient.getSignLayerLocation(id, true), () -> hangingSignModel); + } + + var altarModel = AltarCatalyzerModel.createLayer(); + consumer.accept(AltarCatalyzerModel.LAYER_LOCATION, () -> altarModel); + } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/AnimationHelper.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/AnimationHelper.java new file mode 100644 index 00000000..8a1f3364 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/AnimationHelper.java @@ -0,0 +1,30 @@ +package dev.sweetberry.wwizardry.client.render.animation; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.util.Mth; +import net.minecraft.util.Tuple; +import net.minecraft.world.phys.Vec3; +import org.joml.Quaternionf; + +public class AnimationHelper { + public static void applyKeyframes(Keyframe[] frames, double time, PoseStack stack) { + var tuple = applyKeyframes(frames, time); + var angle = tuple.getB(); + var pos = tuple.getA(); + stack.mulPose(new Quaternionf().rotateXYZ((float)Math.toRadians(angle.x), (float)Math.toRadians(angle.y), (float)Math.toRadians(angle.z))); + stack.translate(pos.x, pos.y, pos.z); + } + + public static Tuple applyKeyframes(Keyframe[] frames, double time) { + if (frames.length == 0) + return new Tuple<>(new Vec3(0, 0, 0), new Vec3(0, 0, 0)); + if (frames.length == 1) + return new Tuple<>(frames[0].posModifier(), frames[0].posModifier()); + var lastIdx = Math.max(0, Mth.binarySearch(0, frames.length, it -> time <= frames[it].endTime()) - 1); + var last = frames[lastIdx]; + var nextIdx = Math.min(frames.length - 1, lastIdx + 1); + var next = frames[nextIdx]; + var timeOffset = (time - last.endTime()) / (next.endTime() - last.endTime()); + return next.apply(last, timeOffset); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/EasingFunction.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/EasingFunction.java new file mode 100644 index 00000000..2dbbd32e --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/EasingFunction.java @@ -0,0 +1,19 @@ +package dev.sweetberry.wwizardry.client.render.animation; + +@FunctionalInterface +public interface EasingFunction { + double ease(double time); + + static double linear(double time) { + return time; + } + + static double inOutBack(double time) { + var c1 = 1.70158; + var c2 = c1 * 1.525; + + return time < 0.5 + ? (Math.pow(2 * time, 2) * ((c2 + 1) * 2 * time - c2)) / 2 + : (Math.pow(2 * time - 2, 2) * ((c2 + 1) * (time * 2 - 2) + c2) + 2) / 2; + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/Keyframe.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/Keyframe.java new file mode 100644 index 00000000..280da082 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/animation/Keyframe.java @@ -0,0 +1,19 @@ +package dev.sweetberry.wwizardry.client.render.animation; + +import net.minecraft.util.Tuple; +import net.minecraft.world.phys.Vec3; + +public record Keyframe(EasingFunction function, double endTime, Vec3 posModifier, Vec3 angleModifier) { + public Tuple apply(Keyframe last, double timeOffset) { + var value = function.ease(timeOffset); + var pos = last.posModifier.equals(posModifier) + ? posModifier + : last.posModifier.lerp(posModifier, value); + + var angle = last.angleModifier.equals(angleModifier) + ? angleModifier + : last.angleModifier.lerp(angleModifier, value); + + return new Tuple<>(pos, angle); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarCatalyzerBlockEntityRenderer.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarCatalyzerBlockEntityRenderer.java index 6075b39d..b35678c2 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarCatalyzerBlockEntityRenderer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarCatalyzerBlockEntityRenderer.java @@ -1,19 +1,37 @@ package dev.sweetberry.wwizardry.client.render.blockentity; import com.mojang.blaze3d.vertex.PoseStack; +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.client.WanderingWizardryClient; +import dev.sweetberry.wwizardry.client.render.model.AltarCatalyzerModel; +import dev.sweetberry.wwizardry.content.block.BlockInitializer; +import dev.sweetberry.wwizardry.content.block.altar.AltarBlock; import dev.sweetberry.wwizardry.content.block.entity.AltarCatalyzerBlockEntity; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -public record AltarCatalyzerBlockEntityRenderer(BlockEntityRendererProvider.Context context) implements AltarBlockEntityRenderer { +public class AltarCatalyzerBlockEntityRenderer implements AltarBlockEntityRenderer { private static final double ALTAR_TOP = 16.5d / 16d; + private BlockEntityRendererProvider.Context context; + private final AltarCatalyzerModel model; + + public AltarCatalyzerBlockEntityRenderer(BlockEntityRendererProvider.Context context) { + this.context = context; + model = new AltarCatalyzerModel(context.bakeLayer(AltarCatalyzerModel.LAYER_LOCATION)); + } @Override public boolean shouldHover(AltarCatalyzerBlockEntity entity) { return AltarBlockEntityRenderer.super.shouldHover(entity) || !entity.recipeRemainder.isEmpty(); } + @Override + public BlockEntityRendererProvider.Context context() { + return context; + } + @Override public void beforeRender(AltarCatalyzerBlockEntity entity, float tickDelta, PoseStack matrices, MultiBufferSource vertexConsumers, int light, int overlay) { var pos = entity.getBlockPos(); @@ -23,4 +41,19 @@ public void beforeRender(AltarCatalyzerBlockEntity entity, float tickDelta, Pose // Set to top of altar matrices.translate(0.5, ALTAR_TOP, 0.5); } + + @Override + public void render(AltarCatalyzerBlockEntity entity, float tickDelta, PoseStack matrices, MultiBufferSource vertexConsumers, int light, int overlay) { + AltarBlockEntityRenderer.super.render(entity, tickDelta, matrices, vertexConsumers, light, overlay); + if (!BlockInitializer.ALTAR_CATALYZER.get().isComplete(entity.getLevel(), entity.getBlockState(), entity.getBlockPos())) + return; + matrices.pushPose(); + matrices.translate(0.5f, -0.25, 0.5f); + var buf = vertexConsumers.getBuffer(RenderType.entityTranslucentEmissive(AltarCatalyzerModel.TEXTURE_ID)); + model.ticks = WanderingWizardryClient.tickCounter + tickDelta; + model.crafting = entity.crafting; + model.timeToCraft = entity.crafting ? entity.getCraftingTime(tickDelta) : 0; + model.renderToBuffer(matrices, buf, light, overlay, 1, 1, 1, entity.clampLerpTime(0, tickDelta, 0.125f, 1)); + matrices.popPose(); + } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java new file mode 100644 index 00000000..cf9709ef --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java @@ -0,0 +1,77 @@ +package dev.sweetberry.wwizardry.client.render.model; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.client.render.animation.AnimationHelper; +import dev.sweetberry.wwizardry.client.render.animation.EasingFunction; +import dev.sweetberry.wwizardry.client.render.animation.Keyframe; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.phys.Vec3; + +public class AltarCatalyzerModel extends Model { + public static final ResourceLocation ID = WanderingWizardry.id("altar_catalyzer"); + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(ID, "main"); + public static final ResourceLocation TEXTURE_ID = WanderingWizardry.id("textures/entity/altar.png"); + + public static final Keyframe[] LAYER_1_FRAMES = new Keyframe[] { + new Keyframe(EasingFunction::linear, 0, new Vec3(0, 0, 0), new Vec3(0, 0, 0)), + new Keyframe(EasingFunction::linear, 0.75, new Vec3(0, 0, 0), new Vec3(0, 0, 0)), + new Keyframe(EasingFunction::inOutBack, 1.5, new Vec3(0, 0, 0), new Vec3(0, -90, 0)), + new Keyframe(EasingFunction::linear, 2.75, new Vec3(0, 0, 0), new Vec3(0, -90, 0)), + new Keyframe(EasingFunction::inOutBack, 3.5, new Vec3(0, 0, 0), new Vec3(0, 0, 0)), + }; + public static final Keyframe[] LAYER_2_FRAMES = new Keyframe[] { + new Keyframe(EasingFunction::linear, 0, new Vec3(0, 0, 0), new Vec3(0, 0, 0)), + new Keyframe(EasingFunction::linear, 4, new Vec3(0, 0, 0), new Vec3(0, -360, 0)) + }; + public static final Keyframe[] LAYER_2_FRAMES_FAST = new Keyframe[] { + new Keyframe(EasingFunction::linear, 0, new Vec3(0, 0, 0), new Vec3(0, 0, 0)), + new Keyframe(EasingFunction::linear, 4, new Vec3(0, 0, 0), new Vec3(0, -720, 0)) + }; + + private final ModelPart layer1; + private final ModelPart layer2; + public float ticks = 0; + public boolean crafting = false; + public float timeToCraft = 0; + + public AltarCatalyzerModel(ModelPart root) { + super(RenderType::entityCutoutNoCull); + layer1 = root.getChild("layer1"); + layer2 = root.getChild("layer2"); + } + + public static LayerDefinition createLayer() { + var meshdefinition = new MeshDefinition(); + var partdefinition = meshdefinition.getRoot(); + + partdefinition.addOrReplaceChild("layer1", CubeListBuilder.create().texOffs(-80, 80).addBox(-40.0F, 0.0F, -40.0F, 80.0F, 0.1F, 80.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + + partdefinition.addOrReplaceChild("layer2", CubeListBuilder.create().texOffs(-80, 0).addBox(-40.0F, 0.0F, -40.0F, 80.0F, 0.1F, 80.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + + return LayerDefinition.create(meshdefinition, 80, 240); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + WanderingWizardry.id(timeToCraft + ""); + var seconds = ticks / 20; + seconds %= 4; + poseStack.pushPose(); + AnimationHelper.applyKeyframes(LAYER_1_FRAMES, seconds, poseStack); + layer1.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + poseStack.popPose(); + + poseStack.pushPose(); + AnimationHelper.applyKeyframes(crafting ? LAYER_2_FRAMES_FAST : LAYER_2_FRAMES, seconds, poseStack); + layer2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + poseStack.popPose(); + } +} diff --git a/common/src/main/resources/assets/wwizardry/textures/entity/altar.png b/common/src/main/resources/assets/wwizardry/textures/entity/altar.png new file mode 100644 index 0000000000000000000000000000000000000000..25c0fb27bf3e4c8ee9b78a57a12441bbb7fb7635 GIT binary patch literal 3189 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 PfbrEE=vVqqk-)zIj!WzO literal 0 HcmV?d00001 diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java index 5d67da01..326e4ee1 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java @@ -61,21 +61,7 @@ public void onInitializeClient() { })); }); - var boatModel = BoatModel.createBodyModel(); - var chestBoatModel = ChestBoatModel.createBodyModel(); - - for (var id : BoatComponent.BOATS.keySet()) { - EntityModelLayerRegistry.registerModelLayer(WanderingWizardryClient.getBoatLayerLocation(id, false), () -> boatModel); - EntityModelLayerRegistry.registerModelLayer(WanderingWizardryClient.getBoatLayerLocation(id, true), () -> chestBoatModel); - } - - var signModel = SignRenderer.createSignLayer(); - var hangingSignModel = HangingSignRenderer.createHangingSignLayer(); - - for (var id : ModdedSignBlock.SIGNS) { - EntityModelLayerRegistry.registerModelLayer(WanderingWizardryClient.getSignLayerLocation(id, false), () -> signModel); - EntityModelLayerRegistry.registerModelLayer(WanderingWizardryClient.getSignLayerLocation(id, true), () -> hangingSignModel); - } + ClientEvents.registerModelLayers((id, layer) -> EntityModelLayerRegistry.registerModelLayer(id, layer::get)); for (var layer : RenderLayers.LAYERS.entrySet()) BlockRenderLayerMap.INSTANCE.putBlocks(layer.getKey(), layer.getValue().stream().map(Supplier::get).toArray(Block[]::new)); diff --git a/gradle.properties b/gradle.properties index 424cdff3..f61fe80f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,7 @@ # Gradle Properties -org.gradle.jvmargs = -Xmx4G +org.gradle.jvmargs = -Xmx2G org.gradle.parallel = true +org.gradle.daemon=false # Mod Properties version = 1.0.11 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d8c9a2a8..c75dd0c8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -66,6 +66,6 @@ compat_fabric = ["emi_fabric", "modmenu"] [plugins] idea_ext = { id = "org.jetbrains.gradle.plugin.idea-ext", version = "1.1.7" } -loom = { id = "org.quiltmc.loom", version = "1.4.+" } +loom = { id = "org.quiltmc.loom", version = "1.4.1" } vanilla_gradle = { id = "org.spongepowered.gradle.vanilla", version = "0.2.1-SNAPSHOT" } neogradle = { id = "net.neoforged.gradle.userdev", version = "7.0.88" } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java index 96ee4541..e8c8d0b2 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java @@ -96,20 +96,6 @@ public void registerBlockEntityRenderers(EntityRenderersEvent.RegisterRenderers @SubscribeEvent public void registerEntityLayers(EntityRenderersEvent.RegisterLayerDefinitions event) { - var boatModel = BoatModel.createBodyModel(); - var chestBoatModel = ChestBoatModel.createBodyModel(); - - for (var id : BoatComponent.BOATS.keySet()) { - event.registerLayerDefinition(WanderingWizardryClient.getBoatLayerLocation(id, false), () -> boatModel); - event.registerLayerDefinition(WanderingWizardryClient.getBoatLayerLocation(id, true), () -> chestBoatModel); - } - - var signModel = SignRenderer.createSignLayer(); - var hangingSignModel = HangingSignRenderer.createHangingSignLayer(); - - for (var id : ModdedSignBlock.SIGNS) { - event.registerLayerDefinition(WanderingWizardryClient.getSignLayerLocation(id, false), () -> signModel); - event.registerLayerDefinition(WanderingWizardryClient.getSignLayerLocation(id, true), () -> hangingSignModel); - } + ClientEvents.registerModelLayers(event::registerLayerDefinition); } } From 753894736ceb0b7b7a1e843aa1a728dd5bfbc8b4 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Tue, 13 Feb 2024 13:33:03 -0600 Subject: [PATCH 04/46] Add smithing charm --- .../assets/wwizardry/lang/en_us.json | 2 +- .../content/item/ItemInitializer.java | 9 ++ .../content/item/charm/SmithingCharmItem.java | 135 ++++++++++++++++++ .../wwizardry/mixin/Mixin_Item.java | 3 +- .../wwizardry/models/item/smithing_charm.json | 6 + .../textures/item/smithing_charm.png | Bin 0 -> 414 bytes data/lang/en_us.fennec | 1 + 7 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java create mode 100644 common/src/main/resources/assets/wwizardry/models/item/smithing_charm.json create mode 100644 common/src/main/resources/assets/wwizardry/textures/item/smithing_charm.png diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index bb5899e9..50af4b8e 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -1 +1 @@ -{"itemGroup.wwizardry.items":"Wandering Wizardry Items","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file +{"itemGroup.wwizardry.items":"Wandering Wizardry Items","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java index 33d5e4e8..95d34456 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java @@ -9,6 +9,7 @@ import dev.sweetberry.wwizardry.content.block.altar.AltarPedestalBlock; import dev.sweetberry.wwizardry.content.item.charm.BrewingCharmItem; import dev.sweetberry.wwizardry.content.item.charm.CraftingCharmItem; +import dev.sweetberry.wwizardry.content.item.charm.SmithingCharmItem; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; @@ -191,6 +192,14 @@ public class ItemInitializer { ) ); + public static final Lazy SMITHING_CHARM = registerItem( + "smithing_charm", + () -> new SmithingCharmItem( + new Item.Properties() + .stacksTo(1) + ) + ); + public static final Lazy MUSIC_DISC_WANDERING = registerItem( "music_disc_wandering", () -> new RecordItem( diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java new file mode 100644 index 00000000..5cbdb3d1 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java @@ -0,0 +1,135 @@ +package dev.sweetberry.wwizardry.content.item.charm; + +import dev.sweetberry.wwizardry.api.altar.AltarRecipeView; +import net.minecraft.world.Container; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.SmithingTemplateItem; +import net.minecraft.world.item.crafting.*; +import net.minecraft.world.level.Level; + +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class SmithingCharmItem extends AltarCharmItem{ + public SmithingCharmItem(Properties settings) { + super(settings); + } + + @Override + public boolean tryCraft(AltarRecipeView view, Level world) { + var recipes = getRecipes(world.getRecipeManager()); + + AltarRecipeView.AltarDirection templateDirection = null; + ItemStack templateStack = null; + + for (var dir : AltarRecipeView.AltarDirection.cardinals()) { + var stack = view.getItemInPedestal(dir); + if (stack == null) + continue; + if (stack.getItem() instanceof SmithingTemplateItem smithingTemplate) { + templateStack = stack; + templateDirection = dir; + break; + } + } + if (templateStack == null) + return false; + var finalTemplateStack = templateStack; + var matchingRecipes = recipes.filter( + it -> it.value().isTemplateIngredient(finalTemplateStack) + ).toList(); + + ItemStack additionStack = null; + ItemStack baseStack = null; + AltarRecipeView.AltarDirection baseDirection = null; + + for (var dir : AltarRecipeView.AltarDirection.cardinalWithout(templateDirection)) { + var stack = view.getItemInPedestal(dir); + if (stack == null) + continue; + if (matchingRecipes.stream().anyMatch(it -> it.value().isAdditionIngredient(stack)) && additionStack == null) + additionStack = stack; + else if (matchingRecipes.stream().anyMatch(it -> it.value().isBaseIngredient(stack)) && baseStack == null) { + baseStack = stack; + baseDirection = dir; + } + } + if (additionStack == null || baseStack == null || baseDirection == null) + return false; + var finalAdditionStack = additionStack; + var finalBaseStack = baseStack; + var maybeRecipe = matchingRecipes.stream() + .filter( + it -> + it.value().isAdditionIngredient(finalAdditionStack) + && it.value().isBaseIngredient(finalBaseStack) + ).findFirst(); + if (maybeRecipe.isEmpty()) + return false; + var recipe = maybeRecipe.get().value(); + var container = new FakeContainer(templateStack, baseStack, additionStack); + view.setAllAsRemainders(); + view.setResultInPedestal(baseDirection, recipe.assemble(container, world.registryAccess())); + + return true; + } + + private Stream> getRecipes(RecipeManager manager) { + return manager.getAllRecipesFor(RecipeType.SMITHING) + .stream(); + } + + private record FakeContainer(ItemStack template, ItemStack base, ItemStack material) implements Container { + @Override + public int getContainerSize() { + return 3; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public ItemStack getItem(int i) { + return switch (i) { + case 0 -> template; + case 1 -> base; + case 2 -> material; + default -> null; + }; + } + + @Override + public ItemStack removeItem(int i, int i1) { + return null; + } + + @Override + public ItemStack removeItemNoUpdate(int i) { + return null; + } + + @Override + public void setItem(int i, ItemStack itemStack) { + + } + + @Override + public void setChanged() { + + } + + @Override + public boolean stillValid(Player player) { + return false; + } + + @Override + public void clearContent() { + + } + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Item.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Item.java index 689d379f..0d114b08 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Item.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Item.java @@ -11,7 +11,8 @@ public class Mixin_Item { @Inject( method = "getCraftingRemainingItem", - at = @At("RETURN") + at = @At("RETURN"), + cancellable = true ) private void wwizardry$setRemainder(CallbackInfoReturnable cir) { var self = (Item)(Object)this; diff --git a/common/src/main/resources/assets/wwizardry/models/item/smithing_charm.json b/common/src/main/resources/assets/wwizardry/models/item/smithing_charm.json new file mode 100644 index 00000000..016c0b38 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/smithing_charm.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "wwizardry:item/smithing_charm" + } +} diff --git a/common/src/main/resources/assets/wwizardry/textures/item/smithing_charm.png b/common/src/main/resources/assets/wwizardry/textures/item/smithing_charm.png new file mode 100644 index 0000000000000000000000000000000000000000..f816b753dacd74bdf4ddab9f2dcb865786a2bb6c GIT binary patch literal 414 zcmV;P0b%}$P)4Gu*rTfI&%F0ZhMr_Y!O#x8 zO2BRaAG6+nePv&GV14`bmZ3B46oZ?y0oV`_pNmZxY)ERqFs2JY1_Zk0f}QyI#WjY7 z4Y$Bf208u3vkwgAv&_I^H8TPTy8smOpg;q80TctEfP;yF41f3aE_N4yyZ{Qk#s!`z z8bD5mc>zRYH2@T%AaBSBnt}ZZiUE+#Ab?9VN-V$(0J#E|U_cr{0OkS^8`*XY17L=L zXd!N8utt~*KpH^+7XM%layozsz-W+nkj2n75;OqaKwNwPib3xYmiUPM00000NkvXX Iu0mjf0E!!-S^xk5 literal 0 HcmV?d00001 diff --git a/data/lang/en_us.fennec b/data/lang/en_us.fennec index a174a04c..3bef3830 100644 --- a/data/lang/en_us.fennec +++ b/data/lang/en_us.fennec @@ -211,6 +211,7 @@ slot_charm = "Slot Charm" crafting_charm = "Crafting Charm" brewing_charm = "Brewing Charm" + smithing_charm = "Smithing Charm" soul_mirror = "Soul Mirror" From e76055499568ecc1506cf3c734e43dd2bf121151 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sun, 18 Feb 2024 18:36:32 -0600 Subject: [PATCH 05/46] Make sculk lab generate bigger, update textures for slot, crafting, and brewing charms --- .../content/block/BlockInitializer.java | 4 +++- .../content/item/charm/SmithingCharmItem.java | 2 -- .../wwizardry/textures/item/brewing_charm.png | Bin 420 -> 405 bytes .../wwizardry/textures/item/crafting_charm.png | Bin 423 -> 396 bytes .../wwizardry/textures/item/slot_charm.png | Bin 405 -> 399 bytes .../wwizardry/worldgen/structure/sculk_lab.json | 2 +- 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java index bdf0a4df..c90ad4c3 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java @@ -239,10 +239,12 @@ public class BlockInitializer { () -> BlockEntityType.Builder .of( LogicGateBlockEntity::new, - MODULO_COMPARATOR.get() + MODULO_COMPARATOR.get(), + REDSTONE_STEPPER.get() ).build(null) ); + public static Lazy registerBlock(String id, Supplier block) { return (Lazy) BLOCKS.register(WanderingWizardry.id(id), (Supplier) block); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java index 5cbdb3d1..5f768e44 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java @@ -4,12 +4,10 @@ import net.minecraft.world.Container; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.SmithingTemplateItem; import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -import java.util.stream.Collectors; import java.util.stream.Stream; public class SmithingCharmItem extends AltarCharmItem{ diff --git a/common/src/main/resources/assets/wwizardry/textures/item/brewing_charm.png b/common/src/main/resources/assets/wwizardry/textures/item/brewing_charm.png index 75b11fa4859e72b67f92f4725aedccb73a145253..ed8844f50940b5f8f72ee3f2420965424cad6362 100644 GIT binary patch delta 210 zcmV;@04@Kd1C;}iBatwxf1kIz02~e=7u3uMfXh93e+ttDAOiy3a={uv&M%l0fD-yg z7e5EP1O#vz0CEA$=~Ff(phO`kKtZl}{NftJyRUb#y8z||SfG9T^_GE)O_%{hccz_U z02zwY0Fcu_-jESA13MGsiI59R;?&ddbz4ond?jRXxq){Ku006MuXOvH$=8 delta 224 zcmV<603ZLA1Ed3xBMSflb5ch_0Itp)>5(C=e~)iaW8h*F279GuMgUyy$@^27E&v%2 z=#~o(IFR$v{e5)tbFfQ50H*;U7r>m}xWE(ae^@LexlRDP;_-`X4DY_)#qI)_7eIjq zQj8p(IerTmrff>UZ2-t7kT+xm&A_&ToV;uA1qKNz0eDoR+l~?oFatoY04W3o9>@zI zO17+o7MKPBWancT05b$c3vnxhHGmBI_UkQJBM89aAC^yWW+sq#kTVmyMuG+)YsSY0 a0I=`W5g)6~&Hw-a07*qoM6N<$f&c(Od00pQ diff --git a/common/src/main/resources/assets/wwizardry/textures/item/crafting_charm.png b/common/src/main/resources/assets/wwizardry/textures/item/crafting_charm.png index 16730e0cdfb62eea1d4ae9b4b4506adeeaa9afc1..7fd1303e426d892052a7ce38575ed08f1e7a95b6 100644 GIT binary patch delta 317 zcmV-D0mA;L1B?TZBLV?Zkuo`d!!^M)Bh#l(pF}YP!vL7gEg2ga=It&3+n(dMfMMI! z2DnR*T>&=$WIIeV$hk)sKWFgEHvl^wnGJH`#k-psKK;D}){9|)mv#e#gp>e-o~8oB zrRxtEUOf8%=kMBkfuV7MC&QEXr!WoRW7hkxuj~uLlTLucA4 zhAEp8-~ox#fIzogus=bX7B<{sh;LA1;9?U78;;flKmg{Q z@>ymK@4nu}?FEox^ninT2P6)11y%z<8bRS8BWMOz1oAg1z|h&qno(i_W&kK4L16&$ zD@Zd4AhYor05b$c3vnwjqi6Px$Uy&s_e}gr_0J0$<@zbYIq8Nf<0LCFMwV0(@rsz&oX1+ViN`j4Ne0B-E!d}KE3KVLwti8*bA`mfQ12G z7v%UYK=A^|D=7S?;vL;bd3ZJAU2l+0CREF5eAU$5&!@I07*qoM6N<$f&c)@c$1a@ diff --git a/common/src/main/resources/assets/wwizardry/textures/item/slot_charm.png b/common/src/main/resources/assets/wwizardry/textures/item/slot_charm.png index ee4a09f05ecc24215ff3f7bdddcdcfa1c1f5933b..356f9efaf005aacf911060f138a16aa347b78f49 100644 GIT binary patch delta 320 zcmV-G0l)s01CIlcBLV?dkuo`dqi90rgA6-;`Xq`W7zTiB1}OpokY#CdhV>;UELC8UWG=^9C#mVTlOD$EF!27GMT|Tmf<>$k`zO zBWnh+k!{B?0A>h?7UEVj25SZx1amfs4~u`WBoN@tOd#*T6k*dy&;Vr3_}Bn|AL9{4 SN)cTE0000Px$PLU-!e}gr_0J0$<@zbYIq8Nf<0L*5P z0U%ppd=MLCIEY4e1>69T?a0oakhg*1()9-nFP?p1aC0_bu#T048+P&TW`<9HFM;)9 zHJ~M914Dd+8Uq)bFx=Loi=Q+2AVud_{$kj*_X0QoL4gSilW)J?VmAP!5flzGf@WZU!lDdDgT&A^qr?Kt z08l`JTmXszkOmMyW+OWv!vL5eAX Date: Tue, 20 Feb 2024 22:33:14 -0600 Subject: [PATCH 06/46] Add anvil charm and other misc changes --- .../assets/wwizardry/lang/en_us.json | 2 +- .../wwizardry/api/config/ConfigHelper.java | 23 +--- .../sweetberry/wwizardry/config/Config.java | 31 +++++ .../wwizardry/content/ContentInitializer.java | 2 - .../entity/AltarCatalyzerBlockEntity.java | 8 +- .../wwizardry/content/datagen/BrickType.java | 8 +- .../wwizardry/content/datagen/WoodType.java | 38 +++--- .../content/gamerule/GameruleInitializer.java | 20 --- .../content/item/ItemInitializer.java | 129 +++++++++++++----- .../content/item/charm/AnvilCharmItem.java | 48 +++++++ .../content/item/charm/SmithingCharmItem.java | 8 +- .../block/sign_post/wwizardry/denia.png | Bin 750 -> 0 bytes .../sign_post/wwizardry/denia.png.mcmeta | 12 -- .../wwizardry/models/item/anvil_charm.json | 6 + .../wwizardry/textures/item/anvil_charm.png | Bin 0 -> 405 bytes data/lang/en_us.fennec | 6 +- .../wwizardry/fabric/FabricInitializer.java | 9 -- .../neoforge/NeoForgeInitializer.java | 9 -- 18 files changed, 217 insertions(+), 142 deletions(-) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/config/Config.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/gamerule/GameruleInitializer.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java delete mode 100644 common/src/main/resources/assets/aurorasdeco/textures/block/sign_post/wwizardry/denia.png delete mode 100644 common/src/main/resources/assets/aurorasdeco/textures/block/sign_post/wwizardry/denia.png.mcmeta create mode 100644 common/src/main/resources/assets/wwizardry/models/item/anvil_charm.json create mode 100644 common/src/main/resources/assets/wwizardry/textures/item/anvil_charm.png diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index 50af4b8e..f3f724e7 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -1 +1 @@ -{"itemGroup.wwizardry.items":"Wandering Wizardry Items","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file +{"itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/config/ConfigHelper.java b/common/src/main/java/dev/sweetberry/wwizardry/api/config/ConfigHelper.java index da86ea39..22da448d 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/config/ConfigHelper.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/api/config/ConfigHelper.java @@ -20,7 +20,9 @@ public static T loadGlobalConfig(T orElse, String file) { var path = Path.of("config", file); try { var str = new String(Files.readAllBytes(path)); - return GSON.fromJson(str, (Class) orElse.getClass()); + var value = GSON.fromJson(str, (Class) orElse.getClass()); + saveGlobalConfig(value, file); + return value; } catch (IOException e) { saveGlobalConfig(orElse, file); return orElse; @@ -38,23 +40,4 @@ public static void saveGlobalConfig(T object, String file) { writer.close(); } catch (IOException ignored) {} } - - public static T loadWorldConfig(T orElse, MinecraftServer server, String file) { - var path = server.getWorldPath(LevelResource.ROOT).resolve(file).toFile(); - try { - return GSON.fromJson(new FileReader(path), (Class) orElse.getClass()); - } catch (FileNotFoundException e) { - saveWorldConfig(orElse, server, file); - return orElse; - } - } - - public static void saveWorldConfig(T object, MinecraftServer server, String file) { - var path = server.getWorldPath(LevelResource.ROOT).resolve(file).toFile(); - try { - if (!path.exists()) - path.createNewFile(); - GSON.toJson(object, new FileWriter(path)); - } catch (IOException ignored) {} - } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/config/Config.java b/common/src/main/java/dev/sweetberry/wwizardry/config/Config.java new file mode 100644 index 00000000..cadbaf17 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/config/Config.java @@ -0,0 +1,31 @@ +package dev.sweetberry.wwizardry.config; + +import dev.sweetberry.wwizardry.api.config.ConfigHelper; + +// TODO: Make it per-world. +public class Config { + public static final String name = "wwizardry.json"; + private static final Config globalInstance = ConfigHelper.loadGlobalConfig(new Config(), name); + + private double altarSpreadMultiplier = 1; + + private boolean allowOpEnchants = false; + + public static double getAltarSpreadMultiplier() { + return globalInstance.altarSpreadMultiplier; + } + + public static void setAltarSpreadMultiplier(double altarSpreadMultiplier) { + globalInstance.altarSpreadMultiplier = altarSpreadMultiplier; + ConfigHelper.saveGlobalConfig(globalInstance, name); + } + + public static boolean getAllowOpEnchants() { + return globalInstance.allowOpEnchants; + } + + public static void setAllowOpEnchants(boolean allowOpEnchants) { + globalInstance.allowOpEnchants = allowOpEnchants; + ConfigHelper.saveGlobalConfig(globalInstance, name); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index 3771cdff..53577295 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -6,13 +6,11 @@ import dev.sweetberry.wwizardry.content.criterion.CriterionInitializer; import dev.sweetberry.wwizardry.content.datagen.DatagenInitializer; import dev.sweetberry.wwizardry.content.events.EventInitializer; -import dev.sweetberry.wwizardry.content.gamerule.GameruleInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.net.NetworkingInitializer; import dev.sweetberry.wwizardry.content.painting.PaintingInitializer; import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; -import dev.sweetberry.wwizardry.content.trades.TradeInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.minecraft.advancements.CriterionTrigger; import net.minecraft.sounds.SoundEvent; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java index 814ca60b..f2175e9f 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java @@ -4,18 +4,15 @@ import dev.sweetberry.wwizardry.api.altar.AltarRecipeView; import dev.sweetberry.wwizardry.api.net.PacketRegistry; import dev.sweetberry.wwizardry.content.block.BlockInitializer; -import dev.sweetberry.wwizardry.content.block.altar.AltarCatalyzerBlock; -import dev.sweetberry.wwizardry.content.gamerule.GameruleInitializer; +import dev.sweetberry.wwizardry.config.Config; import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.net.packet.AltarCraftPacket; -import dev.sweetberry.wwizardry.content.recipe.AltarCatalyzationRecipe; import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; -import net.minecraft.util.Mth; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -24,7 +21,6 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.SculkSpreader; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; import org.jetbrains.annotations.Nullable; @@ -45,7 +41,7 @@ public AltarCatalyzerBlockEntity(BlockPos pos, BlockState state) { @Override public void startCrafting(AltarRecipeView recipe) { - var bloomMultiplier = GameruleInitializer.getAltarSpreadMultiplier(); + var bloomMultiplier = Config.getAltarSpreadMultiplier(); bloom = (int) Math.floor(recipe.getBloom() * bloomMultiplier); result = recipe.getRecipeResult(); for (var neighbor : getNeighbors()) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickType.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickType.java index cff7ad5b..b8ee3b2a 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickType.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickType.java @@ -40,16 +40,16 @@ public BrickType(String baseName, boolean plural, MapColor color, SoundType soun final var itemSettings = new Item.Properties(); BASE = BlockInitializer.registerBlock(baseName+(plural?"s":""), () -> new Block(blockSettings)); - BASE_ITEM = ItemInitializer.registerItem(baseName+(plural?"s":""), () -> new BlockItem(BASE.get(), itemSettings)); + BASE_ITEM = ItemInitializer.registerItem(baseName+(plural?"s":""), () -> new BlockItem(BASE.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); STAIRS = BlockInitializer.registerBlock(baseName+"_stairs", () -> new StairBlock(BASE.get().defaultBlockState(), blockSettings)); - STAIRS_ITEM = ItemInitializer.registerItem(baseName+"_stairs", () -> new BlockItem(STAIRS.get(), itemSettings)); + STAIRS_ITEM = ItemInitializer.registerItem(baseName+"_stairs", () -> new BlockItem(STAIRS.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); SLAB = BlockInitializer.registerBlock(baseName+"_slab", () -> new SlabBlock(blockSettings)); - SLAB_ITEM = ItemInitializer.registerItem(baseName+"_slab", () -> new BlockItem(SLAB.get(), itemSettings)); + SLAB_ITEM = ItemInitializer.registerItem(baseName+"_slab", () -> new BlockItem(SLAB.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); WALL = BlockInitializer.registerBlock(baseName+"_wall", () -> new WallBlock(blockSettings)); - WALL_ITEM = ItemInitializer.registerItem(baseName+"_wall", () -> new BlockItem(WALL.get(), itemSettings)); + WALL_ITEM = ItemInitializer.registerItem(baseName+"_wall", () -> new BlockItem(WALL.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); } @Override diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodType.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodType.java index 31f90a32..f60243b2 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodType.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodType.java @@ -94,75 +94,75 @@ public WoodType(String baseName, MapColor wood, MapColor bark, SoundType sounds, final var woodName = fungus ? "hyphae" : "wood"; STRIPPED_LOG = BlockInitializer.registerBlock("stripped_"+baseName+"_"+logName, () -> createLogBlock(wood, wood, sounds)); - STRIPPED_LOG_ITEM = ItemInitializer.registerItem("stripped_"+baseName+"_"+logName, () -> new BlockItem(STRIPPED_LOG.get(), itemSettings)); + STRIPPED_LOG_ITEM = ItemInitializer.registerItem("stripped_"+baseName+"_"+logName, () -> new BlockItem(STRIPPED_LOG.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); LOG = BlockInitializer.registerBlock(baseName+"_"+logName, () -> createLogBlock(bark, wood, sounds)); - LOG_ITEM = ItemInitializer.registerItem(baseName+"_"+logName, () -> new BlockItem(LOG.get(), itemSettings)); + LOG_ITEM = ItemInitializer.registerItem(baseName+"_"+logName, () -> new BlockItem(LOG.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); BlockInitializer.addStrippedBlock(LOG, STRIPPED_LOG); STRIPPED_WOOD = BlockInitializer.registerBlock("stripped_"+baseName+"_"+woodName, () -> createLogBlock(wood, wood, sounds)); - STRIPPED_WOOD_ITEM = ItemInitializer.registerItem("stripped_"+baseName+"_"+woodName, () -> new BlockItem(STRIPPED_WOOD.get(), itemSettings)); + STRIPPED_WOOD_ITEM = ItemInitializer.registerItem("stripped_"+baseName+"_"+woodName, () -> new BlockItem(STRIPPED_WOOD.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); WOOD = BlockInitializer.registerBlock(baseName+"_"+woodName, () -> createLogBlock(bark, wood, sounds)); - WOOD_ITEM = ItemInitializer.registerItem(baseName+"_"+woodName, () -> new BlockItem(WOOD.get(), itemSettings)); + WOOD_ITEM = ItemInitializer.registerItem(baseName+"_"+woodName, () -> new BlockItem(WOOD.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); BlockInitializer.addStrippedBlock(WOOD, STRIPPED_WOOD); PLANKS = BlockInitializer.registerBlock(baseName+"_planks", () -> new Block(blockSettings)); - PLANKS_ITEM = ItemInitializer.registerItem(baseName+"_planks", () -> new BlockItem(PLANKS.get(), itemSettings)); + PLANKS_ITEM = ItemInitializer.registerItem(baseName+"_planks", () -> new BlockItem(PLANKS.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); STAIRS = BlockInitializer.registerBlock(baseName+"_stairs", () -> new StairBlock(PLANKS.get().defaultBlockState(), blockSettings)); - STAIRS_ITEM = ItemInitializer.registerItem(baseName+"_stairs", () -> new BlockItem(STAIRS.get(), itemSettings)); + STAIRS_ITEM = ItemInitializer.registerItem(baseName+"_stairs", () -> new BlockItem(STAIRS.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); SLAB = BlockInitializer.registerBlock(baseName+"_slab", () -> new SlabBlock(blockSettings)); - SLAB_ITEM = ItemInitializer.registerItem(baseName+"_slab", () -> new BlockItem(SLAB.get(), itemSettings)); + SLAB_ITEM = ItemInitializer.registerItem(baseName+"_slab", () -> new BlockItem(SLAB.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); BUTTON = BlockInitializer.registerBlock(baseName+"_button", () -> new ButtonBlock(BlockSetType.OAK, 30, nonCollidable)); - BUTTON_ITEM = ItemInitializer.registerItem(baseName+"_button", () -> new BlockItem(BUTTON.get(), itemSettings)); + BUTTON_ITEM = ItemInitializer.registerItem(baseName+"_button", () -> new BlockItem(BUTTON.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); PRESSURE_PLATE = BlockInitializer.registerBlock(baseName+"_pressure_plate", () -> new PressurePlateBlock(BlockSetType.OAK, nonCollidable)); - PRESSURE_PLATE_ITEM = ItemInitializer.registerItem(baseName+"_pressure_plate", () -> new BlockItem(PRESSURE_PLATE.get(), itemSettings)); + PRESSURE_PLATE_ITEM = ItemInitializer.registerItem(baseName+"_pressure_plate", () -> new BlockItem(PRESSURE_PLATE.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); DOOR = BlockInitializer.registerBlock(baseName+"_door", () -> new DoorBlock(BlockSetType.OAK, nonOpaque)); - DOOR_ITEM = ItemInitializer.registerItem(baseName+"_door", () -> new BlockItem(DOOR.get(), itemSettings)); + DOOR_ITEM = ItemInitializer.registerItem(baseName+"_door", () -> new BlockItem(DOOR.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); TRAPDOOR = BlockInitializer.registerBlock(baseName+"_trapdoor", () -> new TrapDoorBlock(BlockSetType.OAK, nonOpaque)); - TRAPDOOR_ITEM = ItemInitializer.registerItem(baseName+"_trapdoor", () -> new BlockItem(TRAPDOOR.get(), itemSettings)); + TRAPDOOR_ITEM = ItemInitializer.registerItem(baseName+"_trapdoor", () -> new BlockItem(TRAPDOOR.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); var signId = WanderingWizardry.id(baseName); ModdedSignBlock.SIGNS.add(signId); SIGN = BlockInitializer.registerBlock(baseName+"_sign",() -> new ModdedStandingSignBlock(nonCollidable, signId)); SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_sign", () -> new ModdedWallSignBlock(nonCollidable, signId)); BlockInitializer.addSignBlocks((Lazy)(Object)SIGN, (Lazy)(Object)SIGN_WALL); - SIGN_ITEM = ItemInitializer.registerItem(baseName+"_sign", () -> new SignItem(itemSettings, SIGN.get(), SIGN_WALL.get())); + SIGN_ITEM = ItemInitializer.registerItem(baseName+"_sign", () -> new SignItem(itemSettings, SIGN.get(), SIGN_WALL.get()), ItemInitializer.BLOCKS_STACKS); HANGING_SIGN = BlockInitializer.registerBlock(baseName+"_hanging_sign", () -> new ModdedCeilingHangingSignBlock(nonCollidable, signId)); HANGING_SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_hanging_sign", () -> new ModdedWallHangingSignBlock(nonCollidable, signId)); BlockInitializer.addHangingSignBlocks((Lazy)(Object)HANGING_SIGN, (Lazy)(Object)HANGING_SIGN_WALL); - HANGING_SIGN_ITEM = ItemInitializer.registerItem(baseName+"_hanging_sign", () -> new HangingSignItem(HANGING_SIGN.get(), HANGING_SIGN_WALL.get(), itemSettings)); + HANGING_SIGN_ITEM = ItemInitializer.registerItem(baseName+"_hanging_sign", () -> new HangingSignItem(HANGING_SIGN.get(), HANGING_SIGN_WALL.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); FENCE = BlockInitializer.registerBlock(baseName+"_fence", () -> new FenceBlock(blockSettings)); - FENCE_ITEM = ItemInitializer.registerItem(baseName+"_fence", () -> new BlockItem(FENCE.get(), itemSettings)); + FENCE_ITEM = ItemInitializer.registerItem(baseName+"_fence", () -> new BlockItem(FENCE.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); FENCE_GATE = BlockInitializer.registerBlock(baseName+"_fence_gate", () -> new FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.OAK, blockSettings)); - FENCE_GATE_ITEM = ItemInitializer.registerItem(baseName+"_fence_gate", () -> new BlockItem(FENCE_GATE.get(), itemSettings)); + FENCE_GATE_ITEM = ItemInitializer.registerItem(baseName+"_fence_gate", () -> new BlockItem(FENCE_GATE.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); if (!fungus) { LEAVES = BlockInitializer.registerBlock(baseName+"_leaves", () -> createLeavesBlock()); - LEAVES_ITEM = ItemInitializer.registerItem(baseName+"_leaves", () -> new BlockItem(LEAVES.get(), itemSettings)); + LEAVES_ITEM = ItemInitializer.registerItem(baseName+"_leaves", () -> new BlockItem(LEAVES.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); SAPLING = BlockInitializer.registerBlock(baseName+"_sapling", () -> createSaplingBlock(WanderingWizardry.id(baseName).toString(), baseName, baseName+"_bees")); - SAPLING_ITEM = ItemInitializer.registerItem(baseName+"_sapling", () -> new BlockItem(SAPLING.get(), itemSettings)); + SAPLING_ITEM = ItemInitializer.registerItem(baseName+"_sapling", () -> new BlockItem(SAPLING.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); BOAT_ITEM = ItemInitializer.registerBoatItem(baseName+"_boat", WanderingWizardry.id(baseName), false, singleStack); BOAT_CHEST_ITEM = ItemInitializer.registerBoatItem(baseName+"_chest_boat", WanderingWizardry.id(baseName), true, singleStack); } else { LEAVES = BlockInitializer.registerBlock(baseName+"_wart", () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.NETHER_WART_BLOCK))); - LEAVES_ITEM = ItemInitializer.registerItem(baseName+"_wart", () -> new BlockItem(LEAVES.get(), itemSettings)); + LEAVES_ITEM = ItemInitializer.registerItem(baseName+"_wart", () -> new BlockItem(LEAVES.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); SAPLING = BlockInitializer.registerBlock(baseName+"_fungus", () -> createFungusBlock(baseName, fungusBaseBlock.get())); - SAPLING_ITEM = ItemInitializer.registerItem(baseName+"_fungus", () -> new BlockItem(SAPLING.get(), itemSettings)); + SAPLING_ITEM = ItemInitializer.registerItem(baseName+"_fungus", () -> new BlockItem(SAPLING.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); BOAT_ITEM = null; BOAT_CHEST_ITEM = null; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/gamerule/GameruleInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/gamerule/GameruleInitializer.java deleted file mode 100644 index e382775f..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/gamerule/GameruleInitializer.java +++ /dev/null @@ -1,20 +0,0 @@ -package dev.sweetberry.wwizardry.content.gamerule; - -import dev.sweetberry.wwizardry.api.config.ConfigHelper; - -// TODO: Make it per-world. -public class GameruleInitializer { - public static final String name = "wwizardry.json"; - private static final GameruleInitializer globalInstance = ConfigHelper.loadGlobalConfig(new GameruleInitializer(), name); - - private double altarSpreadMultiplier = 1; - - public static double getAltarSpreadMultiplier() { - return globalInstance.altarSpreadMultiplier; - } - - public static void setAltarSpreadMultiplier(double altarSpreadMultiplier) { - globalInstance.altarSpreadMultiplier = altarSpreadMultiplier; - ConfigHelper.loadGlobalConfig(globalInstance, name); - } -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java index 95d34456..2f830196 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java @@ -4,9 +4,7 @@ import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.registry.RegistryContext; import dev.sweetberry.wwizardry.content.block.BlockInitializer; -import dev.sweetberry.wwizardry.content.block.WallHolderBlock; -import dev.sweetberry.wwizardry.content.block.altar.AltarCatalyzerBlock; -import dev.sweetberry.wwizardry.content.block.altar.AltarPedestalBlock; +import dev.sweetberry.wwizardry.content.item.charm.AnvilCharmItem; import dev.sweetberry.wwizardry.content.item.charm.BrewingCharmItem; import dev.sweetberry.wwizardry.content.item.charm.CraftingCharmItem; import dev.sweetberry.wwizardry.content.item.charm.SmithingCharmItem; @@ -18,22 +16,42 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.Rarity; import net.minecraft.world.item.RecordItem; -import net.minecraft.world.level.block.Block; import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; +import java.util.stream.Collectors; public class ItemInitializer { public static final RegistryContext ITEMS = new RegistryContext<>(BuiltInRegistries.ITEM); public static final RegistryContext TABS = new RegistryContext<>(BuiltInRegistries.CREATIVE_MODE_TAB); - public static final List> STACKS = new ArrayList<>(); + public static final List> ITEMS_STACKS = new ArrayList<>(); + public static final List> BLOCKS_STACKS = new ArrayList<>(); + + public static final Lazy ITEMS_TAB = ItemInitializer.registerTab( + "items", + () -> CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) + .icon(() -> ItemInitializer.CRYSTALLINE_SCULK_SHARD.get().getDefaultInstance()) + .displayItems((display, collector) -> collector.acceptAll(ItemInitializer.ITEMS_STACKS.stream().map(Lazy::get).map(Item::getDefaultInstance).collect(Collectors.toList()))) + .title(net.minecraft.network.chat.Component.translatable("itemGroup.wwizardry.items")) + .build() + ); + + public static final Lazy BLOCKS_TAB = ItemInitializer.registerTab( + "blocks", + () -> CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) + .icon(() -> ItemInitializer.ALTAR_CATALYZER.get().getDefaultInstance()) + .displayItems((display, collector) -> collector.acceptAll(ItemInitializer.BLOCKS_STACKS.stream().map(Lazy::get).map(Item::getDefaultInstance).collect(Collectors.toList()))) + .title(net.minecraft.network.chat.Component.translatable("itemGroup.wwizardry.items")) + .build() + ); public static final Lazy CRYSTALLINE_SCULK_SHARD = registerItem( "crystalline_sculk", () -> new Item( new Item.Properties() - ) + ), + ITEMS_STACKS ); public static final Lazy CRYSTALLINE_SCULK_BLOCK = registerItem( @@ -41,7 +59,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.CRYSTALLINE_SCULK.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy SCULKFLOWER = registerItem( @@ -49,7 +68,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.SCULKFLOWER.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy INDIGO_CAERULEUM = registerItem( @@ -57,7 +77,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.INDIGO_CAERULEUM.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy MYCHA_ROOTS = registerItem( @@ -65,7 +86,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.MYCHA_ROOTS.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy CAMERA = registerItem( @@ -73,7 +95,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.CAMERA.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy REINFORCED_GLASS = registerItem( @@ -81,7 +104,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.REINFORCED_GLASS.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy REINFORCED_GLASS_PANE = registerItem( @@ -89,7 +113,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.REINFORCED_GLASS_PANE.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy REDSTONE_LANTERN = registerItem( @@ -97,43 +122,49 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.REDSTONE_LANTERN.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); - public static final Lazy WALL_HOLDER_EMPTY = registerItem( + public static final Lazy WALL_HOLDER = registerItem( "wall_holder", () -> new BlockItem( BlockInitializer.WALL_HOLDER.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy ROSE_QUARTZ = registerItem( "rose_quartz", () -> new Item( new Item.Properties() - ) + ), + ITEMS_STACKS ); public static final Lazy ROSE_QUARTZ_ORE = registerItem( "rose_quartz_ore", () -> new BlockItem( BlockInitializer.ROSE_QUARTZ_ORE.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy DEEPSLATE_ROSE_QUARTZ_ORE = registerItem( "deepslate_rose_quartz_ore", () -> new BlockItem( BlockInitializer.DEEPSLATE_ROSE_QUARTZ_ORE.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy ROSE_QUARTZ_BLOCK = registerItem( "rose_quartz_block", () -> new BlockItem( BlockInitializer.ROSE_QUARTZ_BLOCK.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy MYCELIAL_SAND = registerItem( @@ -141,7 +172,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.MYCELIAL_SAND.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy MODULO_COMPARATOR = registerItem( @@ -149,7 +181,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.MODULO_COMPARATOR.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy REDSTONE_STEPPER = registerItem( @@ -157,7 +190,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.REDSTONE_STEPPER.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy RESONATOR = registerItem( @@ -165,7 +199,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.SCULK_RESONATOR.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy SLOT_CHARM = registerItem( @@ -173,7 +208,8 @@ public class ItemInitializer { () -> new SelfRemainderingItem( new Item.Properties() .stacksTo(1) - ) + ), + ITEMS_STACKS ); public static final Lazy CRAFTING_CHARM = registerItem( @@ -181,7 +217,8 @@ public class ItemInitializer { () -> new CraftingCharmItem( new Item.Properties() .stacksTo(1) - ) + ), + ITEMS_STACKS ); public static final Lazy BREWING_CHARM = registerItem( @@ -189,7 +226,8 @@ public class ItemInitializer { () -> new BrewingCharmItem( new Item.Properties() .stacksTo(1) - ) + ), + ITEMS_STACKS ); public static final Lazy SMITHING_CHARM = registerItem( @@ -197,7 +235,17 @@ public class ItemInitializer { () -> new SmithingCharmItem( new Item.Properties() .stacksTo(1) - ) + ), + ITEMS_STACKS + ); + + public static final Lazy ANVIL_CHARM = registerItem( + "anvil_charm", + () -> new AnvilCharmItem( + new Item.Properties() + .stacksTo(1) + ), + ITEMS_STACKS ); public static final Lazy MUSIC_DISC_WANDERING = registerItem( @@ -209,7 +257,8 @@ public class ItemInitializer { .stacksTo(1) .rarity(Rarity.RARE), 140 - ) + ), + ITEMS_STACKS ); public static final Lazy VOID_BAG = registerItem( @@ -217,7 +266,8 @@ public class ItemInitializer { () -> new VoidBagItem( new Item.Properties() .stacksTo(1) - ) + ), + ITEMS_STACKS ); public static final Lazy SOUL_MIRROR = registerItem( @@ -225,7 +275,8 @@ public class ItemInitializer { () -> new SoulMirrorItem( new Item.Properties() .stacksTo(1) - ) + ), + ITEMS_STACKS ); public static final Lazy ALTAR_PEDESTAL = registerItem( @@ -233,7 +284,8 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.ALTAR_PEDESTAL.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); public static final Lazy ALTAR_CATALYZER = registerItem( @@ -241,17 +293,22 @@ public class ItemInitializer { () -> new BlockItem( BlockInitializer.ALTAR_CATALYZER.get(), new Item.Properties() - ) + ), + BLOCKS_STACKS ); - public static Lazy registerItem(String id, Supplier item) { + public static Lazy registerItem(String id, Supplier item, List> group) { var lazy = ITEMS.register(WanderingWizardry.id(id), (Supplier)item); - STACKS.add(lazy); + group.add(lazy); return (Lazy) lazy; } + public static Lazy registerItem(String id, Supplier item) { + return registerItem(id, item, ITEMS_STACKS); + } + public static Lazy registerBoatItem(String id, ResourceLocation type, boolean chest, Item.Properties itemSettings) { - return registerItem(id, () -> new ModdedBoatItem(type, chest, itemSettings)); + return registerItem(id, () -> new ModdedBoatItem(type, chest, itemSettings), ITEMS_STACKS); } public static Lazy registerTab(String id, Supplier tab) { diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java new file mode 100644 index 00000000..567c9c40 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java @@ -0,0 +1,48 @@ +package dev.sweetberry.wwizardry.content.item.charm; + +import dev.sweetberry.wwizardry.api.altar.AltarRecipeView; +import dev.sweetberry.wwizardry.config.Config; +import net.minecraft.world.item.*; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.EnchantmentInstance; +import net.minecraft.world.level.Level; + +import java.util.ArrayList; + +public class AnvilCharmItem extends AltarCharmItem { + public AnvilCharmItem(Properties settings) { + super(settings); + } + + @Override + public boolean tryCraft(AltarRecipeView view, Level world) { + final var enchantedBookItem = (EnchantedBookItem)Items.ENCHANTED_BOOK; + + view.keepCenter(); + var bookDirs = new ArrayList(); + for (var i : AltarRecipeView.AltarDirection.cardinals()) { + var item = view.getItemInPedestal(i); + if (item == null) + return false; + if (item.is(enchantedBookItem)) + bookDirs.add(i); + else + view.setResultInPedestal(i, item); + } + if (bookDirs.isEmpty()) + return false; + var book = enchantedBookItem.getDefaultInstance(); + + for (var i : bookDirs) { + for (var enchant : EnchantmentHelper.getEnchantments(view.getItemInPedestal(i)).entrySet()) { + if (!EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(book).keySet(), enchant.getKey()) && !Config.getAllowOpEnchants()) + return false; + + EnchantedBookItem.addEnchantment(book, new EnchantmentInstance(enchant.getKey(), enchant.getValue())); + } + } + + view.setRecipeResult(book); + return true; + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java index 5f768e44..be020721 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java @@ -47,11 +47,13 @@ public boolean tryCraft(AltarRecipeView view, Level world) { var stack = view.getItemInPedestal(dir); if (stack == null) continue; - if (matchingRecipes.stream().anyMatch(it -> it.value().isAdditionIngredient(stack)) && additionStack == null) + if (matchingRecipes.stream().anyMatch(it -> it.value().isAdditionIngredient(stack)) && additionStack == null) { additionStack = stack; - else if (matchingRecipes.stream().anyMatch(it -> it.value().isBaseIngredient(stack)) && baseStack == null) { + } else if (matchingRecipes.stream().anyMatch(it -> it.value().isBaseIngredient(stack)) && baseStack == null) { baseStack = stack; baseDirection = dir; + } else { + view.setResultInPedestal(dir, stack); } } if (additionStack == null || baseStack == null || baseDirection == null) @@ -68,7 +70,7 @@ else if (matchingRecipes.stream().anyMatch(it -> it.value().isBaseIngredient(sta return false; var recipe = maybeRecipe.get().value(); var container = new FakeContainer(templateStack, baseStack, additionStack); - view.setAllAsRemainders(); + view.keepCenter(); view.setResultInPedestal(baseDirection, recipe.assemble(container, world.registryAccess())); return true; diff --git a/common/src/main/resources/assets/aurorasdeco/textures/block/sign_post/wwizardry/denia.png b/common/src/main/resources/assets/aurorasdeco/textures/block/sign_post/wwizardry/denia.png deleted file mode 100644 index 35592900f21e914addc9051bb09486ebc44a26b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 750 zcmVPx%s7XXYR7gwZR=;Z$Q4oHs9`5blZXn4W5iG=C1jP$SOd`ZfBH|AOF_1#5fCz$M zW2>DY*x6hq*rd`Tpa`OcD2lb9VBtStz(g?jYa!~&_wCNRw{qcb?}8S-X5P%~``&yr zZ-%wDpO_C1`9o^R&MH}JK~wL=F1AnWYxKz(3jo(nP0$zwzw|+DYFW2I+BK4+o@oW8zO2*;CO+)pC&28~ULu+xa`o^)PDcT7EZDGzBn9~b zyuc9>Ycu|m14sh&oy5K(n7eqL6kb27Scwv}Q4nppush+g1fUxb09-DQvwW4Cw|Joj z=q3VGOp+`zHNeLw4-!;6@-_*B!p~Qadk1Kjwx&tnI0FA_MES2X&&+}C_ zYwHM`%|P$PF1BiQojy53fVt^e8taYLAc5{Wt$sFrutSHmX3i~!qx(nIMi3!aYYjCx zJVHHV`#O?ut1H}#kMqFxBY^Q@iHIhMob+;z1_3z3&pEsZk`(mEp0B_W{IE9TFF9Z@ zY)KOPir~z`RZ@7de81zXM6`uMAvq5Opc@bXOq3>BzI%6XMDrj`1gMxKS!8N}H_w)O zZ)Z?=|Mvf!2j*+_cG~O#G!nb<;MtR*?K;YH-B#1o>v}KtYHSPYQA5cY0-T;aMq|VH zv4HLvKOLqIcIc2+ap8P;bl(BhXhy@N{$oSsJ)gRhZ4H#K@gx!-FUZCKGlz>rG(m)e zyCb9N02~W8>>)`(z5p+9gk;ahdHIvS?I6t)@-{GBy8eLS z#j_6#5>f&TdYTGwzMHcFgI~S@!^OLs89x2J1hyRR0+;~@k8WdF*l>%XW<~%w3_$*W z{Nfte1=FjJgT=8Lz{jljUtif5?&R|;e}QcSIk`SzJKQyf;cN`=zTU-j0my(rw_JFL zgKV3(y8z5@$=CpAgA9D~{uFitKrR3|w=?Y&!<0=4C;@nM@pG_?K=L?U0P_OKcI3bV z1r{hkGute|F@n_qkRs%8fW- GROUP = ItemInitializer.registerTab( - "items", - () -> FabricItemGroup.builder() - .icon(() -> ItemInitializer.CRYSTALLINE_SCULK_SHARD.get().getDefaultInstance()) - .displayItems((display, collector) -> collector.acceptAll(ItemInitializer.STACKS.stream().map(Lazy::get).map(Item::getDefaultInstance).collect(Collectors.toList()))) - .title(net.minecraft.network.chat.Component.translatable("itemGroup.wwizardry.items")) - .build() - ); - @Override public void onInitialize() { ComponentInitializer.getter = FabricInitializer::getComponent; diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java index e8c8d0b2..2909ddca 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java @@ -36,15 +36,6 @@ @Mod("wwizardry") public class NeoForgeInitializer { - public static final Lazy TAB = ItemInitializer.registerTab( - "items", - () -> CreativeModeTab.builder() - .icon(() -> ItemInitializer.CRYSTALLINE_SCULK_SHARD.get().getDefaultInstance()) - .displayItems((display, collector) -> collector.acceptAll(ItemInitializer.STACKS.stream().map(Lazy::get).map(Item::getDefaultInstance).collect(Collectors.toList()))) - .title(net.minecraft.network.chat.Component.translatable("itemGroup.wwizardry.items")) - .build() - ); - public NeoForgeInitializer(IEventBus bus, Dist dist) { bus.addListener(this::registerToRegistries); bus.addListener(this::commonSetup); From 72dd0c7185f26c5bb02449abb0d7748451b0b633 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Tue, 20 Feb 2024 22:44:39 -0600 Subject: [PATCH 07/46] a --- .../src/main/java/dev/sweetberry/wwizardry/config/Config.java | 2 -- .../dev/sweetberry/wwizardry/{api => }/config/ConfigHelper.java | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) rename common/src/main/java/dev/sweetberry/wwizardry/{api => }/config/ConfigHelper.java (96%) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/config/Config.java b/common/src/main/java/dev/sweetberry/wwizardry/config/Config.java index cadbaf17..d3fd0a3d 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/config/Config.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/config/Config.java @@ -1,7 +1,5 @@ package dev.sweetberry.wwizardry.config; -import dev.sweetberry.wwizardry.api.config.ConfigHelper; - // TODO: Make it per-world. public class Config { public static final String name = "wwizardry.json"; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/config/ConfigHelper.java b/common/src/main/java/dev/sweetberry/wwizardry/config/ConfigHelper.java similarity index 96% rename from common/src/main/java/dev/sweetberry/wwizardry/api/config/ConfigHelper.java rename to common/src/main/java/dev/sweetberry/wwizardry/config/ConfigHelper.java index 22da448d..57c1e898 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/config/ConfigHelper.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/config/ConfigHelper.java @@ -1,4 +1,4 @@ -package dev.sweetberry.wwizardry.api.config; +package dev.sweetberry.wwizardry.config; import com.google.gson.Gson; import com.google.gson.GsonBuilder; From 1fc00b37eb29bd6403b1cb7dc3db2280cf560b58 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Wed, 24 Apr 2024 21:12:37 -0500 Subject: [PATCH 08/46] Update plguins to anticipate update to 1.20.5 --- .../content/item/ItemInitializer.java | 2 +- .../mixin/Mixin_ReloadableResourceManager.java | 7 ------- fabric/build.gradle | 7 +------ .../wwizardry/fabric/FabricInitializer.java | 13 ------------- gradle/libs.versions.toml | 18 ++++-------------- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 5 ----- 7 files changed, 7 insertions(+), 47 deletions(-) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java index 2f830196..a8e5c612 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java @@ -42,7 +42,7 @@ public class ItemInitializer { () -> CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) .icon(() -> ItemInitializer.ALTAR_CATALYZER.get().getDefaultInstance()) .displayItems((display, collector) -> collector.acceptAll(ItemInitializer.BLOCKS_STACKS.stream().map(Lazy::get).map(Item::getDefaultInstance).collect(Collectors.toList()))) - .title(net.minecraft.network.chat.Component.translatable("itemGroup.wwizardry.items")) + .title(net.minecraft.network.chat.Component.translatable("itemGroup.wwizardry.blocks")) .build() ); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java index eff286e8..5e669886 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java @@ -24,9 +24,6 @@ @Mixin(ReloadableResourceManager.class) public class Mixin_ReloadableResourceManager { - @Shadow - private CloseableResourceManager resources; - @Shadow @Final private PackType type; @@ -46,8 +43,6 @@ public class Mixin_ReloadableResourceManager { List packs, CallbackInfoReturnable cir ) { - if (WanderingWizardry.isModLoaded("quilt_resource_loader")) - return; var temp = new MultiPackResourceManager(type, packs); DatagenInitializer.reloadPack(temp); temp.close(); @@ -61,8 +56,6 @@ public class Mixin_ReloadableResourceManager { ) ) private List wwizardry$getPacks(List old) { - if (WanderingWizardry.isModLoaded("quilt_resource_loader")) - return old; var packs = new ArrayList<>(old); packs.add(DatagenInitializer.pack); return packs; diff --git a/fabric/build.gradle b/fabric/build.gradle index 0ad458a8..9c3627a0 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -45,10 +45,6 @@ loom { } } -project.configurations.configureEach { - exclude group: "net.fabricmc", module: "fabric-loader" -} - def classify(module, classifier) { var m = module.get() return "${m.module.group}:${m.module.name}:${m.version}:$classifier" @@ -59,14 +55,13 @@ dependencies { minecraft libs.minecraft mappings loom.officialMojangMappings() - modImplementation libs.quilt.loader + modImplementation libs.fabric.loader modImplementation libs.fabric.api modImplementation libs.bundles.include.fabric include libs.bundles.include.fabric modCompileOnly classify(libs.emi.fabric, "api") - modCompileOnly libs.quilt.resource.loader if (test_compat) modRuntimeOnly libs.bundles.compat.fabric diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java index d42e0279..b43075bb 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java @@ -28,9 +28,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackType; import net.minecraft.world.entity.Entity; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.Item; -import org.quiltmc.qsl.resource.loader.api.ResourceLoader; import java.util.List; import java.util.stream.Collectors; @@ -74,22 +71,12 @@ public void onInitialize() { } }); - if (WanderingWizardry.isModLoaded("quilt_resource_loader")) - initWithQsl(); - FabricInitializer.addWanderingTradesFor(1); FabricInitializer.addWanderingTradesFor(2); WanderingWizardry.init("fabric"); } - public static void initWithQsl() { - ResourceLoader.get(PackType.CLIENT_RESOURCES).getRegisterDefaultPackEvent().register(ctx -> { - DatagenInitializer.reloadPack(ctx.resourceManager()); - ctx.addResourcePack(DatagenInitializer.pack); - }); - } - private static void addWanderingTradesFor(int level) { TradeOfferHelper.registerWanderingTraderOffers( level, diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c75dd0c8..3c0a00a8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] # The latest versions are available at https://lambdaurora.dev/tools/import_quilt.html minecraft = "1.20.4" -quilt_loader = "0.23.1" +fabric_loader = "0.15.10" neoforge = "20.4.83-beta" mixin = "0.8.5" @@ -15,11 +15,6 @@ ccapi = "5.4.0" emi = "1.1.0+1.20.4" modmenu = "9.0.0" -qsl = "7.0.0-alpha.9+1.20.2" -arch_ex = "3.1.1+1.20.1" -staticdata = "1.0.1+1.20" -suspicious_shapes = "1.0.0+1.20.1" - [libraries] minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } @@ -39,17 +34,13 @@ emi_neoforge = { module = "dev.emi:emi-neoforge", version.ref = "emi" } neoforge = { module = "net.neoforged:neoforge", version.ref = "neoforge" } # Fabric -quilt_loader = { module = "org.quiltmc:quilt-loader", version.ref = "quilt_loader" } +fabric_loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric_loader" } fabric_api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric_api" } ccapi_base = { module = "dev.onyxstudios.cardinal-components-api:cardinal-components-base", version.ref = "ccapi" } ccapi_entity = { module = "dev.onyxstudios.cardinal-components-api:cardinal-components-entity", version.ref = "ccapi" } modmenu = { module = "com.terraformersmc:modmenu", version.ref = "modmenu" } -quilt_resource_loader = { module = "org.quiltmc.qsl.core:resource_loader", version.ref = "qsl" } -arch_ex = { module = "maven.modrinth:arch-ex", version.ref = "arch_ex" } -staticdata = { module = "maven.modrinth:static-data", version.ref = "staticdata" } -suspicious_shapes = { module = "maven.modrinth:suspicious-shapes", version.ref = "suspicious_shapes" } # If you have multiple similar dependencies, you can declare a dependency bundle and reference it on the build script with "libs.bundles.example". [bundles] @@ -62,10 +53,9 @@ include_fabric = ["terrablender_fabric", "ccapi_base", "ccapi_entity"] include_neoforge = ["terrablender_neoforge"] compat_fabric = ["emi_fabric", "modmenu"] -# compat = ["emi", "arch_ex", "staticdata", "suspicious_shapes", "modmenu"] [plugins] idea_ext = { id = "org.jetbrains.gradle.plugin.idea-ext", version = "1.1.7" } -loom = { id = "org.quiltmc.loom", version = "1.4.1" } +loom = { id = "fabric-loom", version = "1.6-SNAPSHOT" } vanilla_gradle = { id = "org.spongepowered.gradle.vanilla", version = "0.2.1-SNAPSHOT" } -neogradle = { id = "net.neoforged.gradle.userdev", version = "7.0.88" } +neogradle = { id = "net.neoforged.gradle.userdev", version = "7.0.107" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index db9a6b82..48c0a02c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index 323fe077..44071b36 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1,5 @@ pluginManagement { repositories { - maven { - name = 'Quilt' - url = 'https://maven.quiltmc.org/repository/release' - } - // Currently needed for Intermediary and other temporary dependencies maven { name = 'Fabric' url = 'https://maven.fabricmc.net/' From 7087c9cee4923ae39ea9923b278a57feb417de3e Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Wed, 24 Apr 2024 21:46:25 -0500 Subject: [PATCH 09/46] Why does gradle --- build.gradle | 5 +---- fabric/build.gradle | 4 ---- gradle/libs.versions.toml | 2 +- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index daf589ad..cbb14a36 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { id 'java' alias libs.plugins.idea.ext + alias libs.plugins.loom apply false } version = "${project.version}+mc.${libs.versions.minecraft.get()}" @@ -9,10 +10,6 @@ if (!project.classification.isBlank()) group = project.maven_group repositories { - maven { - name = 'Quilt' - url = 'https://maven.quiltmc.org/repository/release' - } maven { name = 'TerraformersMC' url = 'https://maven.terraformersmc.com/' diff --git a/fabric/build.gradle b/fabric/build.gradle index 9c3627a0..27562e62 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -8,10 +8,6 @@ version = rootProject.version + "-fabric" def test_compat = true repositories { - maven { - name = 'Quilt' - url = 'https://maven.quiltmc.org/repository/release' - } maven { name = 'TerraformersMC' url = 'https://maven.terraformersmc.com/' diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3c0a00a8..f0904d2e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -55,7 +55,7 @@ include_neoforge = ["terrablender_neoforge"] compat_fabric = ["emi_fabric", "modmenu"] [plugins] -idea_ext = { id = "org.jetbrains.gradle.plugin.idea-ext", version = "1.1.7" } +idea_ext = { id = "org.jetbrains.gradle.plugin.idea-ext", version = "1.1.8" } loom = { id = "fabric-loom", version = "1.6-SNAPSHOT" } vanilla_gradle = { id = "org.spongepowered.gradle.vanilla", version = "0.2.1-SNAPSHOT" } neogradle = { id = "net.neoforged.gradle.userdev", version = "7.0.107" } From 4d4c52fbce0839ab2c8afe419ceca167675b8d6c Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 25 Apr 2024 19:31:48 -0500 Subject: [PATCH 10/46] Half-port to 1.20.5 --- build.gradle | 6 +- common/build.gradle | 2 +- .../wwizardry/api/component/Component.java | 5 +- .../api/net/ModdedPacketPayload.java | 14 ++++ .../wwizardry/compat/emi/EmiInitializer.java | 63 ++++++++------- .../content/component/BoatComponent.java | 5 +- .../content/component/VoidBagComponent.java | 26 +++--- .../criterion/SimpleTriggerCriterion.java | 2 +- .../content/events/UseBlockHandler.java | 3 +- .../content/item/SoulMirrorItem.java | 80 ++++++------------- .../content/item/charm/AnvilCharmItem.java | 10 ++- .../content/item/charm/BrewingCharmItem.java | 6 +- .../item/tier/CrystallineSculkTier.java | 6 +- .../mixin/Accessor_PotionBrewing.java | 12 +-- fabric/build.gradle | 2 +- .../wwizardry/fabric/FabricInitializer.java | 4 +- .../compat/cardinal/CardinalInitializer.java | 9 +-- .../cardinal/component/ProxyComponent.java | 2 +- .../component/VoidBagCardinalComponent.java | 7 +- gradle/libs.versions.toml | 14 ++-- neoforge/build.gradle | 10 +-- .../src/main/resources/META-INF/mods.toml | 4 +- 22 files changed, 142 insertions(+), 150 deletions(-) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/api/net/ModdedPacketPayload.java diff --git a/build.gradle b/build.gradle index cbb14a36..e84ca7e0 100644 --- a/build.gradle +++ b/build.gradle @@ -78,13 +78,13 @@ tasks.register("generateData") { tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' - it.options.release = 17 + it.options.release = 21 dependsOn "generateData" } java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 withSourcesJar() } diff --git a/common/build.gradle b/common/build.gradle index 4efeab04..9f2df231 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -51,6 +51,6 @@ dependencies { tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' - it.options.release = 17 + it.options.release = 21 dependsOn ":generateData" } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/component/Component.java b/common/src/main/java/dev/sweetberry/wwizardry/api/component/Component.java index 00170443..fc7ecd96 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/component/Component.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/api/component/Component.java @@ -1,8 +1,9 @@ package dev.sweetberry.wwizardry.api.component; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; public interface Component { - void fromNbt(CompoundTag tag); - void toNbt(CompoundTag tag); + void fromNbt(CompoundTag tag, HolderLookup.Provider lookup); + void toNbt(CompoundTag tag, HolderLookup.Provider lookup); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/net/ModdedPacketPayload.java b/common/src/main/java/dev/sweetberry/wwizardry/api/net/ModdedPacketPayload.java new file mode 100644 index 00000000..ec39b8c6 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/api/net/ModdedPacketPayload.java @@ -0,0 +1,14 @@ +package dev.sweetberry.wwizardry.api.net; + +import dev.sweetberry.wwizardry.WanderingWizardry; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import org.jetbrains.annotations.NotNull; + +public class ModdedPacketPayload implements CustomPacketPayload { + public static final Type TYPE = new Type<>(WanderingWizardry.id("packet")); + + @Override @NotNull + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/compat/emi/EmiInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/compat/emi/EmiInitializer.java index 2568d83d..f203684e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/compat/emi/EmiInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/compat/emi/EmiInitializer.java @@ -1,5 +1,6 @@ package dev.sweetberry.wwizardry.compat.emi; +import com.mojang.authlib.minecraft.client.MinecraftClient; import dev.emi.emi.api.EmiEntrypoint; import dev.emi.emi.api.EmiPlugin; import dev.emi.emi.api.EmiRegistry; @@ -18,14 +19,15 @@ import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import dev.sweetberry.wwizardry.mixin.Accessor_PotionBrewing; import dev.sweetberry.wwizardry.mixin.Accessor_PotionBrewing_Mix; +import net.minecraft.client.Minecraft; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.alchemy.Potion; import net.minecraft.world.item.alchemy.PotionBrewing; -import net.minecraft.world.item.alchemy.PotionUtils; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.ShapelessRecipe; +import net.minecraft.world.level.block.entity.BrewingStandBlockEntity; @EmiEntrypoint public class EmiInitializer implements EmiPlugin { @@ -66,9 +68,8 @@ public void register(EmiRegistry registry) { var manager = registry.getRecipeManager(); - for (var recipe : manager.getAllRecipesFor(RecipeInitializer.ALTAR_TYPE.get())) { + for (var recipe : manager.getAllRecipesFor(RecipeInitializer.ALTAR_TYPE.get())) registry.addRecipe(EmiAltarCatalyzationRecipe.of(recipe.id(), recipe.value())); - } for ( var recipe : @@ -79,36 +80,36 @@ public void register(EmiRegistry registry) { .map(it -> (RecipeHolder) (RecipeHolder) it) .filter(it -> it.value().getIngredients().size() <= 4) .toList() - ) { + ) registry.addRecipe(EmiAltarShapelessRecipe.of(recipe.id(), recipe.value())); - } - for (var ingredient : Accessor_PotionBrewing.getAllowedContainers()) { - for (var stack : ingredient.getItems()) { - var basePath = getPrefixedPathedIdentifier(BuiltInRegistries.ITEM.getKey(stack.getItem()), "altar_brewing"); - for (PotionBrewing.Mix recipe : Accessor_PotionBrewing.getMixes()) { - try { - var accessor = (Accessor_PotionBrewing_Mix)recipe; - var recipeIngredient = accessor.getIngredient(); - if (recipeIngredient.getItems().length > 0) { - var ingredientPath = getPrefixedPathedIdentifier(BuiltInRegistries.ITEM.getKey(recipeIngredient.getItems()[0].getItem()), basePath); - var inputPath = getPrefixedPathedIdentifier(BuiltInRegistries.POTION.getKey(accessor.getFrom()), ingredientPath); - var outputPath = getPrefixedPathedIdentifier(BuiltInRegistries.POTION.getKey(accessor.getTo()), inputPath); - var id = WanderingWizardry.id(outputPath); - - registry.addRecipe(new EmiAltarBrewingRecipe( - EmiStack.of(PotionUtils.setPotion(stack.copy(), accessor.getFrom())), - EmiIngredient.of(recipeIngredient), - EmiStack.of(PotionUtils.setPotion(stack.copy(), accessor.getTo())), - id - )); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } + // TODO: Fix this code +// for (var ingredient : Minecraft.getInstance().getConnection().packet) { +// for (var stack : ingredient.getItems()) { +// var basePath = getPrefixedPathedIdentifier(BuiltInRegistries.ITEM.getKey(stack.getItem()), "altar_brewing"); +// for (PotionBrewing.Mix recipe : Accessor_PotionBrewing.getMixes()) { +// try { +// var accessor = (Accessor_PotionBrewing_Mix)recipe; +// var recipeIngredient = accessor.getIngredient(); +// if (recipeIngredient.getItems().length > 0) { +// var ingredientPath = getPrefixedPathedIdentifier(BuiltInRegistries.ITEM.getKey(recipeIngredient.getItems()[0].getItem()), basePath); +// var inputPath = getPrefixedPathedIdentifier(BuiltInRegistries.POTION.getKey(accessor.getFrom()), ingredientPath); +// var outputPath = getPrefixedPathedIdentifier(BuiltInRegistries.POTION.getKey(accessor.getTo()), inputPath); +// var id = WanderingWizardry.id(outputPath); +// +// registry.addRecipe(new EmiAltarBrewingRecipe( +// EmiStack.of(PotionUtils.setPotion(stack.copy(), accessor.getFrom())), +// EmiIngredient.of(recipeIngredient), +// EmiStack.of(PotionUtils.setPotion(stack.copy(), accessor.getTo())), +// id +// )); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// } +// } } public static String getPathedIdentifier(ResourceLocation id) { diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/component/BoatComponent.java b/common/src/main/java/dev/sweetberry/wwizardry/content/component/BoatComponent.java index 3b420b95..2e938066 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/component/BoatComponent.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/component/BoatComponent.java @@ -2,6 +2,7 @@ import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.component.Component; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; @@ -20,14 +21,14 @@ public class BoatComponent implements Component { public BoatComponent() {} @Override - public void fromNbt(CompoundTag tag) { + public void fromNbt(CompoundTag tag, HolderLookup.Provider lookup) { type = tag.contains("id") ? new ResourceLocation(tag.getString("id")) : null; } @Override - public void toNbt(CompoundTag tag) { + public void toNbt(CompoundTag tag, HolderLookup.Provider lookup) { if (type != null) tag.putString("id", type.toString()); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/component/VoidBagComponent.java b/common/src/main/java/dev/sweetberry/wwizardry/content/component/VoidBagComponent.java index a51e9c37..5de405d2 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/component/VoidBagComponent.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/component/VoidBagComponent.java @@ -1,17 +1,23 @@ package dev.sweetberry.wwizardry.content.component; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.sweetberry.wwizardry.api.component.Component; import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.item.VoidBagItem; +import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; +import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.Container; import net.minecraft.world.ContainerHelper; import net.minecraft.world.SimpleMenuProvider; +import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.ChestMenu; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.ChestBlockEntity; public class VoidBagComponent implements Component, Container { public NonNullList inventory = NonNullList.withSize(27, ItemStack.EMPTY); @@ -20,21 +26,21 @@ public class VoidBagComponent implements Component, Container { public VoidBagComponent() {} @Override - public void fromNbt(CompoundTag tag) { + public void fromNbt(CompoundTag tag, HolderLookup.Provider lookup) { inventory = NonNullList.withSize(27, ItemStack.EMPTY); - ContainerHelper.loadAllItems(tag, inventory); + ContainerHelper.loadAllItems(tag, inventory, lookup); locked = tag.getBoolean("Locked"); } @Override - public void toNbt(CompoundTag tag) { - ContainerHelper.saveAllItems(tag, inventory); + public void toNbt(CompoundTag tag, HolderLookup.Provider lookup) { + ContainerHelper.saveAllItems(tag, inventory, lookup); tag.putBoolean("Locked", locked); - ItemStack previewStack = ItemInitializer.VOID_BAG.get().getDefaultInstance(); - previewStack.getOrCreateTag().putBoolean("Locked", locked); - CompoundTag previewCompound = new CompoundTag(); - previewStack.save(previewCompound); - tag.put("PreviewStack", previewCompound); +// ItemStack previewStack = ItemInitializer.VOID_BAG.get().getDefaultInstance(); +// previewStack.getOrCreateTag().putBoolean("Locked", locked); +// CompoundTag previewCompound = new CompoundTag(); +// previewStack.save(previewCompound); +// tag.put("PreviewStack", previewCompound); } @Override @@ -107,7 +113,7 @@ public int tryAddStack(ItemStack stack) { return 0; } - if (!ItemStack.isSameItemSameTags(inv_stack, stack)) + if (!ItemStack.isSameItemSameComponents(inv_stack, stack)) continue; var count_to_fill = inv_stack.getMaxStackSize() - inv_stack.getCount(); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/SimpleTriggerCriterion.java b/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/SimpleTriggerCriterion.java index 60fb5aee..bfe1df17 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/SimpleTriggerCriterion.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/SimpleTriggerCriterion.java @@ -12,7 +12,7 @@ public class SimpleTriggerCriterion extends SimpleCriterionTrigger { public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( - ExtraCodecs.strictOptionalField(EntityPredicate.ADVANCEMENT_CODEC, "player") + EntityPredicate.ADVANCEMENT_CODEC.optionalFieldOf("player") .forGetter(Condition::player) ).apply(instance, Condition::new) ); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/events/UseBlockHandler.java b/common/src/main/java/dev/sweetberry/wwizardry/content/events/UseBlockHandler.java index eeb410ca..bd506fac 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/events/UseBlockHandler.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/events/UseBlockHandler.java @@ -9,6 +9,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -51,7 +52,7 @@ public static InteractionResult testPos(BlockPos pos, BlockState state, Player p } world.playSound(player, pos, SoundEvents.SHEEP_SHEAR, SoundSource.BLOCKS, 0.5F, 1.0F); world.playSound(player, pos, SoundEvents.SCULK_BLOCK_BREAK, SoundSource.BLOCKS, 1.5F, 1.0F); - stack.hurtAndBreak(1, player, playerEntity -> playerEntity.broadcastBreakEvent(hand)); + stack.hurtAndBreak(1, player, hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); if (!player.isCreative()) { var item = new ItemEntity(world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, Items.SCULK_VEIN.getDefaultInstance()); world.addFreshEntity(item); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java index bc396d08..b7eac455 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java @@ -9,12 +9,12 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.GlobalPos; import net.minecraft.core.Vec3i; +import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.NbtUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.PlayerRespawnLogic; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; @@ -26,11 +26,12 @@ import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.village.poi.PoiTypes; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.vehicle.DismountHelper; import net.minecraft.world.item.*; +import net.minecraft.world.item.component.LodestoneTracker; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.CollisionGetter; import net.minecraft.world.level.GameType; @@ -43,11 +44,7 @@ import java.util.Optional; -public class SoulMirrorItem extends TieredItem implements Vanishable { - public static final String LODESTONE_POS_KEY = "LodestonePos"; - public static final String LODESTONE_DIMENSION_KEY = "LodestoneDimension"; - public static final String LODESTONE_TRACKED_KEY = "LodestoneTracked"; - +public class SoulMirrorItem extends TieredItem { private static final ImmutableList VALID_HORIZONTAL_SPAWN_OFFSETS = ImmutableList.of( new Vec3i(0, 0, -1), new Vec3i(-1, 0, 0), @@ -58,6 +55,7 @@ public class SoulMirrorItem extends TieredItem implements Vanishable { new Vec3i(-1, 0, 1), new Vec3i(1, 0, 1) ); + private static final ImmutableList VALID_SPAWN_OFFSETS = new ImmutableList.Builder() .addAll(VALID_HORIZONTAL_SPAWN_OFFSETS) .addAll(VALID_HORIZONTAL_SPAWN_OFFSETS.stream().map(Vec3i::below).iterator()) @@ -70,32 +68,14 @@ public SoulMirrorItem(Properties settings) { } public static boolean hasLodestone(ItemStack stack) { - CompoundTag nbtCompound = stack.getTag(); - return nbtCompound != null && (nbtCompound.contains("LodestoneDimension") || nbtCompound.contains("LodestonePos")); - } - - @Nullable - private static ResourceKey getLodestoneDimension(CompoundTag nbt) { - return Level.RESOURCE_KEY_CODEC.parse(NbtOps.INSTANCE, nbt.get("LodestoneDimension")).result().orElse(null); + return stack.has(DataComponents.LODESTONE_TRACKER); } @Nullable - public static GlobalPos getLodestonePosition(@Nullable CompoundTag nbt) { - if (nbt == null) - return null; - - boolean hasPos = nbt.contains("LodestonePos"); - boolean hasDim = nbt.contains("LodestoneDimension"); - - if (!hasPos || !hasDim) - return null; - - var dim = getLodestoneDimension(nbt); - if (dim == null) - return null; - - BlockPos blockPos = NbtUtils.readBlockPos(nbt.getCompound("LodestonePos")); - return GlobalPos.of(dim, blockPos); + public static GlobalPos getLodestonePosition(@Nullable LodestoneTracker tracker) { + return tracker != null + ? tracker.target().orElse(null) + : null; } public static Optional findRespawnPosition(EntityType entity, CollisionGetter world, BlockPos pos) { @@ -129,25 +109,13 @@ public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, if (!hasLodestone(stack)) return; - CompoundTag nbtCompound = stack.getOrCreateTag(); - if (nbtCompound.contains("LodestoneTracked") && !nbtCompound.getBoolean("LodestoneTracked")) - return; - - var dim = getLodestoneDimension(nbtCompound); - if (dim == null || !nbtCompound.contains("LodestonePos")) - return; - - var dimWorld = ((ServerLevel)world).getServer().getLevel(dim); - if (dimWorld == null) { - nbtCompound.remove("LodestonePos"); - return; - } + var tracker = stack.get(DataComponents.LODESTONE_TRACKER); + var pos = getLodestonePosition(tracker); - BlockPos blockPos = NbtUtils.readBlockPos(nbtCompound.getCompound("LodestonePos")); - if (dimWorld.isInWorldBounds(blockPos) && dimWorld.getPoiManager().existsAtPosition(PoiTypes.LODESTONE, blockPos)) + if (pos != null) return; - nbtCompound.remove("LodestonePos"); + stack.remove(DataComponents.LODESTONE_TRACKER); } @Override @@ -171,7 +139,7 @@ public ItemStack finishUsingItem(ItemStack stack, Level world, LivingEntity user player.getCooldowns().addCooldown(this, 20); - var pos = getLodestonePosition(stack.getTag()); + var pos = getLodestonePosition(stack.get(DataComponents.LODESTONE_TRACKER)); if (pos != null) { var respawnWorld = server.getLevel(pos.dimension()); if (respawnWorld == null) { @@ -183,7 +151,7 @@ public ItemStack finishUsingItem(ItemStack stack, Level world, LivingEntity user return stack; if (!player.isCreative()) - stack.hurtAndBreak(1, user, a -> {}); + stack.hurtAndBreak(1, user, EquipmentSlot.MAINHAND); player.teleportTo(respawnWorld, respawnPos.x, respawnPos.y, respawnPos.z, player.getRespawnAngle(), 0); var block = BlockPos.containing(respawnPos.x, respawnPos.y, respawnPos.z); @@ -210,7 +178,7 @@ public ItemStack finishUsingItem(ItemStack stack, Level world, LivingEntity user } if (!player.isCreative()) - stack.hurtAndBreak(1, user, a -> {}); + stack.hurtAndBreak(1, user, EquipmentSlot.MAINHAND); var posAndWorld = moveToSpawnPoint(server, player); var respawnWorld = posAndWorld.world == null ? world : posAndWorld.world; @@ -269,17 +237,16 @@ public InteractionResult useOn(UseOnContext context) { ItemStack itemStack = context.getItemInHand(); var shouldKeepItem = !playerEntity.getAbilities().instabuild && itemStack.getCount() == 1; if (shouldKeepItem) { - writeNbt(world.dimension(), blockPos, itemStack.getOrCreateTag()); + writeLodestone(world.dimension(), blockPos, itemStack); return InteractionResult.sidedSuccess(world.isClientSide); } var itemStack2 = getDefaultInstance(); - CompoundTag nbtCompound = itemStack.hasTag() ? itemStack.getTag().copy() : new CompoundTag(); - itemStack2.setTag(nbtCompound); + if (!playerEntity.getAbilities().instabuild) itemStack.shrink(1); - writeNbt(world.dimension(), blockPos, nbtCompound); + writeLodestone(world.dimension(), blockPos, itemStack2); if (!playerEntity.getInventory().add(itemStack2)) playerEntity.drop(itemStack2, false); @@ -351,10 +318,9 @@ private static PosAndWorld moveToWorldSpawn(MinecraftServer server, ServerPlayer return new PosAndWorld(blockPos, null); } - private void writeNbt(ResourceKey worldKey, BlockPos pos, CompoundTag nbt) { - nbt.put("LodestonePos", NbtUtils.writeBlockPos(pos)); - Level.RESOURCE_KEY_CODEC.encodeStart(NbtOps.INSTANCE, worldKey).resultOrPartial(WanderingWizardry.LOGGER::error).ifPresent(element -> nbt.put("LodestoneDimension", element)); - nbt.putBoolean("LodestoneTracked", true); + private void writeLodestone(ResourceKey worldKey, BlockPos pos, ItemStack stack) { + var tracker = new LodestoneTracker(Optional.of(GlobalPos.of(worldKey, pos)), true); + stack.set(DataComponents.LODESTONE_TRACKER, tracker); } public record PosAndWorld(BlockPos pos, @Nullable ServerLevel world) {} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java index 567c9c40..438adf63 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java @@ -5,6 +5,7 @@ import net.minecraft.world.item.*; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.EnchantmentInstance; +import net.minecraft.world.item.enchantment.ItemEnchantments; import net.minecraft.world.level.Level; import java.util.ArrayList; @@ -32,13 +33,16 @@ public boolean tryCraft(AltarRecipeView view, Level world) { if (bookDirs.isEmpty()) return false; var book = enchantedBookItem.getDefaultInstance(); + var bookEnchants = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(book)); for (var i : bookDirs) { - for (var enchant : EnchantmentHelper.getEnchantments(view.getItemInPedestal(i)).entrySet()) { - if (!EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(book).keySet(), enchant.getKey()) && !Config.getAllowOpEnchants()) + for (var enchant : EnchantmentHelper.getEnchantmentsForCrafting(view.getItemInPedestal(i)).entrySet()) { + if (!EnchantmentHelper.isEnchantmentCompatible(bookEnchants.keySet(), enchant.getKey().value()) && !Config.getAllowOpEnchants()) return false; - EnchantedBookItem.addEnchantment(book, new EnchantmentInstance(enchant.getKey(), enchant.getValue())); + if (bookEnchants.getLevel(enchant.getKey().value()) > enchant.getIntValue()) + bookEnchants.upgrade(enchant.getKey().value(), enchant.getIntValue()); + else bookEnchants.set(enchant.getKey().value(), enchant.getIntValue()); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/BrewingCharmItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/BrewingCharmItem.java index c391b836..8554d2f8 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/BrewingCharmItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/BrewingCharmItem.java @@ -16,7 +16,7 @@ public boolean tryCraft(AltarRecipeView view, Level world) { ItemStack ingredientStack = null; for (var dir : AltarRecipeView.AltarDirection.cardinals()) { var stack = view.getItemInPedestal(dir); - if (stack != null && PotionBrewing.isIngredient(stack)) { + if (stack != null && world.potionBrewing().isIngredient(stack)) { ingredientSlot = dir; ingredientStack = stack; break; @@ -30,9 +30,9 @@ public boolean tryCraft(AltarRecipeView view, Level world) { var stack = view.getItemInPedestal(dir); if (stack == null) continue; - if (PotionBrewing.hasMix(stack, ingredientStack)) { + if (world.potionBrewing().hasMix(stack, ingredientStack)) { used = true; - view.setResultInPedestal(dir, PotionBrewing.mix(ingredientStack, stack)); + view.setResultInPedestal(dir, world.potionBrewing().mix(ingredientStack, stack)); } else { view.setResultInPedestal(dir, stack); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/tier/CrystallineSculkTier.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/tier/CrystallineSculkTier.java index 8e8f0da9..cca34ce4 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/tier/CrystallineSculkTier.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/tier/CrystallineSculkTier.java @@ -2,10 +2,12 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import net.minecraft.core.registries.Registries; +import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.Tier; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.Block; public class CrystallineSculkTier implements Tier { public static final CrystallineSculkTier INSTANCE = new CrystallineSculkTier(); @@ -29,8 +31,8 @@ public float getAttackDamageBonus() { } @Override - public int getLevel() { - return 0; + public TagKey getIncorrectBlocksForDrops() { + return BlockTags.INCORRECT_FOR_WOODEN_TOOL; } @Override diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java index 34c98675..764fecb5 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java @@ -12,13 +12,9 @@ @Mixin(PotionBrewing.class) public interface Accessor_PotionBrewing { - @Accessor("ALLOWED_CONTAINERS") - static List getAllowedContainers() { - throw new NotImplementedException(); - } + @Accessor("containers") + List getAllowedContainers(); - @Accessor("POTION_MIXES") - static List> getMixes() { - throw new NotImplementedException(); - } + @Accessor("potionMixes") + List> getMixes(); } diff --git a/fabric/build.gradle b/fabric/build.gradle index 27562e62..c4e0f41b 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -75,7 +75,7 @@ processResources { tasks.withType(JavaCompile).configureEach { source(project(":common").sourceSets.main.allSource) it.options.encoding = 'UTF-8' - it.options.release = 17 + it.options.release = 21 dependsOn ":generateData" } diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java index b43075bb..62a84a96 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java @@ -4,6 +4,7 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.component.Component; +import dev.sweetberry.wwizardry.api.net.ModdedPacketPayload; import dev.sweetberry.wwizardry.api.net.PacketRegistry; import dev.sweetberry.wwizardry.fabric.compat.cardinal.CardinalInitializer; import dev.sweetberry.wwizardry.fabric.compat.cardinal.component.ProxyComponent; @@ -25,6 +26,7 @@ import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.core.Registry; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackType; import net.minecraft.world.entity.Entity; @@ -45,7 +47,7 @@ public void onInitialize() { PacketRegistry.SEND_TO_CLIENT.listen((player, packet) -> { var payload = PacketByteBufs.create(); packet.writeTo(payload); - ServerPlayNetworking.send(player, packet.getId(), payload); + ServerPlayNetworking.send(player, new ModdedPacketPayload()); }); PacketRegistry.registerTo((id, constructor) -> { diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/CardinalInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/CardinalInitializer.java index 0bf15f02..214cec88 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/CardinalInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/CardinalInitializer.java @@ -1,10 +1,9 @@ package dev.sweetberry.wwizardry.fabric.compat.cardinal; -import dev.onyxstudios.cca.api.v3.component.Component; -import dev.onyxstudios.cca.api.v3.component.ComponentKey; -import dev.onyxstudios.cca.api.v3.component.ComponentRegistryV3; -import dev.onyxstudios.cca.api.v3.entity.EntityComponentFactoryRegistry; -import dev.onyxstudios.cca.api.v3.entity.EntityComponentInitializer; +import org.ladysnake.cca.api.v3.component.ComponentKey; +import org.ladysnake.cca.api.v3.component.ComponentRegistryV3; +import org.ladysnake.cca.api.v3.entity.EntityComponentFactoryRegistry; +import org.ladysnake.cca.api.v3.entity.EntityComponentInitializer; import dev.sweetberry.wwizardry.fabric.compat.cardinal.component.BoatCardinalComponent; import dev.sweetberry.wwizardry.fabric.compat.cardinal.component.ProxyComponent; import dev.sweetberry.wwizardry.fabric.compat.cardinal.component.VoidBagCardinalComponent; diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java index 14623189..9535664d 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java @@ -1,8 +1,8 @@ package dev.sweetberry.wwizardry.fabric.compat.cardinal.component; -import dev.onyxstudios.cca.api.v3.component.sync.AutoSyncedComponent; import dev.sweetberry.wwizardry.api.component.Component; import net.minecraft.nbt.CompoundTag; +import org.ladysnake.cca.api.v3.component.sync.AutoSyncedComponent; public class ProxyComponent implements AutoSyncedComponent { public T baseComponent; diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/VoidBagCardinalComponent.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/VoidBagCardinalComponent.java index f01021bd..edd17db5 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/VoidBagCardinalComponent.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/VoidBagCardinalComponent.java @@ -1,16 +1,15 @@ package dev.sweetberry.wwizardry.fabric.compat.cardinal.component; -import dev.onyxstudios.cca.api.v3.entity.PlayerComponent; import dev.sweetberry.wwizardry.content.component.VoidBagComponent; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; +import org.ladysnake.cca.api.v3.entity.RespawnableComponent; -public class VoidBagCardinalComponent extends ProxyComponent implements PlayerComponent { +public class VoidBagCardinalComponent extends ProxyComponent implements RespawnableComponent { public VoidBagCardinalComponent(Player player) { super(new VoidBagComponent()); } - @Override + @Override public boolean shouldCopyForRespawn(boolean lossless, boolean keepInventory, boolean sameCharacter) { return true; } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f0904d2e..0f7f3b24 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,19 +1,19 @@ [versions] # The latest versions are available at https://lambdaurora.dev/tools/import_quilt.html -minecraft = "1.20.4" +minecraft = "1.20.5" fabric_loader = "0.15.10" -neoforge = "20.4.83-beta" +neoforge = "20.5.0-beta" mixin = "0.8.5" -mixin_extras = "0.3.2" +mixin_extras = "0.3.5" -fabric_api = "0.95.3+1.20.4" +fabric_api = "0.97.6+1.20.5" -terrablender = "1.20.4-3.3.0.12" -ccapi = "5.4.0" +terrablender = "1.20.5-3.4.0.2" +ccapi = "6.0.0-beta.1" emi = "1.1.0+1.20.4" -modmenu = "9.0.0" +modmenu = "10.0.0-beta.1" [libraries] minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 5234d464..5f90acea 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -12,7 +12,7 @@ minecraft { } } -java.toolchain.languageVersion = JavaLanguageVersion.of(17) +java.toolchain.languageVersion = JavaLanguageVersion.of(21) runs { configureEach { @@ -55,9 +55,9 @@ dependencies { implementation libs.neoforge compileOnly project(":common") - compileOnly classify(libs.emi.neoforge, "api") - testCompileOnly classify(libs.emi.neoforge, "api") - runtimeOnly libs.emi.neoforge +// compileOnly classify(libs.emi.neoforge, "api") +// testCompileOnly classify(libs.emi.neoforge, "api") +// runtimeOnly libs.emi.neoforge implementation libs.bundles.include.neoforge testImplementation libs.bundles.include.neoforge @@ -69,7 +69,7 @@ Spec notNeoTask = { Task it -> !it.name.startsWith("neo") } as Spec tasks.withType(JavaCompile).matching(notNeoTask).configureEach { source(project(":common").sourceSets.main.allSource) it.options.encoding = 'UTF-8' - it.options.release = 17 + it.options.release = 21 dependsOn ":generateData" } diff --git a/neoforge/src/main/resources/META-INF/mods.toml b/neoforge/src/main/resources/META-INF/mods.toml index 7eceb0d4..e67b9ec0 100644 --- a/neoforge/src/main/resources/META-INF/mods.toml +++ b/neoforge/src/main/resources/META-INF/mods.toml @@ -1,5 +1,5 @@ modLoader = "javafml" #mandatory -loaderVersion = "[2,)" #mandatory +loaderVersion = "[3,)" #mandatory license = "MPL-with-ARR-assets" # Review your options at https://choosealicense.com/. #issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional [[mods]] #mandatory @@ -26,6 +26,6 @@ side = "BOTH" # Side this dependency is applied on - 'BOTH', 'CLIENT' or 'SERVER [[dependencies.wwizardry]] modId = "minecraft" type="required" #mandatory (Can be one of "required", "optional", "incompatible" or "discouraged") -versionRange = "[1.20.4,)" +versionRange = "[1.20.5,)" ordering = "NONE" side = "BOTH" From 6662d24ab5f8f553f538c8ea32455e8eca77c342 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 26 Apr 2024 17:00:15 -0500 Subject: [PATCH 11/46] Get game running --- build.gradle | 2 +- .../configured_feature/mycha_spread.json | 2 +- .../configured_feature/rare_moss_patch.json | 2 +- .../wwizardry/api/net/CustomPacket.java | 6 +- .../api/net/ModdedPacketPayload.java | 14 ---- .../wwizardry/api/net/PacketRegistry.java | 22 ++++--- .../wwizardry/api/resource/MapBackedPack.java | 10 +++ .../content/events/ModelPredicates.java | 2 - .../content/block/WallCandleBlock.java | 15 +++-- .../content/block/WallHolderBlock.java | 24 +++---- .../content/block/altar/AltarBlock.java | 20 +++--- .../block/entity/AltarBlockEntity.java | 29 ++++---- .../entity/AltarCatalyzerBlockEntity.java | 9 +-- .../block/entity/LogicGateBlockEntity.java | 5 +- .../block/nature/RootedFlowerBlock.java | 3 +- .../block/nature/SculkflowerBlock.java | 3 +- .../block/redstone/LogicGateBlock.java | 2 +- .../content/net/NetworkingInitializer.java | 2 +- .../content/net/packet/AltarCraftPacket.java | 22 +++++-- .../recipe/AltarCatalyzationRecipe.java | 13 ++-- .../AltarCatalyzationRecipeSerializer.java | 38 +++++++---- .../content/trades/TradeInitializer.java | 3 +- .../processors/WaterLoggingFixProcessor.java | 3 +- .../mixin/Accessor_PlayerRespawnLogic.java | 4 +- .../mixin/Accessor_PotionBrewing_Mix.java | 6 -- .../wwizardry/mixin/Accessor_TorchBlock.java | 12 ---- .../mixin/Invoker_BlockBehaviour.java | 20 ++++++ .../wwizardry/mixin/Mixin_MappedRegistry.java | 38 ----------- .../advancements/adventure/altar_craft.json | 2 +- .../advancements/adventure/altar_place.json | 2 +- .../advancements/adventure/brewing_charm.json | 2 +- .../adventure/crafting_charm.json | 2 +- .../adventure/crystalline_sculk.json | 2 +- .../advancements/adventure/end_crystal.json | 2 +- .../adventure/forgotten_fields.json | 2 +- .../advancements/adventure/sculk_lab.json | 2 +- .../advancements/adventure/slot_charm.json | 2 +- .../advancements/adventure/soul_mirror.json | 2 +- .../adventure/soul_mirror_bound.json | 3 +- .../advancements/adventure/void_bag.json | 2 +- .../advancements/story/mine_rose_quartz.json | 2 +- .../main/resources/wwizardry.accesswidener | 9 +-- .../src/main/resources/wwizardry.mixins.json | 3 +- .../configured_feature/mycha_spread.fennec | 6 +- .../configured_feature/rare_moss_patch.fennec | 6 +- fabric/build.gradle | 2 +- .../wwizardry/fabric/FabricInitializer.java | 28 ++------ .../client/FabricClientInitializer.java | 21 +++--- .../cardinal/component/ProxyComponent.java | 9 +-- fabric/src/main/resources/fabric.mod.json | 2 +- gradle/libs.versions.toml | 4 +- .../wwizardry/neoforge/NeoForgeEvents.java | 13 ++-- .../neoforge/component/ProxyComponent.java | 9 +-- .../networking/ComponentSyncPayload.java | 48 +++++++------- .../networking/ModdedPacketPayload.java | 52 --------------- .../networking/NeoForgeNetworking.java | 66 ++++++++----------- .../src/main/resources/accesstransformer.cfg | 15 +++-- scripts/command/aw_to_at.ts | 45 +++++++------ settings.gradle | 2 +- 59 files changed, 307 insertions(+), 391 deletions(-) delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/api/net/ModdedPacketPayload.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_TorchBlock.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Invoker_BlockBehaviour.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_MappedRegistry.java delete mode 100644 neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ModdedPacketPayload.java diff --git a/build.gradle b/build.gradle index e84ca7e0..a5f32b9e 100644 --- a/build.gradle +++ b/build.gradle @@ -69,7 +69,7 @@ tasks.register("generateData") { transpile("loot", "data/wwizardry/loot_tables") transpile("world", "data/wwizardry/worldgen") generate("blockstate", "assets/wwizardry/blockstates") - awToAt() +// awToAt() } catch (e) { e.printStackTrace() } diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_spread.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_spread.json index 7f4c33db..f8dd66e1 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_spread.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_spread.json @@ -1 +1 @@ -{"type":"vegetation_patch","config":{"depth":1,"extra_bottom_block_chance":0,"extra_edge_column_chance":0.75,"ground_state":{"type":"simple_state_provider","state":{"Name":"wwizardry:mycelial_sand"}},"replaceable":"#wwizardry:mycha_growth","surface":"floor","vegetation_chance":0.3,"vegetation_feature":{"feature":"wwizardry:mycha_growth","placement":[]},"vertical_range":5,"xz_radius":{"type":"uniform","value":{"max_inclusive":2,"min_inclusive":1}}}} \ No newline at end of file +{"type":"vegetation_patch","config":{"depth":1,"extra_bottom_block_chance":0,"extra_edge_column_chance":0.75,"ground_state":{"type":"simple_state_provider","state":{"Name":"wwizardry:mycelial_sand"}},"replaceable":"#wwizardry:mycha_growth","surface":"floor","vegetation_chance":0.3,"vegetation_feature":{"feature":"wwizardry:mycha_growth","placement":[]},"vertical_range":5,"xz_radius":{"type":"uniform","max_inclusive":2,"min_inclusive":1}}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_moss_patch.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_moss_patch.json index e8602fbb..8322f19c 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_moss_patch.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_moss_patch.json @@ -1 +1 @@ -{"type":"vegetation_patch","config":{"depth":1,"extra_bottom_block_chance":0,"extra_edge_column_chance":0.8,"ground_state":{"type":"simple_state_provider","state":{"Name":"moss_block"}},"replaceable":"#moss_replaceable","surface":"floor","vegetation_chance":0.8,"vegetation_feature":{"feature":"moss_vegetation","placement":[]},"vertical_range":5,"xz_radius":{"type":"uniform","value":{"max_inclusive":6,"min_inclusive":2}}}} \ No newline at end of file +{"type":"vegetation_patch","config":{"depth":1,"extra_bottom_block_chance":0,"extra_edge_column_chance":0.8,"ground_state":{"type":"simple_state_provider","state":{"Name":"moss_block"}},"replaceable":"#moss_replaceable","surface":"floor","vegetation_chance":0.8,"vegetation_feature":{"feature":"moss_vegetation","placement":[]},"vertical_range":5,"xz_radius":{"type":"uniform","max_inclusive":6,"min_inclusive":2}}} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/net/CustomPacket.java b/common/src/main/java/dev/sweetberry/wwizardry/api/net/CustomPacket.java index 8946d616..243f7ba6 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/net/CustomPacket.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/api/net/CustomPacket.java @@ -1,17 +1,17 @@ package dev.sweetberry.wwizardry.api.net; +import com.mojang.serialization.Codec; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -public interface CustomPacket { - void writeTo(FriendlyByteBuf buf); - +public interface CustomPacket extends CustomPacketPayload { void onClientReceive(Minecraft client, ClientLevel world, AbstractClientPlayer receiver); void onServerReceive(MinecraftServer server, ServerLevel world, ServerPlayer sender); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/net/ModdedPacketPayload.java b/common/src/main/java/dev/sweetberry/wwizardry/api/net/ModdedPacketPayload.java deleted file mode 100644 index ec39b8c6..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/net/ModdedPacketPayload.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.sweetberry.wwizardry.api.net; - -import dev.sweetberry.wwizardry.WanderingWizardry; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import org.jetbrains.annotations.NotNull; - -public class ModdedPacketPayload implements CustomPacketPayload { - public static final Type TYPE = new Type<>(WanderingWizardry.id("packet")); - - @Override @NotNull - public Type type() { - return TYPE; - } -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/net/PacketRegistry.java b/common/src/main/java/dev/sweetberry/wwizardry/api/net/PacketRegistry.java index 828d4d1a..b391bf96 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/net/PacketRegistry.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/api/net/PacketRegistry.java @@ -1,20 +1,26 @@ package dev.sweetberry.wwizardry.api.net; +import com.mojang.serialization.Codec; import dev.sweetberry.wwizardry.api.event.Event; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.function.BiConsumer; import java.util.function.Consumer; public class PacketRegistry { - private static final Map> REGISTRY = new ConcurrentHashMap<>(); - private static final Event>> EVENT = new Event<>(listeners -> - (id, constructor) -> + private static final Map, StreamCodec> REGISTRY = new ConcurrentHashMap<>(); + private static final Event, StreamCodec>> EVENT = new Event<>(listeners -> + (id, codec) -> listeners.forEach(l -> - l.accept(id, constructor) + l.accept(id, codec) ) ); @@ -32,12 +38,12 @@ public class PacketRegistry { ) ); - public static void register(ResourceLocation id, PacketConstructor packet) { - REGISTRY.put(id, packet); - EVENT.invoker().accept(id, packet); + public static void register(CustomPacketPayload.Type type, StreamCodec codec) { + REGISTRY.put((CustomPacketPayload.Type) type, (StreamCodec) codec); + EVENT.invoker().accept((CustomPacketPayload.Type) type, (StreamCodec) codec); } - public static void registerTo(BiConsumer> callback) { + public static void registerTo(BiConsumer, StreamCodec> callback) { REGISTRY.forEach(callback); EVENT.listen(callback); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/resource/MapBackedPack.java b/common/src/main/java/dev/sweetberry/wwizardry/api/resource/MapBackedPack.java index 2182f15e..126c36fb 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/resource/MapBackedPack.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/api/resource/MapBackedPack.java @@ -1,9 +1,13 @@ package dev.sweetberry.wwizardry.api.resource; +import dev.sweetberry.wwizardry.WanderingWizardry; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.PackLocationInfo; import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.metadata.MetadataSectionSerializer; +import net.minecraft.server.packs.repository.PackSource; import net.minecraft.server.packs.resources.IoSupplier; import org.jetbrains.annotations.Nullable; @@ -12,6 +16,7 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -80,6 +85,11 @@ public T getMetadataSection(MetadataSectionSerializer metaReader) throws return null; } + @Override + public PackLocationInfo location() { + return new PackLocationInfo(WanderingWizardry.MODID, Component.empty(), PackSource.BUILT_IN, Optional.empty()); + } + @Override public String packId() { return "Wandering Wizardry Resources"; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ModelPredicates.java b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ModelPredicates.java index 3076d9bf..7b3db546 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ModelPredicates.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ModelPredicates.java @@ -16,8 +16,6 @@ public static float getVoidBag(ItemStack itemStack, ClientLevel clientWorld, Liv var client = Minecraft.getInstance(); if (client.player == null) return 0.0f; - var nbt = itemStack.getTag(); - if (nbt != null && nbt.contains("Locked")) return nbt.getBoolean("Locked") ? 1.0f : 0.0f; var bag = ComponentInitializer.getComponent(ComponentInitializer.VOID_BAG, client.player); return bag.locked ? 1 : 0; } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallCandleBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallCandleBlock.java index a72d2465..544b874f 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallCandleBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallCandleBlock.java @@ -1,5 +1,8 @@ package dev.sweetberry.wwizardry.content.block; +import dev.sweetberry.wwizardry.mixin.Invoker_BlockBehaviour; +import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.entity.EquipmentSlot; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -46,7 +49,7 @@ public WallCandleBlock(Properties settings, CandleBlock candleBlock) { @Override public List getDrops(BlockState state, LootParams.Builder builder) { - var stacks = new ArrayList<>(BlockInitializer.WALL_HOLDER.get().getDrops(state, builder)); + var stacks = new ArrayList<>(((Invoker_BlockBehaviour) BlockInitializer.WALL_HOLDER.get()).invokeGetDrops(state, builder)); stacks.add(new ItemStack(candleBlock)); return stacks; } @@ -94,18 +97,18 @@ public int getParticleHeight(BlockState state) { } @Override - public InteractionResult specializedUseAction(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + public ItemInteractionResult specializedUseAction(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { var handStack = player.getItemInHand(hand); if (handStack.isEmpty() && state.getValue(BlockStateProperties.LIT)) { extinguish(state, world, pos); - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } else if (handStack.is(Items.FLINT_AND_STEEL) && !state.getValue(BlockStateProperties.LIT)) { if (world instanceof ServerLevel) - handStack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); + handStack.hurtAndBreak(1, player, hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); light(player, state, world, pos); - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } - return InteractionResult.PASS; + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; } public void extinguish(BlockState state, Level world, BlockPos pos) { diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallHolderBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallHolderBlock.java index 4fa69b49..c88c5402 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallHolderBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallHolderBlock.java @@ -1,5 +1,6 @@ package dev.sweetberry.wwizardry.content.block; +import dev.sweetberry.wwizardry.mixin.Invoker_BlockBehaviour; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleOptions; @@ -7,6 +8,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -115,7 +117,7 @@ public BlockState updateShape( } @Override - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { if (state.getBlock() == BlockInitializer.WALL_HOLDER.get()) return useEmpty(state, world, pos, player, hand); var droppedBlock = getDroppedBlock(); @@ -124,10 +126,10 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player var stackEntity = new ItemEntity(world, pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5, droppedBlock.asItem().getDefaultInstance()); world.addFreshEntity(stackEntity); } - var soundGroup = droppedBlock.getSoundType(droppedBlock.defaultBlockState()); + var soundGroup = ((Invoker_BlockBehaviour)droppedBlock).invokeGetSoundType(droppedBlock.defaultBlockState()); world.playSound(player, pos, soundGroup.getBreakSound(), SoundSource.BLOCKS); world.setBlockAndUpdate(pos, BlockInitializer.WALL_HOLDER.get().defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, state.getValue(BlockStateProperties.HORIZONTAL_FACING))); - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } return specializedUseAction(state, world, pos, player, hand, hit); @@ -138,21 +140,21 @@ public Block getDroppedBlock() { return null; } - public InteractionResult specializedUseAction(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - return InteractionResult.PASS; + public ItemInteractionResult specializedUseAction(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; } - public InteractionResult useEmpty(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand) { - if (player.isSecondaryUseActive()) return InteractionResult.PASS; + public ItemInteractionResult useEmpty(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand) { + if (player.isSecondaryUseActive()) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; var stack = player.getItemInHand(hand); - if (!(stack.getItem() instanceof BlockItem item)) return InteractionResult.PASS; - if (!ITEM_LOOKUP.containsKey(item.getBlock())) return InteractionResult.PASS; + if (!(stack.getItem() instanceof BlockItem item)) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + if (!ITEM_LOOKUP.containsKey(item.getBlock())) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; var block = item.getBlock(); var holder = ITEM_LOOKUP.get(block); - var soundGroup = block.getSoundType(block.defaultBlockState()); + var soundGroup = ((Invoker_BlockBehaviour) block).invokeGetSoundType(block.defaultBlockState()); world.playSound(player, pos, soundGroup.getPlaceSound(), SoundSource.BLOCKS); world.setBlockAndUpdate(pos, holder.defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, state.getValue(BlockStateProperties.HORIZONTAL_FACING))); @@ -161,7 +163,7 @@ public InteractionResult useEmpty(BlockState state, Level world, BlockPos pos, P player.setItemInHand(hand, stack); } - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } public void spawnParticle(Level world, Vec3 pos, ParticleOptions particleEffect, RandomSource random) { diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/altar/AltarBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/altar/AltarBlock.java index 04ec824a..be4e2e88 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/altar/AltarBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/altar/AltarBlock.java @@ -14,6 +14,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -90,19 +91,18 @@ public void handleInput(Player player, InteractionHand hand, AltarBlockEntity en } @Override - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (player.isShiftKeyDown()) return InteractionResult.PASS; - var stack = player.getItemInHand(hand); + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + if (player.isShiftKeyDown()) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; var entity = (AltarBlockEntity) world.getBlockEntity(pos); assert entity != null; - if (entity.crafting) return InteractionResult.PASS; - if (stack.isEmpty() && entity.heldItem.isEmpty()) return InteractionResult.PASS; - if (world.isClientSide) return InteractionResult.SUCCESS; + if (entity.crafting) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + if (stack.isEmpty() && entity.heldItem.isEmpty()) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + if (world.isClientSide) return ItemInteractionResult.SUCCESS; var newstack = stack.copy().copyWithCount(1); if (stack.getItem() == entity.heldItem.getItem()) { if (stack.getCount() == stack.getMaxStackSize()) { - if (!player.addItem(entity.heldItem)) return InteractionResult.SUCCESS; + if (!player.addItem(entity.heldItem)) return ItemInteractionResult.SUCCESS; } else { stack.grow(1); player.setItemInHand(hand, stack); @@ -111,7 +111,7 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player entity.setChanged(); world.playSound(null, pos, SoundEvents.END_PORTAL_FRAME_FILL, SoundSource.BLOCKS, 7.5f, 0f); world.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(state)); - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } if (!stack.isEmpty()) { @@ -122,7 +122,7 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player if (stack.getCount() == 1) handleInput(player, hand, entity); else if (!player.addItem(entity.heldItem)) - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; stack.shrink(1); entity.heldItem = newstack; @@ -137,7 +137,7 @@ else if (!player.addItem(entity.heldItem)) entity.setChanged(); world.playSound(null, pos, SoundEvents.END_PORTAL_FRAME_FILL, SoundSource.BLOCKS, 10f, 0f); - return InteractionResult.SUCCESS; + return ItemInteractionResult.SUCCESS; } @Override diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java index 20909d22..440807bf 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java @@ -1,6 +1,8 @@ package dev.sweetberry.wwizardry.content.block.entity; import dev.sweetberry.wwizardry.api.altar.AltarRecipeView; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.component.DataComponents; import net.minecraft.util.Mth; import org.jetbrains.annotations.Nullable; @@ -122,13 +124,10 @@ public void dropContainedItems(ItemStack stack) { } private static Stream getBundledStacks(ItemStack stack) { - CompoundTag nbtCompound = stack.getTag(); - if (nbtCompound == null) + var contents = stack.get(DataComponents.BUNDLE_CONTENTS); + if (contents == null) return Stream.empty(); - if (!nbtCompound.contains("Items")) - return Stream.empty(); - ListTag nbtList = nbtCompound.getList("Items", Tag.TAG_COMPOUND); - return nbtList.stream().map(CompoundTag.class::cast).map(ItemStack::of); + return contents.itemCopyStream(); } public abstract Block getBlock(); @@ -136,28 +135,30 @@ private static Stream getBundledStacks(ItemStack stack) { public abstract void tick(Level world, BlockPos pos, BlockState state); @Override - protected void saveAdditional(CompoundTag nbt) { + public void saveAdditional(CompoundTag nbt, HolderLookup.Provider provider) { var heldItemNbt = new CompoundTag(); - heldItem.save(heldItemNbt); + if (!heldItemNbt.isEmpty()) + heldItem.save(provider, heldItemNbt); var recipeRemainderNbt = new CompoundTag(); - recipeRemainder.save(recipeRemainderNbt); + if (!recipeRemainder.isEmpty()) + recipeRemainder.save(provider, recipeRemainderNbt); nbt.put("HeldItem", heldItemNbt); nbt.put("RecipeRemainder", recipeRemainderNbt); nbt.putBoolean("crafting", crafting); } @Override - public void load(CompoundTag nbt) { + public void loadAdditional(CompoundTag nbt, HolderLookup.Provider provider) { var heldItemNbt = nbt.getCompound("HeldItem"); - heldItem = ItemStack.of(heldItemNbt); + heldItem = ItemStack.parse(provider, heldItemNbt).orElse(ItemStack.EMPTY); var recipeRemainderNbt = nbt.getCompound("RecipeRemainder"); - recipeRemainder = ItemStack.of(recipeRemainderNbt); + recipeRemainder = ItemStack.parse(provider, recipeRemainderNbt).orElse(ItemStack.EMPTY); crafting = nbt.getBoolean("crafting"); } @Override - public CompoundTag getUpdateTag() { - return saveWithoutMetadata(); + public CompoundTag getUpdateTag(HolderLookup.Provider provider) { + return saveWithoutMetadata(provider); } @Nullable diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java index f2175e9f..459b9aac 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java @@ -10,6 +10,7 @@ import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; @@ -141,14 +142,14 @@ public void tick(Level world, BlockPos pos, BlockState state) { } @Override - protected void saveAdditional(CompoundTag nbt) { - super.saveAdditional(nbt); + public void saveAdditional(CompoundTag nbt, HolderLookup.Provider provider) { + super.saveAdditional(nbt, provider); behavior.save(nbt); } @Override - public void load(CompoundTag nbt) { - super.load(nbt); + public void loadAdditional(CompoundTag nbt, HolderLookup.Provider provider) { + super.loadAdditional(nbt, provider); behavior.load(nbt); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/LogicGateBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/LogicGateBlockEntity.java index 0b4f376c..e623827f 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/LogicGateBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/LogicGateBlockEntity.java @@ -2,6 +2,7 @@ import dev.sweetberry.wwizardry.content.block.BlockInitializer; import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -15,12 +16,12 @@ public LogicGateBlockEntity(BlockPos pos, BlockState state) { } @Override - protected void saveAdditional(CompoundTag nbt) { + public void saveAdditional(CompoundTag nbt, HolderLookup.Provider provider) { nbt.putInt("OutputSignal", this.outputSignal); } @Override - public void load(CompoundTag nbt) { + public void loadAdditional(CompoundTag nbt, HolderLookup.Provider provider) { this.outputSignal = nbt.getInt("OutputSignal"); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/RootedFlowerBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/RootedFlowerBlock.java index cc2b0222..9bc04897 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/RootedFlowerBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/RootedFlowerBlock.java @@ -2,6 +2,7 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.tags.TagKey; import net.minecraft.world.effect.MobEffect; @@ -17,7 +18,7 @@ public class RootedFlowerBlock extends FlowerBlock { public static final VoxelShape SHAPE = Block.box(5.0, 0.0, 5.0, 11.0, 16.0, 11.0); public final TagKey tag; - public RootedFlowerBlock(MobEffect suspiciousStewEffect, int effectDuration, String tagName, Properties settings) { + public RootedFlowerBlock(Holder suspiciousStewEffect, int effectDuration, String tagName, Properties settings) { super(suspiciousStewEffect, effectDuration, settings); tag = TagKey.create(Registries.BLOCK, WanderingWizardry.id(tagName)); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/SculkflowerBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/SculkflowerBlock.java index b0d1acb7..cb5c715c 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/SculkflowerBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/SculkflowerBlock.java @@ -3,6 +3,7 @@ import dev.sweetberry.wwizardry.content.block.Sculkable; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Holder; import net.minecraft.util.RandomSource; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffects; @@ -23,7 +24,7 @@ public class SculkflowerBlock extends FlowerBlock implements Sculkable, SculkBehaviour { - public SculkflowerBlock(MobEffect suspiciousStewEffect, int effectDuration, Properties settings) { + public SculkflowerBlock(Holder suspiciousStewEffect, int effectDuration, Properties settings) { super(suspiciousStewEffect, effectDuration, settings); registerDefaultState(defaultBlockState().setValue(Sculkable.SCULK_INFESTED, false)); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java index 1194833b..9dd9cb65 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java @@ -47,7 +47,7 @@ public LogicGateBlock(Properties settings, SideInput inputType, boolean multista } @Override - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (!multistate) return InteractionResult.PASS; if (!player.getAbilities().mayBuild) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/net/NetworkingInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/net/NetworkingInitializer.java index 864c76f6..50fe2073 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/net/NetworkingInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/net/NetworkingInitializer.java @@ -5,6 +5,6 @@ public class NetworkingInitializer { public static void init() { - PacketRegistry.register(AltarCraftPacket.ID, AltarCraftPacket::new); + PacketRegistry.register(AltarCraftPacket.TYPE, AltarCraftPacket.CODEC); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/net/packet/AltarCraftPacket.java b/common/src/main/java/dev/sweetberry/wwizardry/content/net/packet/AltarCraftPacket.java index f138a430..ba451281 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/net/packet/AltarCraftPacket.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/net/packet/AltarCraftPacket.java @@ -8,6 +8,8 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; @@ -17,6 +19,10 @@ public class AltarCraftPacket implements CustomPacket { public static final ResourceLocation ID = WanderingWizardry.id("altar_craft"); + public static final Type TYPE = new Type<>(ID); + public static final StreamCodec CODEC = StreamCodec.of( + AltarCraftPacket::writeTo, AltarCraftPacket::readFrom + ); public BlockPos pos; public boolean bloom; @@ -29,14 +35,17 @@ public AltarCraftPacket(BlockPos pos, boolean bloom) { this.bloom = bloom; } - public void writeTo(FriendlyByteBuf buf) { - buf.writeBlockPos(pos); - buf.writeBoolean(bloom); + public static void writeTo(FriendlyByteBuf buf, AltarCraftPacket packet) { + buf.writeBlockPos(packet.pos); + buf.writeBoolean(packet.bloom); + } + + public static AltarCraftPacket readFrom(FriendlyByteBuf buf) { + return new AltarCraftPacket(buf.readBlockPos(), buf.readBoolean()); } @Override public void onClientReceive(Minecraft client, ClientLevel world, AbstractClientPlayer receiver) { - world.addParticle(ParticleTypes.SONIC_BOOM, pos.getX() + 0.5, pos.getY() + 5.5, pos.getZ() + 0.5, 0, 0, 0); world.playLocalSound(pos.getX() + 0.5, pos.getY() + 5.5, pos.getZ() + 0.5, SoundEvents.DRAGON_FIREBALL_EXPLODE, SoundSource.BLOCKS, 1, 1, true); @@ -51,4 +60,9 @@ public void onServerReceive(MinecraftServer server, ServerLevel world, ServerPla public ResourceLocation getId() { return ID; } + + @Override + public Type type() { + return TYPE; + } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java index f95c9624..0b34ba04 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java @@ -3,6 +3,7 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.altar.AltarCraftable; import dev.sweetberry.wwizardry.api.altar.AltarRecipeView; +import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.Registries; @@ -51,7 +52,7 @@ public boolean matches(AltarRecipeView inventory, Level world) { } @Override - public ItemStack assemble(AltarRecipeView container, RegistryAccess registryAccess) { + public ItemStack assemble(AltarRecipeView view, HolderLookup.Provider provider) { return result.copy(); } @@ -60,6 +61,11 @@ public boolean canCraftInDimensions(int width, int height) { return width == 1 && height == 1; } + @Override + public ItemStack getResultItem(HolderLookup.Provider provider) { + return result.copy(); + } + @Override public NonNullList getIngredients() { NonNullList list = NonNullList.create(); @@ -72,11 +78,6 @@ public RecipeSerializer getSerializer() { return RecipeInitializer.ALTAR_SERIALIZER.get(); } - @Override - public ItemStack getResultItem(RegistryAccess registryManager) { - return result; - } - @Override public RecipeType getType() { return RecipeInitializer.ALTAR_TYPE.get(); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java index c3248e0a..7dec5960 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java @@ -2,17 +2,20 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; +import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.Arrays; import java.util.List; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.util.ExtraCodecs; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; public class AltarCatalyzationRecipeSerializer implements RecipeSerializer { - public static final Codec CODEC = RecordCodecBuilder.create( + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( instance -> instance.group( Ingredient.CODEC_NONEMPTY .fieldOf("catalyst") @@ -32,35 +35,42 @@ public class AltarCatalyzationRecipeSerializer implements RecipeSerializer STREAM_CODEC = StreamCodec.of( + AltarCatalyzationRecipeSerializer::toNetwork, AltarCatalyzationRecipeSerializer::fromNetwork + ); + @Override - public Codec codec() { + public MapCodec codec() { return CODEC; } @Override - public AltarCatalyzationRecipe fromNetwork(FriendlyByteBuf buf) { - var catalyst = Ingredient.fromNetwork(buf); + public StreamCodec streamCodec() { + return STREAM_CODEC; + } + + public static AltarCatalyzationRecipe fromNetwork(RegistryFriendlyByteBuf buf) { + var catalyst = Ingredient.CONTENTS_STREAM_CODEC.decode(buf); var inputs = new Ingredient[4]; for (int i = 0; i < inputs.length; i++) - inputs[i] = Ingredient.fromNetwork(buf); - var result = buf.readItem(); + inputs[i] = Ingredient.CONTENTS_STREAM_CODEC.decode(buf); + var result = ItemStack.STREAM_CODEC.decode(buf); var keepCatalyst = buf.readBoolean(); var bloom = buf.readInt(); return new AltarCatalyzationRecipe(catalyst, Arrays.stream(inputs).toList(), result, keepCatalyst, bloom); } - @Override - public void toNetwork(FriendlyByteBuf buf, AltarCatalyzationRecipe recipe) { - recipe.catalyst().toNetwork(buf); + public static void toNetwork(RegistryFriendlyByteBuf buf, AltarCatalyzationRecipe recipe) { + Ingredient.CONTENTS_STREAM_CODEC.encode(buf, recipe.catalyst()); for (Ingredient input : recipe.inputs()) - input.toNetwork(buf); - buf.writeItem(recipe.result()); + Ingredient.CONTENTS_STREAM_CODEC.encode(buf, input); + ItemStack.STREAM_CODEC.encode(buf, recipe.result()); buf.writeBoolean(recipe.keepCatalyst()); buf.writeInt(recipe.bloom()); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java index ca7e209f..2ebcb3e7 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java @@ -9,6 +9,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.item.trading.ItemCost; import net.minecraft.world.item.trading.MerchantOffer; import java.util.function.Consumer; @@ -60,7 +61,7 @@ public ItemsForEmeralds(Supplier item, int cost, int count, int maxUses, i } public MerchantOffer getOffer(Entity entity, RandomSource random) { - return new MerchantOffer(new ItemStack(Items.EMERALD, cost), item.get().getDefaultInstance().copyWithCount(count), maxUses, xp, priceMultiplier); + return new MerchantOffer(new ItemCost(Items.EMERALD, cost), item.get().getDefaultInstance().copyWithCount(count), maxUses, xp, priceMultiplier); } } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java index 13f8a8c3..484efe8d 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java @@ -1,6 +1,7 @@ package dev.sweetberry.wwizardry.content.world.processors; import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.minecraft.core.BlockPos; import net.minecraft.server.level.WorldGenRegion; @@ -14,7 +15,7 @@ import org.jetbrains.annotations.Nullable; public class WaterLoggingFixProcessor extends StructureProcessor { - public static final Codec CODEC = Codec.unit(WaterLoggingFixProcessor::new); + public static final MapCodec CODEC = MapCodec.unit(new WaterLoggingFixProcessor()); @Nullable @Override diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PlayerRespawnLogic.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PlayerRespawnLogic.java index 061e711a..8eda738c 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PlayerRespawnLogic.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PlayerRespawnLogic.java @@ -9,8 +9,8 @@ @Mixin(PlayerRespawnLogic.class) public interface Accessor_PlayerRespawnLogic { - @Invoker - static BlockPos invokeGetOverworldRespawnPos(ServerLevel $$0, int $$1, int $$2) { + @Invoker("getOverworldRespawnPos") + static BlockPos invokeGetOverworldRespawnPos(ServerLevel level, int i, int j) { throw new NotImplementedException(); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing_Mix.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing_Mix.java index 646a6dad..aeacf420 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing_Mix.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing_Mix.java @@ -9,10 +9,4 @@ public interface Accessor_PotionBrewing_Mix { @Accessor Ingredient getIngredient(); - - @Accessor - T getFrom(); - - @Accessor - T getTo(); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_TorchBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_TorchBlock.java deleted file mode 100644 index 66357c59..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_TorchBlock.java +++ /dev/null @@ -1,12 +0,0 @@ -package dev.sweetberry.wwizardry.mixin; - -import net.minecraft.core.particles.SimpleParticleType; -import net.minecraft.world.level.block.TorchBlock; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(TorchBlock.class) -public interface Accessor_TorchBlock { - @Accessor - SimpleParticleType getFlameParticle(); -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Invoker_BlockBehaviour.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Invoker_BlockBehaviour.java new file mode 100644 index 00000000..2468ba96 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Invoker_BlockBehaviour.java @@ -0,0 +1,20 @@ +package dev.sweetberry.wwizardry.mixin; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.loot.LootParams; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.List; + +@Mixin(BlockBehaviour.class) +public interface Invoker_BlockBehaviour { + @Invoker("getSoundType") + SoundType invokeGetSoundType(BlockState state); + + @Invoker("getDrops") + List invokeGetDrops(BlockState state, LootParams.Builder builder); +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_MappedRegistry.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_MappedRegistry.java deleted file mode 100644 index 7c9b242d..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_MappedRegistry.java +++ /dev/null @@ -1,38 +0,0 @@ -package dev.sweetberry.wwizardry.mixin; - -import com.mojang.serialization.Lifecycle; -import dev.sweetberry.wwizardry.api.event.Event; -import dev.sweetberry.wwizardry.api.registry.RegistryCallback; -import dev.sweetberry.wwizardry.api.registry.RegistryEventHolder; -import net.minecraft.core.Holder; -import net.minecraft.core.MappedRegistry; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceKey; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(MappedRegistry.class) -public class Mixin_MappedRegistry implements RegistryEventHolder { - @Unique - private final Event> wwizardry$EVENT = new Event<>(listeners -> (registry, id, object) -> { - for (var listener : listeners) { - listener.register(registry, id, object); - } - }); - - @Override - public Event> wwizardry$getEvent() { - return wwizardry$EVENT; - } - - @Inject( - method = "registerMapping", - at = @At("RETURN") - ) - private void wwizardry$triggerEvent(int i, ResourceKey key, T value, Lifecycle lifecycle, CallbackInfoReturnable> cir) { - wwizardry$EVENT.invoker().register((Registry)this, key.location(), () -> value); - } -} diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json b/common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json index f270ea20..7f645dfe 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:altar_pedestal" + "id": "wwizardry:altar_pedestal" }, "title": { "translate": "advancement.wwizardry.adventure.altar.craft.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/altar_place.json b/common/src/main/resources/data/wwizardry/advancements/adventure/altar_place.json index c5b2afc9..36e1351b 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/altar_place.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/altar_place.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:altar_catalyzer" + "id": "wwizardry:altar_catalyzer" }, "title": { "translate": "advancement.wwizardry.adventure.altar.place.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/brewing_charm.json b/common/src/main/resources/data/wwizardry/advancements/adventure/brewing_charm.json index c6b480bb..71325f45 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/brewing_charm.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/brewing_charm.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:brewing_charm" + "id": "wwizardry:brewing_charm" }, "title": { "translate": "advancement.wwizardry.adventure.charm.brewing.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/crafting_charm.json b/common/src/main/resources/data/wwizardry/advancements/adventure/crafting_charm.json index 26cea451..2648639e 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/crafting_charm.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/crafting_charm.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:crafting_charm" + "id": "wwizardry:crafting_charm" }, "title": { "translate": "advancement.wwizardry.adventure.charm.crafting.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/crystalline_sculk.json b/common/src/main/resources/data/wwizardry/advancements/adventure/crystalline_sculk.json index facbb640..ed4b07c8 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/crystalline_sculk.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/crystalline_sculk.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:crystalline_sculk" + "id": "wwizardry:crystalline_sculk" }, "title": { "translate": "advancement.wwizardry.adventure.crystalline_sculk.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/end_crystal.json b/common/src/main/resources/data/wwizardry/advancements/adventure/end_crystal.json index 98540251..425d2e42 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/end_crystal.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/end_crystal.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "end_crystal" + "id": "end_crystal" }, "title": { "translate": "advancement.wwizardry.adventure.altar.crystal.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json b/common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json index b6e50ed5..df092d8f 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:denia_sapling" + "id": "wwizardry:denia_sapling" }, "title": { "translate": "advancement.wwizardry.adventure.forgotten_fields.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json b/common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json index bb52a1f8..845ca4d0 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:camera" + "id": "wwizardry:camera" }, "title": { "translate": "advancement.wwizardry.adventure.sculk_lab.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/slot_charm.json b/common/src/main/resources/data/wwizardry/advancements/adventure/slot_charm.json index 4ebd8d3c..7362a526 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/slot_charm.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/slot_charm.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:slot_charm" + "id": "wwizardry:slot_charm" }, "title": { "translate": "advancement.wwizardry.adventure.charm.slot.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror.json b/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror.json index 8a5c5af7..63b50f3a 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:soul_mirror" + "id": "wwizardry:soul_mirror" }, "title": { "translate": "advancement.wwizardry.adventure.soul_mirror.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror_bound.json b/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror_bound.json index d435a95f..df909c0f 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror_bound.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror_bound.json @@ -1,8 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:soul_mirror", - "nbt": "{\"LodestoneDimension\": \"null\"}" + "id": "wwizardry:soul_mirror" }, "title": { "translate": "advancement.wwizardry.adventure.soul_mirror.bound.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/void_bag.json b/common/src/main/resources/data/wwizardry/advancements/adventure/void_bag.json index f8d96ed0..7760f109 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/void_bag.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/void_bag.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:void_bag" + "id": "wwizardry:void_bag" }, "title": { "translate": "advancement.wwizardry.adventure.void_bag.title" diff --git a/common/src/main/resources/data/wwizardry/advancements/story/mine_rose_quartz.json b/common/src/main/resources/data/wwizardry/advancements/story/mine_rose_quartz.json index f0ab405d..1a7e4afb 100644 --- a/common/src/main/resources/data/wwizardry/advancements/story/mine_rose_quartz.json +++ b/common/src/main/resources/data/wwizardry/advancements/story/mine_rose_quartz.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "wwizardry:rose_quartz" + "id": "wwizardry:rose_quartz" }, "title": { "translate": "advancement.wwizardry.story.quartz.title" diff --git a/common/src/main/resources/wwizardry.accesswidener b/common/src/main/resources/wwizardry.accesswidener index fa7729c1..ea883694 100644 --- a/common/src/main/resources/wwizardry.accesswidener +++ b/common/src/main/resources/wwizardry.accesswidener @@ -4,9 +4,6 @@ accessible class net/minecraft/world/level/block/entity/BlockEntityType$BlockEnt accessible class net/minecraft/world/item/alchemy/PotionBrewing$Mix accessible class net/minecraft/world/entity/npc/VillagerTrades$ItemsForEmeralds -accessible field net/minecraft/world/item/alchemy/PotionBrewing ALLOWED_CONTAINERS Ljava/util/List; -accessible field net/minecraft/world/item/alchemy/PotionBrewing POTION_MIXES Ljava/util/List; - accessible method net/minecraft/world/level/block/StairBlock (Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/IronBarsBlock (Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/TransparentBlock (Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V @@ -17,7 +14,5 @@ accessible method net/minecraft/world/level/block/DoorBlock (Lnet/minecra accessible method net/minecraft/world/level/block/TrapDoorBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/SaplingBlock (Lnet/minecraft/world/level/block/grower/TreeGrower;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V -accessible method net/minecraft/client/renderer/item/ItemProperties register (Lnet/minecraft/world/item/Item;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/renderer/item/ClampedItemPropertyFunction;)V -accessible method net/minecraft/client/renderer/blockentity/BlockEntityRenderers register (Lnet/minecraft/world/level/block/entity/BlockEntityType;Lnet/minecraft/client/renderer/blockentity/BlockEntityRendererProvider;)V -accessible method net/minecraft/server/level/PlayerRespawnLogic getOverworldRespawnPos (Lnet/minecraft/server/level/ServerLevel;II)Lnet/minecraft/core/BlockPos; -accessible method net/minecraft/world/item/Item getCraftingRemainingItem ()Lnet/minecraft/world/item/Item; +accessible method net/minecraft/world/level/block/entity/BlockEntity saveAdditional (Lnet/minecraft/nbt/CompoundTag;Lnet/minecraft/core/HolderLookup$Provider;)V +accessible method net/minecraft/world/level/block/entity/BlockEntity loadAdditional (Lnet/minecraft/nbt/CompoundTag;Lnet/minecraft/core/HolderLookup$Provider;)V diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index 125a1e0f..753d71d2 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -11,11 +11,10 @@ "Accessor_PotionBrewing_Mix", "Accessor_ServerPlayer", "Accessor_StructureProcessor", - "Accessor_TorchBlock", + "Invoker_BlockBehaviour", "Mixin_Boat", "Mixin_Item", "Mixin_ItemEntity", - "Mixin_MappedRegistry", "Mixin_MultifaceSpreader_DefaultSpreaderConfig", "Mixin_Player", "Mixin_RedStoneWireBlock", diff --git a/data/world/configured_feature/mycha_spread.fennec b/data/world/configured_feature/mycha_spread.fennec index 879d8da5..c406b85e 100644 --- a/data/world/configured_feature/mycha_spread.fennec +++ b/data/world/configured_feature/mycha_spread.fennec @@ -19,9 +19,7 @@ config { vertical_range = 5 xz_radius { type = "uniform" - value { - max_inclusive = 2 - min_inclusive = 1 - } + max_inclusive = 2 + min_inclusive = 1 } } diff --git a/data/world/configured_feature/rare_moss_patch.fennec b/data/world/configured_feature/rare_moss_patch.fennec index 00359973..9a401276 100644 --- a/data/world/configured_feature/rare_moss_patch.fennec +++ b/data/world/configured_feature/rare_moss_patch.fennec @@ -19,9 +19,7 @@ config { vertical_range = 5 xz_radius { type = "uniform" - value { - max_inclusive = 6 - min_inclusive = 2 - } + max_inclusive = 6 + min_inclusive = 2 } } diff --git a/fabric/build.gradle b/fabric/build.gradle index c4e0f41b..ff4891f8 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -5,7 +5,7 @@ plugins { archivesBaseName = project.archives_base_name version = rootProject.version + "-fabric" -def test_compat = true +def test_compat = false repositories { maven { diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java index 62a84a96..c1236fbe 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java @@ -1,18 +1,12 @@ package dev.sweetberry.wwizardry.fabric; -import dev.onyxstudios.cca.api.v3.component.ComponentKey; import dev.sweetberry.wwizardry.WanderingWizardry; -import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.component.Component; -import dev.sweetberry.wwizardry.api.net.ModdedPacketPayload; import dev.sweetberry.wwizardry.api.net.PacketRegistry; import dev.sweetberry.wwizardry.fabric.compat.cardinal.CardinalInitializer; -import dev.sweetberry.wwizardry.fabric.compat.cardinal.component.ProxyComponent; import dev.sweetberry.wwizardry.content.ContentInitializer; import dev.sweetberry.wwizardry.content.component.ComponentInitializer; -import dev.sweetberry.wwizardry.content.datagen.DatagenInitializer; import dev.sweetberry.wwizardry.content.events.UseBlockHandler; -import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.trades.TradeInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.fabricmc.api.ModInitializer; @@ -20,19 +14,15 @@ import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; import net.fabricmc.fabric.api.biome.v1.ModificationPhase; import net.fabricmc.fabric.api.event.player.UseBlockCallback; -import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.core.Registry; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.PackType; import net.minecraft.world.entity.Entity; import java.util.List; -import java.util.stream.Collectors; public class FabricInitializer implements ModInitializer { @Override @@ -44,17 +34,13 @@ public void onInitialize() { Registry.register(registry, id, item.get()); })); - PacketRegistry.SEND_TO_CLIENT.listen((player, packet) -> { - var payload = PacketByteBufs.create(); - packet.writeTo(payload); - ServerPlayNetworking.send(player, new ModdedPacketPayload()); - }); + PacketRegistry.SEND_TO_CLIENT.listen(ServerPlayNetworking::send); - PacketRegistry.registerTo((id, constructor) -> { - ServerPlayNetworking.registerGlobalReceiver(id, ((server, player, handler, buf, responseSender) -> { - var packet = constructor.create(buf); - packet.onServerReceive(server, player.serverLevel(), player); - })); + PacketRegistry.registerTo((id, codec) -> { + PayloadTypeRegistry.playC2S().register(id, codec); + ServerPlayNetworking.registerGlobalReceiver(id, (payload, context) -> { + payload.onServerReceive(context.player().server, context.player().serverLevel(), context.player()); + }); }); UseBlockCallback.EVENT.register((player, world, hand, hitResult) -> diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java index 326e4ee1..ba220905 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java @@ -17,6 +17,7 @@ import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; import net.minecraft.client.model.BoatModel; @@ -49,16 +50,12 @@ public void onInitializeClient() { ); }); - PacketRegistry.SEND_TO_SERVER.listen(packet -> { - var payload = PacketByteBufs.create(); - packet.writeTo(payload); - ClientPlayNetworking.send(packet.getId(), payload); - }); - PacketRegistry.registerTo((id, constructor) -> { - ClientPlayNetworking.registerGlobalReceiver(id, ((client, handler, buf, responseSender) -> { - var packet = constructor.create(buf); - packet.onClientReceive(client, client.level, client.player); - })); + PacketRegistry.SEND_TO_SERVER.listen(ClientPlayNetworking::send); + PacketRegistry.registerTo((id, codec) -> { + PayloadTypeRegistry.playS2C().register(id, codec); + ClientPlayNetworking.registerGlobalReceiver(id, (packet, context) -> { + packet.onClientReceive(context.client(), context.client().level, context.player()); + }); }); ClientEvents.registerModelLayers((id, layer) -> EntityModelLayerRegistry.registerModelLayer(id, layer::get)); @@ -70,9 +67,9 @@ public void onInitializeClient() { ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(new FabricPackReloader()); - ItemTooltipCallback.EVENT.register((stack, context, lines) + ItemTooltipCallback.EVENT.register((stack, context, type, lines) -> ItemTooltipHandler.addTooltips( - stack, context, lines::addAll + stack, type, lines::addAll ) ); } diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java index 9535664d..3e97e6ed 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java @@ -1,6 +1,7 @@ package dev.sweetberry.wwizardry.fabric.compat.cardinal.component; import dev.sweetberry.wwizardry.api.component.Component; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import org.ladysnake.cca.api.v3.component.sync.AutoSyncedComponent; @@ -12,12 +13,12 @@ public ProxyComponent(T base) { } @Override - public void readFromNbt(CompoundTag tag) { - baseComponent.fromNbt(tag); + public void readFromNbt(CompoundTag tag, HolderLookup.Provider lookup) { + baseComponent.fromNbt(tag, lookup); } @Override - public void writeToNbt(CompoundTag tag) { - baseComponent.toNbt(tag); + public void writeToNbt(CompoundTag tag, HolderLookup.Provider lookup) { + baseComponent.toNbt(tag, lookup); } } diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 5877a9f2..cac243fc 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -47,7 +47,7 @@ "depends": { "fabricloader": "*", "fabric-api": "*", - "minecraft": ">=1.20.3 <=1.20.4" + "minecraft": ">=1.20.5 <1.21" }, "custom": { "cardinal-components": [ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0f7f3b24..59506064 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,10 +7,10 @@ neoforge = "20.5.0-beta" mixin = "0.8.5" mixin_extras = "0.3.5" -fabric_api = "0.97.6+1.20.5" +fabric_api = "0.97.7+1.20.5" terrablender = "1.20.5-3.4.0.2" -ccapi = "6.0.0-beta.1" +ccapi = "6.0.0-beta.2" emi = "1.1.0+1.20.4" modmenu = "10.0.0-beta.1" diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java index c9785b2c..9b5130c2 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java @@ -14,6 +14,7 @@ import net.minecraft.network.chat.FormattedText; import net.minecraft.server.packs.resources.ResourceManagerReloadListener; import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.TooltipFlag; @@ -54,10 +55,10 @@ public static void onTooltip(RenderTooltipEvent.GatherComponents event) { var lines = event.getTooltipElements(); ItemTooltipHandler.addTooltips( - event.getItemStack(), TooltipFlag.NORMAL, (i, c) - -> lines.addAll( - i, - (Collection>) (Object) + event.getItemStack(), + TooltipFlag.NORMAL, + (i, c) -> lines.addAll(i, + (Collection>) c.stream().map(Either::left).toList() ) ); @@ -71,7 +72,7 @@ public static void onClientTick(TickEvent.ClientTickEvent event) { for (var entity : addedEntities) { NeoForgeComponents.COMPONENTS.forEach((key, it) -> { var data = entity.getData(it); - PacketDistributor.SERVER.noArg().send(new ComponentSyncPayload(entity, key, data.component)); + PacketDistributor.sendToServer(new ComponentSyncPayload(entity, key, data.component)); }); } addedEntities.clear(); @@ -88,6 +89,6 @@ public static void onUseOnBlock(UseItemOnBlockEvent event) { ); if (result == InteractionResult.PASS) return; - event.cancelWithResult(result); + event.cancelWithResult(ItemInteractionResult.FAIL); } } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java index 79f12865..ccbae433 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java @@ -1,6 +1,7 @@ package dev.sweetberry.wwizardry.neoforge.component; import dev.sweetberry.wwizardry.api.component.Component; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.neoforged.neoforge.common.util.INBTSerializable; @@ -13,15 +14,15 @@ public ProxyComponent(T component) { } @Override - public Tag serializeNBT() { + public Tag serializeNBT(HolderLookup.Provider provider) { var tag = new CompoundTag(); - component.toNbt(tag); + component.toNbt(tag, provider); return tag; } @Override - public void deserializeNBT(Tag nbt) { + public void deserializeNBT(HolderLookup.Provider provider, Tag nbt) { if (nbt instanceof CompoundTag tag) - component.fromNbt(tag); + component.fromNbt(tag, provider); } } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ComponentSyncPayload.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ComponentSyncPayload.java index af372533..1ce0cc24 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ComponentSyncPayload.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ComponentSyncPayload.java @@ -3,25 +3,22 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.component.Component; import dev.sweetberry.wwizardry.content.component.ComponentInitializer; -import dev.sweetberry.wwizardry.neoforge.NeoForgeEvents; -import dev.sweetberry.wwizardry.neoforge.component.NeoForgeComponents; -import dev.sweetberry.wwizardry.neoforge.component.ProxyComponent; -import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.vehicle.Boat; import net.neoforged.neoforge.network.PacketDistributor; -import net.neoforged.neoforge.network.handling.PlayPayloadContext; - -import java.util.HashMap; -import java.util.Map; public class ComponentSyncPayload implements CustomPacketPayload { public static final ResourceLocation ID = WanderingWizardry.id("sync"); + public static final Type TYPE = new Type<>(ID); + public static final StreamCodec CODEC = StreamCodec.of( + ComponentSyncPayload::writeTo, ComponentSyncPayload::new + ); private int entityId; private ResourceLocation id; private CompoundTag component; @@ -30,7 +27,7 @@ public ComponentSyncPayload(Entity entity, ResourceLocation id, Component compon entityId = entity.getId(); this.id = id; var tag = new CompoundTag(); - component.toNbt(tag); + component.toNbt(tag, entity.level().registryAccess()); this.component = tag; } @@ -40,34 +37,33 @@ public ComponentSyncPayload(FriendlyByteBuf buf) { component = buf.readNbt(); } - @Override - public void write(FriendlyByteBuf buf) { - buf.writeInt(entityId); - buf.writeResourceLocation(id); - buf.writeNbt(component); - } - - @Override - public ResourceLocation id() { - return ID; + public static void writeTo(FriendlyByteBuf buf, ComponentSyncPayload packet) { + buf.writeInt(packet.entityId); + buf.writeResourceLocation(packet.id); + buf.writeNbt(packet.component); } - public static void onClientReceive(ComponentSyncPayload payload, PlayPayloadContext context) { - var entity = Minecraft.getInstance().level.getEntity(payload.entityId); + public static void onClientReceive(ComponentSyncPayload payload, ClientLevel level) { + var entity = level.getEntity(payload.entityId); if (entity == null) return; WanderingWizardry.LOGGER.info("client: " + payload.entityId + " " + entity); var component = ComponentInitializer.getComponent(payload.id, entity); - component.fromNbt(payload.component); + component.fromNbt(payload.component, level.registryAccess()); } - public static void onServerReceive(ComponentSyncPayload payload, PlayPayloadContext context) { - var entity = context.player().get().level().getEntity(payload.entityId); + public static void onServerReceive(ComponentSyncPayload payload, ServerPlayer player) { + var entity = player.serverLevel().getEntity(payload.entityId); if (entity == null) return; WanderingWizardry.LOGGER.info("server: " + payload.entityId + " " + entity); var componenet = ComponentInitializer.getComponent(payload.id, entity); var out = new ComponentSyncPayload(entity, payload.id, componenet); - PacketDistributor.PLAYER.with((ServerPlayer) context.player().get()).send(out); + PacketDistributor.sendToPlayer(player, out); + } + + @Override + public Type type() { + return TYPE; } } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ModdedPacketPayload.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ModdedPacketPayload.java deleted file mode 100644 index fd2d8cdb..00000000 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ModdedPacketPayload.java +++ /dev/null @@ -1,52 +0,0 @@ -package dev.sweetberry.wwizardry.neoforge.networking; - -import dev.sweetberry.wwizardry.WanderingWizardry; -import dev.sweetberry.wwizardry.api.net.CustomPacket; -import dev.sweetberry.wwizardry.api.net.PacketConstructor; -import net.minecraft.client.Minecraft; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; -import net.neoforged.neoforge.network.handling.PlayPayloadContext; - -import java.util.HashMap; -import java.util.Map; - -public class ModdedPacketPayload implements CustomPacketPayload { - public static Map> PACKETS = new HashMap<>(); - - public static final ResourceLocation ID = WanderingWizardry.id("packet"); - - public CustomPacket packet; - - public ModdedPacketPayload(FriendlyByteBuf buf) { - var id = buf.readResourceLocation(); - packet = PACKETS.get(id).create(buf); - } - - public ModdedPacketPayload(CustomPacket packet) { - this.packet = packet; - } - - @Override - public void write(FriendlyByteBuf buf) { - buf.writeResourceLocation(packet.getId()); - packet.writeTo(buf); - } - - @Override - public ResourceLocation id() { - return ID; - } - - public static void onClientReceive(ModdedPacketPayload payload, PlayPayloadContext context) { - var minecraft = Minecraft.getInstance(); - payload.packet.onClientReceive(Minecraft.getInstance(), minecraft.level, minecraft.player); - } - - public static void onServerReceive(ModdedPacketPayload payload, PlayPayloadContext context) { - var player = (ServerPlayer) context.player().get(); - payload.packet.onServerReceive(player.server, player.serverLevel(), player); - } -} diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/NeoForgeNetworking.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/NeoForgeNetworking.java index 90c341b2..933c5177 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/NeoForgeNetworking.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/NeoForgeNetworking.java @@ -1,26 +1,14 @@ package dev.sweetberry.wwizardry.neoforge.networking; import dev.sweetberry.wwizardry.WanderingWizardry; -import dev.sweetberry.wwizardry.api.net.CustomPacket; -import dev.sweetberry.wwizardry.api.net.PacketConstructor; import dev.sweetberry.wwizardry.api.net.PacketRegistry; -import dev.sweetberry.wwizardry.content.net.NetworkingInitializer; import net.minecraft.client.Minecraft; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.neoforge.network.PacketDistributor; -import net.neoforged.neoforge.network.event.RegisterPayloadHandlerEvent; -import net.neoforged.neoforge.network.handlers.ClientPayloadHandler; -import net.neoforged.neoforge.network.handling.PlayPayloadContext; -import net.neoforged.neoforge.network.registration.IPayloadRegistrar; - -import java.util.HashMap; -import java.util.Map; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; +import net.neoforged.neoforge.network.handling.ClientPayloadContext; public class NeoForgeNetworking { @@ -29,34 +17,36 @@ public static void init(IEventBus bus) { } @SubscribeEvent - public static void register(RegisterPayloadHandlerEvent event) { - PacketRegistry.registerTo((id, constructor) -> { - ModdedPacketPayload.PACKETS.put(id, constructor); + public static void register(RegisterPayloadHandlersEvent event) { + var registrar = event.registrar(WanderingWizardry.MODID); + + PacketRegistry.registerTo((id, codec) -> { + registrar.playBidirectional(id, codec, (packet, context) -> { + if (context instanceof ClientPayloadContext) { + var client = Minecraft.getInstance(); + packet.onClientReceive(Minecraft.getInstance(), client.level, client.player); + } else { + var player = (ServerPlayer) context.player(); + packet.onServerReceive(player.server, player.serverLevel(), player); + } + }); }); - IPayloadRegistrar registrar = event.registrar(WanderingWizardry.MODID); - registrar.play( - ModdedPacketPayload.ID, - ModdedPacketPayload::new, - handler -> handler - .client(ModdedPacketPayload::onClientReceive) - .server(ModdedPacketPayload::onServerReceive) + registrar.playBidirectional( + ComponentSyncPayload.TYPE, + ComponentSyncPayload.CODEC, + (packet, context) -> { + if (context instanceof ClientPayloadContext) { + var client = Minecraft.getInstance(); + ComponentSyncPayload.onClientReceive(packet, client.level); + } else { + ComponentSyncPayload.onServerReceive(packet, (ServerPlayer) context.player()); + } + } ); - registrar.play( - ComponentSyncPayload.ID, - ComponentSyncPayload::new, - handler -> handler - .client(ComponentSyncPayload::onClientReceive) - .server(ComponentSyncPayload::onServerReceive) - ); + PacketRegistry.SEND_TO_SERVER.listen(PacketDistributor::sendToServer); - PacketRegistry.SEND_TO_SERVER.listen(customPacket -> { - PacketDistributor.SERVER.noArg().send(new ModdedPacketPayload(customPacket)); - }); - - PacketRegistry.SEND_TO_CLIENT.listen((player, customPacket) -> { - PacketDistributor.PLAYER.with(player).send(new ModdedPacketPayload(customPacket)); - }); + PacketRegistry.SEND_TO_CLIENT.listen(PacketDistributor::sendToPlayer); } } diff --git a/neoforge/src/main/resources/accesstransformer.cfg b/neoforge/src/main/resources/accesstransformer.cfg index 4e5a69f2..32285052 100644 --- a/neoforge/src/main/resources/accesstransformer.cfg +++ b/neoforge/src/main/resources/accesstransformer.cfg @@ -2,9 +2,6 @@ public net.minecraft.world.level.block.entity.BlockEntityType$BlockEntitySupplie public net.minecraft.world.item.alchemy.PotionBrewing$Mix public net.minecraft.world.entity.npc.VillagerTrades$ItemsForEmeralds -public-f net.minecraft.world.item.alchemy.PotionBrewing f_43496_ -public-f net.minecraft.world.item.alchemy.PotionBrewing f_43494_ - public net.minecraft.world.level.block.StairBlock (Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V public net.minecraft.world.level.block.IronBarsBlock (Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V public net.minecraft.world.level.block.TransparentBlock (Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V @@ -15,7 +12,11 @@ public net.minecraft.world.level.block.DoorBlock (Lnet/minecraft/world/lev public net.minecraft.world.level.block.TrapDoorBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V public net.minecraft.world.level.block.SaplingBlock (Lnet/minecraft/world/level/block/grower/TreeGrower;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V -public net.minecraft.client.renderer.item.ItemProperties m_174570_(Lnet/minecraft/world/item/Item;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/renderer/item/ClampedItemPropertyFunction;)V -public net.minecraft.client.renderer.blockentity.BlockEntityRenderers m_173590_(Lnet/minecraft/world/level/block/entity/BlockEntityType;Lnet/minecraft/client/renderer/blockentity/BlockEntityRendererProvider;)V -public net.minecraft.server.level.PlayerRespawnLogic m_183928_(Lnet/minecraft/server/level/ServerLevel;II)Lnet/minecraft/core/BlockPos; -public net.minecraft.world.item.Item m_41469_()Lnet/minecraft/world/item/Item; \ No newline at end of file +public +public +public +public +public +public +public +public \ No newline at end of file diff --git a/scripts/command/aw_to_at.ts b/scripts/command/aw_to_at.ts index 398753e9..f9d8f4f8 100644 --- a/scripts/command/aw_to_at.ts +++ b/scripts/command/aw_to_at.ts @@ -19,29 +19,34 @@ export default async function awToAt(inputDir: string, outputDir: string, versio let str = `public${line[1] == "field" ? "-f" : ""} ` const prefix = line[2].replaceAll("/", ".") let add = "" - switch (line[1]) { - case "class": - str += prefix - break; - case "method": - add += line[4]; - // Falls through - case "field": { - let name = line[3] + try { + switch (line[1]) { + case "class": + str += prefix + break; + case "method": + add += line[4]; + // Falls through + case "field": { + let name = line[3] - if (line[3] != "") { - const query = url + "&query=" + line[3]; - console.log(query) - const data = (await (await fetch(query)).json()).entries.filter((it: any) => it.c == line[2])[0] - if (!data) - break - name = data.i; - if (!name) - break - } + if (line[3] != "") { + const query = url + "&query=" + line[3]; + console.log(query) + const json = await (await fetch(query)).json(); + const data = json.entries.filter((it: any) => it.c == line[2])[0] + if (!data) + break + name = data.i; + if (!name) + break + } - str += `${prefix} ${name}${add}` + str += `${prefix} ${name}${add}` + } } + } catch (e) { + console.log(e) } out += str } diff --git a/settings.gradle b/settings.gradle index 44071b36..1370aecb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -18,4 +18,4 @@ pluginManagement { include "common" include "fabric" -include "neoforge" +//include "neoforge" From 3373ec39ba149dd72585a90543de07f1a41cc86d Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sun, 28 Apr 2024 15:44:53 -0500 Subject: [PATCH 12/46] Fix up everything --- .../wwizardry/recipes/altar_catalyzer.json | 2 +- .../wwizardry/recipes/altar_pedestal.json | 2 +- .../basalt_bricks/basalt_crafted/block.json | 2 +- .../basalt_bricks/basalt_cut/block.json | 2 +- .../basalt_bricks/basalt_cut/slab.json | 2 +- .../basalt_bricks/basalt_cut/stairs.json | 2 +- .../basalt_bricks/basalt_cut/wall.json | 2 +- .../basalt_bricks/self_crafted/slab.json | 2 +- .../basalt_bricks/self_crafted/stiars.json | 2 +- .../basalt_bricks/self_crafted/wall.json | 2 +- .../recipes/basalt_bricks/self_cut/slab.json | 2 +- .../basalt_bricks/self_cut/stairs.json | 2 +- .../recipes/basalt_bricks/self_cut/wall.json | 2 +- .../basalt_tiles/basalt_cut/block.json | 2 +- .../recipes/basalt_tiles/basalt_cut/slab.json | 2 +- .../basalt_tiles/basalt_cut/stairs.json | 2 +- .../recipes/basalt_tiles/basalt_cut/wall.json | 2 +- .../basalt_tiles/brick_crafted/block.json | 2 +- .../recipes/basalt_tiles/brick_cut/block.json | 2 +- .../recipes/basalt_tiles/brick_cut/slab.json | 2 +- .../basalt_tiles/brick_cut/stairs.json | 2 +- .../recipes/basalt_tiles/brick_cut/wall.json | 2 +- .../basalt_tiles/self_crafted/slab.json | 2 +- .../basalt_tiles/self_crafted/stiars.json | 2 +- .../basalt_tiles/self_crafted/wall.json | 2 +- .../recipes/basalt_tiles/self_cut/slab.json | 2 +- .../recipes/basalt_tiles/self_cut/stairs.json | 2 +- .../recipes/basalt_tiles/self_cut/wall.json | 2 +- .../data/wwizardry/recipes/brewing_charm.json | 2 +- .../chiseled_basalt/basalt_cut/block.json | 2 +- .../chiseled_basalt/basalt_cut/slab.json | 2 +- .../chiseled_basalt/basalt_cut/stairs.json | 2 +- .../chiseled_basalt/basalt_cut/wall.json | 2 +- .../chiseled_basalt/brick_crafted/block.json | 2 +- .../chiseled_basalt/self_crafted/slab.json | 2 +- .../chiseled_basalt/self_crafted/stiars.json | 2 +- .../chiseled_basalt/self_crafted/wall.json | 2 +- .../chiseled_basalt/self_cut/slab.json | 2 +- .../chiseled_basalt/self_cut/stairs.json | 2 +- .../chiseled_basalt/self_cut/wall.json | 2 +- .../wwizardry/recipes/crafting_charm.json | 2 +- .../wwizardry/recipes/crystalline_sculk.json | 2 +- .../recipes/crystalline_sculk_block.json | 2 +- .../recipes/crystalline_sculk_from_block.json | 2 +- .../cut_basalt/basalt_crafted/block.json | 2 +- .../recipes/cut_basalt/basalt_cut/block.json | 2 +- .../recipes/cut_basalt/basalt_cut/slab.json | 2 +- .../recipes/cut_basalt/basalt_cut/stairs.json | 2 +- .../recipes/cut_basalt/basalt_cut/wall.json | 2 +- .../recipes/cut_basalt/self_crafted/slab.json | 2 +- .../cut_basalt/self_crafted/stiars.json | 2 +- .../recipes/cut_basalt/self_crafted/wall.json | 2 +- .../recipes/cut_basalt/self_cut/slab.json | 2 +- .../recipes/cut_basalt/self_cut/stairs.json | 2 +- .../recipes/cut_basalt/self_cut/wall.json | 2 +- .../wwizardry/recipes/modulo_comparator.json | 2 +- .../mossy_basalt_bricks/basalt_cut/block.json | 2 +- .../mossy_basalt_bricks/basalt_cut/slab.json | 2 +- .../basalt_cut/stairs.json | 2 +- .../mossy_basalt_bricks/basalt_cut/wall.json | 2 +- .../brick_mossed/block.json | 2 +- .../self_crafted/slab.json | 2 +- .../self_crafted/stiars.json | 2 +- .../self_crafted/wall.json | 2 +- .../mossy_basalt_bricks/self_cut/slab.json | 2 +- .../mossy_basalt_bricks/self_cut/stairs.json | 2 +- .../mossy_basalt_bricks/self_cut/wall.json | 2 +- .../mossy_basalt_tiles/basalt_cut/block.json | 2 +- .../mossy_basalt_tiles/basalt_cut/slab.json | 2 +- .../mossy_basalt_tiles/basalt_cut/stairs.json | 2 +- .../mossy_basalt_tiles/basalt_cut/wall.json | 2 +- .../brick_crafted/block.json | 2 +- .../mossy_basalt_tiles/brick_cut/block.json | 2 +- .../mossy_basalt_tiles/brick_cut/slab.json | 2 +- .../mossy_basalt_tiles/brick_cut/stairs.json | 2 +- .../mossy_basalt_tiles/brick_cut/wall.json | 2 +- .../brick_mossed/block.json | 2 +- .../mossy_basalt_tiles/self_crafted/slab.json | 2 +- .../self_crafted/stiars.json | 2 +- .../mossy_basalt_tiles/self_crafted/wall.json | 2 +- .../mossy_basalt_tiles/self_cut/slab.json | 2 +- .../mossy_basalt_tiles/self_cut/stairs.json | 2 +- .../mossy_basalt_tiles/self_cut/wall.json | 2 +- .../basalt_cut/block.json | 2 +- .../basalt_cut/slab.json | 2 +- .../basalt_cut/stairs.json | 2 +- .../basalt_cut/wall.json | 2 +- .../brick_crafted/block.json | 2 +- .../brick_mossed/block.json | 2 +- .../self_crafted/slab.json | 2 +- .../self_crafted/stiars.json | 2 +- .../self_crafted/wall.json | 2 +- .../mossy_chiseled_basalt/self_cut/slab.json | 2 +- .../self_cut/stairs.json | 2 +- .../mossy_chiseled_basalt/self_cut/wall.json | 2 +- .../mossy_cut_basalt/cut_mossed/block.json | 2 +- .../mossy_cut_basalt/self_crafted/slab.json | 2 +- .../mossy_cut_basalt/self_crafted/stiars.json | 2 +- .../mossy_cut_basalt/self_crafted/wall.json | 2 +- .../mossy_cut_basalt/self_cut/slab.json | 2 +- .../mossy_cut_basalt/self_cut/stairs.json | 2 +- .../mossy_cut_basalt/self_cut/wall.json | 2 +- .../wwizardry/recipes/redstone_stepper.json | 2 +- .../wwizardry/recipes/reinforced_glass.json | 2 +- .../recipes/reinforced_glass_pane.json | 2 +- .../wwizardry/recipes/rose_quartz_block.json | 2 +- .../rose_quartz_from_blasting_ore.json | 2 +- .../recipes/rose_quartz_from_block.json | 2 +- .../rose_quartz_from_smelting_ore.json | 2 +- .../wwizardry/recipes/sculk_resonator.json | 2 +- .../data/wwizardry/recipes/slot_charm.json | 2 +- .../data/wwizardry/recipes/soul_mirror.json | 2 +- .../data/wwizardry/recipes/void_bag.json | 2 +- .../wwizardry/recipes/wood/denia/boat.json | 2 +- .../wwizardry/recipes/wood/denia/button.json | 2 +- .../recipes/wood/denia/chest_boat.json | 2 +- .../wwizardry/recipes/wood/denia/door.json | 2 +- .../wwizardry/recipes/wood/denia/fence.json | 2 +- .../recipes/wood/denia/fence_gate.json | 2 +- .../wwizardry/recipes/wood/denia/planks.json | 2 +- .../recipes/wood/denia/pressure_plate.json | 2 +- .../wwizardry/recipes/wood/denia/sign.json | 2 +- .../wwizardry/recipes/wood/denia/slab.json | 2 +- .../wwizardry/recipes/wood/denia/stairs.json | 2 +- .../recipes/wood/denia/stripped_wood.json | 2 +- .../recipes/wood/denia/trapdoor.json | 2 +- .../wwizardry/recipes/wood/denia/wood.json | 2 +- .../wwizardry/recipes/wood/mycha/button.json | 2 +- .../wwizardry/recipes/wood/mycha/door.json | 2 +- .../wwizardry/recipes/wood/mycha/fence.json | 2 +- .../recipes/wood/mycha/fence_gate.json | 2 +- .../wwizardry/recipes/wood/mycha/hyphae.json | 2 +- .../wwizardry/recipes/wood/mycha/planks.json | 2 +- .../recipes/wood/mycha/pressure_plate.json | 2 +- .../wwizardry/recipes/wood/mycha/sign.json | 2 +- .../wwizardry/recipes/wood/mycha/slab.json | 2 +- .../wwizardry/recipes/wood/mycha/stairs.json | 2 +- .../recipes/wood/mycha/stripped_hyphae.json | 2 +- .../recipes/wood/mycha/trapdoor.json | 2 +- .../blockentity/AltarBlockEntityRenderer.java | 1 - .../wwizardry/content/ContentInitializer.java | 3 ++ .../content/block/BlockInitializer.java | 2 +- ...andleBlock.java => CandleSconceBlock.java} | 5 +-- ...{WallHolderBlock.java => SconceBlock.java} | 39 +++++++++++-------- .../block/entity/AltarBlockEntity.java | 37 ++++++++++-------- .../content/datagen/WallHolderBlockType.java | 8 ++-- .../AltarCatalyzationRecipeSerializer.java | 2 +- .../wwizardry/mixin/Mixin_MappedRegistry.java | 38 ++++++++++++++++++ .../adventure/forgotten_fields.json | 2 +- .../advancements/adventure/sculk_lab.json | 3 +- .../src/main/resources/wwizardry.mixins.json | 1 + data/recipes/altar_catalyzer.fennec | 2 +- data/recipes/altar_pedestal.fennec | 2 +- data/recipes/brewing_charm.fennec | 2 +- data/recipes/crafting_charm.fennec | 2 +- data/recipes/crystalline_sculk.fennec | 2 +- data/recipes/crystalline_sculk_block.fennec | 2 +- .../crystalline_sculk_from_block.fennec | 2 +- data/recipes/modulo_comparator.fennec | 2 +- data/recipes/redstone_stepper.fennec | 2 +- data/recipes/reinforced_glass.fennec | 2 +- data/recipes/reinforced_glass_pane.fennec | 2 +- data/recipes/rose_quartz_block.fennec | 2 +- .../rose_quartz_from_blasting_ore.fennec | 4 +- data/recipes/rose_quartz_from_block.fennec | 2 +- .../rose_quartz_from_smelting_ore.fennec | 4 +- data/recipes/sculk_resonator.fennec | 2 +- data/recipes/slot_charm.fennec | 2 +- data/recipes/soul_mirror.fennec | 2 +- data/recipes/void_bag.fennec | 2 +- data/recipes/wood/denia/boat.fennec | 4 +- data/recipes/wood/denia/button.fennec | 4 +- data/recipes/wood/denia/chest_boat.fennec | 4 +- data/recipes/wood/denia/door.fennec | 2 +- data/recipes/wood/denia/fence.fennec | 2 +- data/recipes/wood/denia/fence_gate.fennec | 4 +- data/recipes/wood/denia/planks.fennec | 2 +- data/recipes/wood/denia/pressure_plate.fennec | 4 +- data/recipes/wood/denia/sign.fennec | 2 +- data/recipes/wood/denia/slab.fennec | 2 +- data/recipes/wood/denia/stairs.fennec | 2 +- data/recipes/wood/denia/stripped_wood.fennec | 2 +- data/recipes/wood/denia/trapdoor.fennec | 2 +- data/recipes/wood/denia/wood.fennec | 2 +- data/recipes/wood/mycha/button.fennec | 4 +- data/recipes/wood/mycha/door.fennec | 2 +- data/recipes/wood/mycha/fence.fennec | 2 +- data/recipes/wood/mycha/fence_gate.fennec | 4 +- data/recipes/wood/mycha/hyphae.fennec | 2 +- data/recipes/wood/mycha/planks.fennec | 2 +- data/recipes/wood/mycha/pressure_plate.fennec | 4 +- data/recipes/wood/mycha/sign.fennec | 2 +- data/recipes/wood/mycha/slab.fennec | 2 +- data/recipes/wood/mycha/stairs.fennec | 2 +- .../recipes/wood/mycha/stripped_hyphae.fennec | 2 +- data/recipes/wood/mycha/trapdoor.fennec | 2 +- gradle/libs.versions.toml | 2 +- scripts/command/brick.ts | 25 ++++++------ 198 files changed, 313 insertions(+), 243 deletions(-) rename common/src/main/java/dev/sweetberry/wwizardry/content/block/{WallCandleBlock.java => CandleSconceBlock.java} (96%) rename common/src/main/java/dev/sweetberry/wwizardry/content/block/{WallHolderBlock.java => SconceBlock.java} (86%) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_MappedRegistry.java diff --git a/common/src/generated/resources/data/wwizardry/recipes/altar_catalyzer.json b/common/src/generated/resources/data/wwizardry/recipes/altar_catalyzer.json index 59c7c4cf..52c0cb2c 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/altar_catalyzer.json +++ b/common/src/generated/resources/data/wwizardry/recipes/altar_catalyzer.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"polished_basalt"},"M":{"item":"sculk_catalyst"}},"pattern":["#","M","#"],"result":{"count":1,"item":"wwizardry:altar_catalyzer"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"polished_basalt"},"M":{"item":"sculk_catalyst"}},"pattern":["#","M","#"],"result":{"count":1,"id":"wwizardry:altar_catalyzer"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/altar_pedestal.json b/common/src/generated/resources/data/wwizardry/recipes/altar_pedestal.json index abdeb24a..8fba95cf 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/altar_pedestal.json +++ b/common/src/generated/resources/data/wwizardry/recipes/altar_pedestal.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"polished_basalt"},"M":{"item":"crying_obsidian"}},"pattern":["#","M","#"],"result":{"count":1,"item":"wwizardry:altar_pedestal"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"polished_basalt"},"M":{"item":"crying_obsidian"}},"pattern":["#","M","#"],"result":{"count":1,"id":"wwizardry:altar_pedestal"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_crafted/block.json index 18873a97..21c60805 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_crafted/block.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["##","##"],"result":{"item":"wwizardry:basalt_bricks","count":4}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["##","##"],"result":{"id":"wwizardry:basalt_bricks","count":4}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/block.json index ef50756a..af85b6b6 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/block.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:basalt_bricks"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_bricks"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/slab.json index 86a411fc..292ead6f 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:basalt_brick_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_brick_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/stairs.json index de8aba9d..11a0533b 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:basalt_brick_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_brick_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/wall.json index df12b2cf..b8cdad8c 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:basalt_brick_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_brick_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/slab.json index 06b9f96c..a8eadf81 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:basalt_brick_slab"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:basalt_brick_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/stiars.json index 3b21dc3d..21368260 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/stiars.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:basalt_brick_stairs"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:basalt_brick_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/wall.json index 40e7ac54..3ad655d6 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/wall.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["###","###"],"result":{"count":6,"item":"wwizardry:basalt_brick_wall"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:basalt_brick_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/slab.json index bbe6cd34..80b4be91 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":"wwizardry:basalt_brick_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_brick_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/stairs.json index 84ec5839..62fadf48 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":"wwizardry:basalt_brick_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_brick_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/wall.json index 26bc28db..8018dcf5 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":"wwizardry:basalt_brick_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_brick_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/block.json index 11d046de..9c294aa9 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/block.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:basalt_tiles"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_tiles"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/slab.json index a8a1ffeb..0dd15248 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:basalt_tile_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_tile_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/stairs.json index 85aa08fe..54b34653 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:basalt_tile_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_tile_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/wall.json index bf61666c..3c863aaa 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:basalt_tile_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_tile_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_crafted/block.json index 92d2eef9..c851644b 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_crafted/block.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["##","##"],"result":{"item":"wwizardry:basalt_tiles","count":4}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["##","##"],"result":{"id":"wwizardry:basalt_tiles","count":4}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/block.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/block.json index adc8fda1..93e67386 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/block.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":"wwizardry:basalt_tiles"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_tiles"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/slab.json index 233eb51b..45677120 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":"wwizardry:basalt_tile_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_tile_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/stairs.json index dce90108..16b420f6 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":"wwizardry:basalt_tile_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_tile_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/wall.json index b24f6e6c..83fb66a1 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":"wwizardry:basalt_tile_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_tile_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/slab.json index 1e087d96..af13169e 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_tiles"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:basalt_tile_slab"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_tiles"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:basalt_tile_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/stiars.json index 4d59dec7..73167fe9 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/stiars.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_tiles"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:basalt_tile_stairs"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_tiles"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:basalt_tile_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/wall.json index 4accbbff..91fa2a39 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/wall.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_tiles"}},"pattern":["###","###"],"result":{"count":6,"item":"wwizardry:basalt_tile_wall"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_tiles"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:basalt_tile_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/slab.json index c114dd18..3bfc990c 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:basalt_tiles"},"result":"wwizardry:basalt_tile_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:basalt_tiles"},"result":{"id":"wwizardry:basalt_tile_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/stairs.json index bed31c65..638312cb 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_tiles"},"result":"wwizardry:basalt_tile_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_tiles"},"result":{"id":"wwizardry:basalt_tile_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/wall.json index ce5a839f..acd4e5ad 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_tiles"},"result":"wwizardry:basalt_tile_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_tiles"},"result":{"id":"wwizardry:basalt_tile_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/brewing_charm.json b/common/src/generated/resources/data/wwizardry/recipes/brewing_charm.json index ff69b777..8dee9dd3 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/brewing_charm.json +++ b/common/src/generated/resources/data/wwizardry/recipes/brewing_charm.json @@ -1 +1 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":5,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"blaze_powder"},{"item":"blaze_powder"}],"catalyst":{"item":"brewing_stand"},"result":{"item":"wwizardry:brewing_charm"}} \ No newline at end of file +{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":5,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"blaze_powder"},{"item":"blaze_powder"}],"catalyst":{"item":"brewing_stand"},"result":{"id":"wwizardry:brewing_charm"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/block.json index c9c3b097..a1580200 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/block.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:chiseled_basalt"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:chiseled_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/slab.json index a1c4119d..562a8f1d 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:chiseled_basalt_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:chiseled_basalt_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/stairs.json index a28470c0..4f56fc96 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:chiseled_basalt_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:chiseled_basalt_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/wall.json index 5afb69f2..a63fb396 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:chiseled_basalt_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:chiseled_basalt_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/brick_crafted/block.json index 602eab9b..a0041877 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/brick_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/brick_crafted/block.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt_slab"}},"pattern":["#","#"],"result":{"item":"wwizardry:chiseled_basalt","count":1}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt_slab"}},"pattern":["#","#"],"result":{"id":"wwizardry:chiseled_basalt","count":1}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/slab.json index adbb1ee8..e5bef202 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:chiseled_basalt"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:chiseled_basalt_slab"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:chiseled_basalt"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:chiseled_basalt_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/stiars.json index 5dc9b249..4932d92e 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/stiars.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:chiseled_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:chiseled_basalt_stairs"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:chiseled_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:chiseled_basalt_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/wall.json index 505c2342..40831ccf 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/wall.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:chiseled_basalt"}},"pattern":["###","###"],"result":{"count":6,"item":"wwizardry:chiseled_basalt_wall"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:chiseled_basalt"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:chiseled_basalt_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/slab.json index f815b9cb..64e6e67a 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:chiseled_basalt"},"result":"wwizardry:chiseled_basalt_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:chiseled_basalt"},"result":{"id":"wwizardry:chiseled_basalt_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/stairs.json index b15dae92..df2fa286 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:chiseled_basalt"},"result":"wwizardry:chiseled_basalt_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:chiseled_basalt"},"result":{"id":"wwizardry:chiseled_basalt_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/wall.json index 3223027c..6466f5e3 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:chiseled_basalt"},"result":"wwizardry:chiseled_basalt_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:chiseled_basalt"},"result":{"id":"wwizardry:chiseled_basalt_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/crafting_charm.json b/common/src/generated/resources/data/wwizardry/recipes/crafting_charm.json index 077dc2f9..10cb6af7 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/crafting_charm.json +++ b/common/src/generated/resources/data/wwizardry/recipes/crafting_charm.json @@ -1 +1 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":5,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"blaze_powder"},{"item":"blaze_powder"}],"catalyst":{"item":"crafting_table"},"result":{"item":"wwizardry:crafting_charm"}} \ No newline at end of file +{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":5,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"blaze_powder"},{"item":"blaze_powder"}],"catalyst":{"item":"crafting_table"},"result":{"id":"wwizardry:crafting_charm"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk.json b/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk.json index 9739e06b..35570eb3 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk.json +++ b/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk.json @@ -1 +1 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":10,"inputs":[{"item":"sculk"},{"item":"redstone"},{"item":"crying_obsidian"},{"item":"lapis_lazuli"}],"catalyst":{"item":"amethyst_shard"},"result":{"count":16,"item":"wwizardry:crystalline_sculk"}} \ No newline at end of file +{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":10,"inputs":[{"item":"sculk"},{"item":"redstone"},{"item":"crying_obsidian"},{"item":"lapis_lazuli"}],"catalyst":{"item":"amethyst_shard"},"result":{"count":16,"id":"wwizardry:crystalline_sculk"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_block.json b/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_block.json index b11a2761..fb6f731d 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_block.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"S":{"item":"wwizardry:crystalline_sculk"}},"pattern":["SSS","SSS","SSS"],"result":{"count":1,"item":"wwizardry:crystalline_sculk_block"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"S":{"item":"wwizardry:crystalline_sculk"}},"pattern":["SSS","SSS","SSS"],"result":{"count":1,"id":"wwizardry:crystalline_sculk_block"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_from_block.json b/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_from_block.json index 8e454d84..ec9f2a60 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_from_block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_from_block.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"misc","ingredients":[{"item":"wwizardry:crystalline_sculk_block"}],"result":{"count":9,"item":"wwizardry:crystalline_sculk"}} \ No newline at end of file +{"type":"crafting_shapeless","category":"misc","ingredients":[{"item":"wwizardry:crystalline_sculk_block"}],"result":{"count":9,"id":"wwizardry:crystalline_sculk"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_crafted/block.json index 61132b92..deb3e9c2 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_crafted/block.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"smooth_basalt"}},"pattern":["##","##"],"result":{"item":"wwizardry:cut_basalt","count":4}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"smooth_basalt"}},"pattern":["##","##"],"result":{"id":"wwizardry:cut_basalt","count":4}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/block.json index 01ab15e1..39a7a321 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/block.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"smooth_basalt"},"result":"wwizardry:cut_basalt"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"smooth_basalt"},"result":{"id":"wwizardry:cut_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/slab.json index 3e1db910..59676a9b 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"smooth_basalt"},"result":"wwizardry:cut_basalt_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"smooth_basalt"},"result":{"id":"wwizardry:cut_basalt_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/stairs.json index d1b361e7..e9b80291 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"smooth_basalt"},"result":"wwizardry:cut_basalt_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"smooth_basalt"},"result":{"id":"wwizardry:cut_basalt_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/wall.json index 11e092f4..a171c4c5 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"smooth_basalt"},"result":"wwizardry:cut_basalt_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"smooth_basalt"},"result":{"id":"wwizardry:cut_basalt_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/slab.json index 26554499..72bac894 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:cut_basalt_slab"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:cut_basalt_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/stiars.json index 6d7a7d98..4a28cad7 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/stiars.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:cut_basalt_stairs"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:cut_basalt_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/wall.json index 2cc0e794..724f12bd 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/wall.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["###","###"],"result":{"count":6,"item":"wwizardry:cut_basalt_wall"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:cut_basalt_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/slab.json index df0340b3..e3d0a70a 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:cut_basalt_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:cut_basalt_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/stairs.json index 45627b3c..ae290b37 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:cut_basalt_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:cut_basalt_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/wall.json index 834a950b..ab4c7232 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":"wwizardry:cut_basalt_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:cut_basalt_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/modulo_comparator.json b/common/src/generated/resources/data/wwizardry/recipes/modulo_comparator.json index c054ccd7..92473c1a 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/modulo_comparator.json +++ b/common/src/generated/resources/data/wwizardry/recipes/modulo_comparator.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","show_notification":true,"key":{"R":{"item":"redstone_torch"},"S":{"item":"stone"},"Q":{"tag":"wwizardry:rose_quartzes"}},"pattern":[" R ","RQR","SSS"],"result":{"count":1,"item":"wwizardry:modulo_comparator"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","show_notification":true,"key":{"R":{"item":"redstone_torch"},"S":{"item":"stone"},"Q":{"tag":"wwizardry:rose_quartzes"}},"pattern":[" R ","RQR","SSS"],"result":{"count":1,"id":"wwizardry:modulo_comparator"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/block.json index 4f0afe53..7991ce92 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/block.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_basalt_bricks"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_bricks"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/slab.json index 0a6ee49c..7248e50b 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_basalt_brick_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_brick_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/stairs.json index 003ef89e..805f399e 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_basalt_brick_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_brick_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/wall.json index 80cccfad..688589cf 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_basalt_brick_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_brick_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/brick_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/brick_mossed/block.json index 2077dcbf..86617020 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/brick_mossed/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/brick_mossed/block.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:basalt_bricks"},{"tag":"wwizardry:mossy_materials"}],"result":{"item":"wwizardry:mossy_basalt_bricks","count":1}} \ No newline at end of file +{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:basalt_bricks"},{"tag":"wwizardry:mossy_materials"}],"result":{"id":"wwizardry:mossy_basalt_bricks"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/slab.json index ec81c394..30a428f2 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:mossy_basalt_brick_slab"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mossy_basalt_brick_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/stiars.json index 339b1b2e..2bf14092 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/stiars.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:mossy_basalt_brick_stairs"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mossy_basalt_brick_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/wall.json index 7a4671ac..6f7fc431 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/wall.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["###","###"],"result":{"count":6,"item":"wwizardry:mossy_basalt_brick_wall"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:mossy_basalt_brick_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/slab.json index 1e2173f6..50250937 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":"wwizardry:mossy_basalt_brick_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_brick_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/stairs.json index 17953376..7778831f 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":"wwizardry:mossy_basalt_brick_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_brick_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/wall.json index ef36d64c..9c874c16 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":"wwizardry:mossy_basalt_brick_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_brick_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/block.json index a51e812d..d72b4968 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/block.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_basalt_tiles"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_tiles"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/slab.json index 131e7005..2ff0d20a 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_basalt_tile_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_tile_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/stairs.json index 7fd8c5e4..3047e826 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_basalt_tile_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_tile_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/wall.json index a9e7624a..e65d0920 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_basalt_tile_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_tile_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_crafted/block.json index 2f391e56..ab51994c 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_crafted/block.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["##","##"],"result":{"item":"wwizardry:mossy_basalt_tiles","count":4}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["##","##"],"result":{"id":"wwizardry:mossy_basalt_tiles","count":4}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/block.json index 6d5e2df3..7d93b142 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/block.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":"wwizardry:mossy_basalt_tiles"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_tiles"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/slab.json index 45198fb4..44d457fd 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":"wwizardry:mossy_basalt_tile_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_tile_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/stairs.json index 03133065..2faac04c 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":"wwizardry:mossy_basalt_tile_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_tile_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/wall.json index b02b1ef2..26906378 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":"wwizardry:mossy_basalt_tile_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_tile_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_mossed/block.json index 737b7937..0647076f 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_mossed/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_mossed/block.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:basalt_tiles"},{"tag":"wwizardry:mossy_materials"}],"result":{"item":"wwizardry:mossy_basalt_tiles","count":1}} \ No newline at end of file +{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:basalt_tiles"},{"tag":"wwizardry:mossy_materials"}],"result":{"id":"wwizardry:mossy_basalt_tiles"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/slab.json index 9d3d8f19..eeecdd52 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_tiles"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:mossy_basalt_tile_slab"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_tiles"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mossy_basalt_tile_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/stiars.json index 6df17eeb..36eefeb4 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/stiars.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_tiles"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:mossy_basalt_tile_stairs"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_tiles"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mossy_basalt_tile_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/wall.json index c8a8d8b3..b68e329e 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/wall.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_tiles"}},"pattern":["###","###"],"result":{"count":6,"item":"wwizardry:mossy_basalt_tile_wall"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_tiles"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:mossy_basalt_tile_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/slab.json index c73c1e9c..097ebe04 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_basalt_tiles"},"result":"wwizardry:mossy_basalt_tile_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_basalt_tiles"},"result":{"id":"wwizardry:mossy_basalt_tile_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/stairs.json index 139a979b..082fea5b 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_tiles"},"result":"wwizardry:mossy_basalt_tile_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_tiles"},"result":{"id":"wwizardry:mossy_basalt_tile_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/wall.json index 2b80f9d5..da690eb2 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_tiles"},"result":"wwizardry:mossy_basalt_tile_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_tiles"},"result":{"id":"wwizardry:mossy_basalt_tile_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/block.json index 80b90868..d691d133 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/block.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_chiseled_basalt"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/slab.json index 54224e1e..c7405e11 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_chiseled_basalt_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/stairs.json index c909c4ad..fe34c896 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_chiseled_basalt_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/wall.json index 05b0930a..8cfa6780 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_chiseled_basalt_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_crafted/block.json index 284bf40a..4b5df8a1 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_crafted/block.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt_slab"}},"pattern":["#","#"],"result":{"item":"wwizardry:mossy_chiseled_basalt","count":1}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt_slab"}},"pattern":["#","#"],"result":{"id":"wwizardry:mossy_chiseled_basalt","count":1}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_mossed/block.json index 844cc862..b84733a2 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_mossed/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_mossed/block.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:chiseled_basalt"},{"tag":"wwizardry:mossy_materials"}],"result":{"item":"wwizardry:mossy_chiseled_basalt","count":1}} \ No newline at end of file +{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:chiseled_basalt"},{"tag":"wwizardry:mossy_materials"}],"result":{"id":"wwizardry:mossy_chiseled_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/slab.json index 0f21dff2..765764a1 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_chiseled_basalt"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:mossy_chiseled_basalt_slab"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_chiseled_basalt"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mossy_chiseled_basalt_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/stiars.json index 49ee0a8f..f07f5d00 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/stiars.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_chiseled_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:mossy_chiseled_basalt_stairs"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_chiseled_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mossy_chiseled_basalt_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/wall.json index 9f9213f2..293b8bd7 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/wall.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_chiseled_basalt"}},"pattern":["###","###"],"result":{"count":6,"item":"wwizardry:mossy_chiseled_basalt_wall"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_chiseled_basalt"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:mossy_chiseled_basalt_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/slab.json index dcf925b4..65dc706c 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_chiseled_basalt"},"result":"wwizardry:mossy_chiseled_basalt_slab"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_chiseled_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/stairs.json index 8fd14c96..f8be1333 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_chiseled_basalt"},"result":"wwizardry:mossy_chiseled_basalt_stairs"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_chiseled_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/wall.json index 909977d1..0fa5255a 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_chiseled_basalt"},"result":"wwizardry:mossy_chiseled_basalt_wall"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_chiseled_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_wall"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/cut_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/cut_mossed/block.json index d9639e8a..7b935436 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/cut_mossed/block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/cut_mossed/block.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:cut_basalt"},{"tag":"wwizardry:mossy_materials"}],"result":{"item":"wwizardry:mossy_cut_basalt","count":1}} \ No newline at end of file +{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:cut_basalt"},{"tag":"wwizardry:mossy_materials"}],"result":{"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/slab.json index 86aee14b..a4899953 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/stiars.json index 27aebc83..e2d173ea 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/stiars.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/wall.json index f0e4b5f5..ca3f1812 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/wall.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt"}},"pattern":["###","###"],"result":{"count":6,"item":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/slab.json index 754f09ab..c7f35a41 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/slab.json @@ -1 +1 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_cut_basalt"} \ No newline at end of file +{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/stairs.json index e0e95811..44637e47 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/stairs.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_cut_basalt"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/wall.json index e0e95811..44637e47 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/wall.json @@ -1 +1 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":"wwizardry:mossy_cut_basalt"} \ No newline at end of file +{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/redstone_stepper.json b/common/src/generated/resources/data/wwizardry/recipes/redstone_stepper.json index 968cd8dd..4f77a1e8 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/redstone_stepper.json +++ b/common/src/generated/resources/data/wwizardry/recipes/redstone_stepper.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","show_notification":true,"key":{"R":{"item":"redstone"},"S":{"item":"stone"}},"pattern":["RRR","SSS"],"result":{"count":1,"item":"wwizardry:redstone_stepper"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","show_notification":true,"key":{"R":{"item":"redstone"},"S":{"item":"stone"}},"pattern":["RRR","SSS"],"result":{"count":1,"id":"wwizardry:redstone_stepper"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass.json b/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass.json index 74bf3e49..bdb195c1 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass.json +++ b/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"G":{"item":"glass"},"B":{"item":"iron_bars"}},"pattern":["GGG","GBG","GGG"],"result":{"count":8,"item":"wwizardry:reinforced_glass"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"G":{"item":"glass"},"B":{"item":"iron_bars"}},"pattern":["GGG","GBG","GGG"],"result":{"count":8,"id":"wwizardry:reinforced_glass"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass_pane.json b/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass_pane.json index 7a4967b9..4201e734 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass_pane.json +++ b/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass_pane.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"G":{"item":"wwizardry:reinforced_glass"}},"pattern":["GGG","GGG"],"result":{"count":16,"item":"wwizardry:reinforced_glass_pane"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"G":{"item":"wwizardry:reinforced_glass"}},"pattern":["GGG","GGG"],"result":{"count":16,"id":"wwizardry:reinforced_glass_pane"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_block.json b/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_block.json index 7997aea6..ed291104 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_block.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"R":{"item":"wwizardry:rose_quartz"}},"pattern":["RRR","RRR","RRR"],"result":{"count":1,"item":"wwizardry:rose_quartz_block"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"R":{"item":"wwizardry:rose_quartz"}},"pattern":["RRR","RRR","RRR"],"result":{"count":1,"id":"wwizardry:rose_quartz_block"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_blasting_ore.json b/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_blasting_ore.json index 0249e17b..cbc26410 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_blasting_ore.json +++ b/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_blasting_ore.json @@ -1 +1 @@ -{"type":"blasting","group":"rose_quartz","cooking_time":100,"experience":1,"ingredient":{"tag":"wwizardry:rose_quartz_ores"},"result":"wwizardry:rose_quartz"} \ No newline at end of file +{"type":"blasting","group":"rose_quartz","cooking_time":100,"experience":1,"ingredient":{"tag":"wwizardry:rose_quartz_ores"},"result":{"id":"wwizardry:rose_quartz"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_block.json b/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_block.json index fb039225..35d7ffe0 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_block.json +++ b/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_block.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"misc","show_notification":true,"ingredients":[{"item":"wwizardry:rose_quartz_block"}],"result":{"count":9,"item":"wwizardry:rose_quartz"}} \ No newline at end of file +{"type":"crafting_shapeless","category":"misc","show_notification":true,"ingredients":[{"item":"wwizardry:rose_quartz_block"}],"result":{"count":9,"id":"wwizardry:rose_quartz"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_smelting_ore.json b/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_smelting_ore.json index 3ae86d5d..7efea702 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_smelting_ore.json +++ b/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_smelting_ore.json @@ -1 +1 @@ -{"type":"smelting","group":"rose_quartz","cooking_time":200,"experience":1,"ingredient":{"tag":"wwizardry:rose_quartz_ores"},"result":"wwizardry:rose_quartz"} \ No newline at end of file +{"type":"smelting","group":"rose_quartz","cooking_time":200,"experience":1,"ingredient":{"tag":"wwizardry:rose_quartz_ores"},"result":{"id":"wwizardry:rose_quartz"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/sculk_resonator.json b/common/src/generated/resources/data/wwizardry/recipes/sculk_resonator.json index 618a79e2..ce6addf3 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/sculk_resonator.json +++ b/common/src/generated/resources/data/wwizardry/recipes/sculk_resonator.json @@ -1 +1 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":10,"inputs":[{"item":"amethyst_shard"},{"item":"amethyst_shard"},{"item":"redstone"},{"item":"wwizardry:crystalline_sculk"}],"catalyst":{"item":"sculk_shrieker"},"result":{"item":"wwizardry:sculk_resonator"}} \ No newline at end of file +{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":10,"inputs":[{"item":"amethyst_shard"},{"item":"amethyst_shard"},{"item":"redstone"},{"item":"wwizardry:crystalline_sculk"}],"catalyst":{"item":"sculk_shrieker"},"result":{"id":"wwizardry:sculk_resonator"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/slot_charm.json b/common/src/generated/resources/data/wwizardry/recipes/slot_charm.json index 69043623..f13dd812 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/slot_charm.json +++ b/common/src/generated/resources/data/wwizardry/recipes/slot_charm.json @@ -1 +1 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":5,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"blaze_powder"},{"item":"blaze_powder"}],"catalyst":{"item":"chest"},"result":{"count":4,"item":"wwizardry:slot_charm"}} \ No newline at end of file +{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":5,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"blaze_powder"},{"item":"blaze_powder"}],"catalyst":{"item":"chest"},"result":{"count":4,"id":"wwizardry:slot_charm"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/soul_mirror.json b/common/src/generated/resources/data/wwizardry/recipes/soul_mirror.json index 9204c50a..45c978d8 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/soul_mirror.json +++ b/common/src/generated/resources/data/wwizardry/recipes/soul_mirror.json @@ -1 +1 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":15,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"tag":"wwizardry:glass"},{"item":"diamond"}],"catalyst":{"item":"lapis_lazuli"},"result":{"item":"wwizardry:soul_mirror"}} \ No newline at end of file +{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":15,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"tag":"wwizardry:glass"},{"item":"diamond"}],"catalyst":{"item":"lapis_lazuli"},"result":{"id":"wwizardry:soul_mirror"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/void_bag.json b/common/src/generated/resources/data/wwizardry/recipes/void_bag.json index 8e865222..f7294561 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/void_bag.json +++ b/common/src/generated/resources/data/wwizardry/recipes/void_bag.json @@ -1 +1 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":15,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"ender_eye"},{"item":"obsidian"}],"catalyst":{"item":"bundle"},"result":{"item":"wwizardry:void_bag"}} \ No newline at end of file +{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":15,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"ender_eye"},{"item":"obsidian"}],"catalyst":{"item":"bundle"},"result":{"id":"wwizardry:void_bag"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/boat.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/boat.json index a03bd401..7f0064e0 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/boat.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/boat.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"misc","group":"boat","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["# #","###"],"result":{"item":"wwizardry:denia_boat"}} \ No newline at end of file +{"type":"crafting_shaped","category":"misc","group":"boat","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["# #","###"],"result":{"id":"wwizardry:denia_boat"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/button.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/button.json index 3b160fda..fd4e4bb2 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/button.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/button.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"redstone","group":"wooden_button","ingredients":[{"item":"wwizardry:denia_planks"}],"result":{"item":"wwizardry:denia_button"}} \ No newline at end of file +{"type":"crafting_shapeless","category":"redstone","group":"wooden_button","ingredients":[{"item":"wwizardry:denia_planks"}],"result":{"id":"wwizardry:denia_button"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/chest_boat.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/chest_boat.json index 4d1d3625..b330f050 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/chest_boat.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/chest_boat.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"misc","group":"chest_boat","ingredients":[{"item":"chest"},{"item":"wwizardry:denia_boat"}],"result":{"item":"wwizardry:denia_chest_boat"}} \ No newline at end of file +{"type":"crafting_shapeless","category":"misc","group":"chest_boat","ingredients":[{"item":"chest"},{"item":"wwizardry:denia_boat"}],"result":{"id":"wwizardry:denia_chest_boat"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/door.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/door.json index 40addfdd..24bc5714 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/door.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/door.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_door","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["##","##","##"],"result":{"count":2,"item":"wwizardry:denia_door"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","group":"wooden_door","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["##","##","##"],"result":{"count":2,"id":"wwizardry:denia_door"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence.json index 2f44f81c..4783e003 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"misc","group":"wooden_fence","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"},"S":{"item":"stick"}},"pattern":["#S#","#S#"],"result":{"count":3,"item":"wwizardry:denia_fence"}} \ No newline at end of file +{"type":"crafting_shaped","category":"misc","group":"wooden_fence","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"},"S":{"item":"stick"}},"pattern":["#S#","#S#"],"result":{"count":3,"id":"wwizardry:denia_fence"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence_gate.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence_gate.json index ef526ebf..495dc158 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence_gate.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence_gate.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_fence_gate","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"},"S":{"item":"stick"}},"pattern":["S#S","S#S"],"result":{"item":"wwizardry:denia_fence_gate"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","group":"wooden_fence_gate","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"},"S":{"item":"stick"}},"pattern":["S#S","S#S"],"result":{"id":"wwizardry:denia_fence_gate"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/planks.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/planks.json index 24b820ba..25bfff0a 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/planks.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/planks.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"building","group":"planks","ingredients":[{"tag":"wwizardry:denia_logs"}],"result":{"count":4,"item":"wwizardry:denia_planks"}} \ No newline at end of file +{"type":"crafting_shapeless","category":"building","group":"planks","ingredients":[{"tag":"wwizardry:denia_logs"}],"result":{"count":4,"id":"wwizardry:denia_planks"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/pressure_plate.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/pressure_plate.json index 7f8b8d29..880f4a26 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/pressure_plate.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/pressure_plate.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_pressure_plate","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["##"],"result":{"item":"wwizardry:denia_pressure_plate"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","group":"wooden_pressure_plate","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["##"],"result":{"id":"wwizardry:denia_pressure_plate"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/sign.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/sign.json index c71199fd..82cba9c0 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/sign.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/sign.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_sign","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"},"S":{"item":"stick"}},"pattern":["###","###"," S "],"result":{"count":3,"item":"wwizardry:denia_sign"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"wooden_sign","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"},"S":{"item":"stick"}},"pattern":["###","###"," S "],"result":{"count":3,"id":"wwizardry:denia_sign"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/slab.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/slab.json index 6d9535a0..65b72768 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_slab","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:denia_slab"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"wooden_slab","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:denia_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stairs.json index 8e35ab97..19d55776 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stairs.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_stairs","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:denia_stairs"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"wooden_stairs","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:denia_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stripped_wood.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stripped_wood.json index 6820c4ba..5618ca82 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stripped_wood.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stripped_wood.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"stripped_bark","show_notification":true,"key":{"#":{"item":"wwizardry:stripped_denia_log"}},"pattern":["##","##"],"result":{"count":3,"item":"wwizardry:stripped_denia_wood"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"stripped_bark","show_notification":true,"key":{"#":{"item":"wwizardry:stripped_denia_log"}},"pattern":["##","##"],"result":{"count":3,"id":"wwizardry:stripped_denia_wood"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/trapdoor.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/trapdoor.json index 0c6ce56b..c47fde31 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/trapdoor.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/trapdoor.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_trapdoor","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["###","###"],"result":{"count":2,"item":"wwizardry:denia_trapdoor"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","group":"wooden_trapdoor","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["###","###"],"result":{"count":2,"id":"wwizardry:denia_trapdoor"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/wood.json b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/wood.json index aacaa10c..401bbfc6 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/wood.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/denia/wood.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"bark","show_notification":true,"key":{"#":{"item":"wwizardry:denia_log"}},"pattern":["##","##"],"result":{"count":3,"item":"wwizardry:denia_wood"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"bark","show_notification":true,"key":{"#":{"item":"wwizardry:denia_log"}},"pattern":["##","##"],"result":{"count":3,"id":"wwizardry:denia_wood"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/button.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/button.json index fcb478aa..426b59cd 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/button.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/button.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"redstone","group":"wooden_button","ingredients":[{"item":"wwizardry:mycha_planks"}],"result":{"item":"wwizardry:mycha_button"}} \ No newline at end of file +{"type":"crafting_shapeless","category":"redstone","group":"wooden_button","ingredients":[{"item":"wwizardry:mycha_planks"}],"result":{"id":"wwizardry:mycha_button"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/door.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/door.json index 674d09ca..fd04b8cf 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/door.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/door.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_door","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["##","##","##"],"result":{"count":2,"item":"wwizardry:mycha_door"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","group":"wooden_door","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["##","##","##"],"result":{"count":2,"id":"wwizardry:mycha_door"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence.json index 1735563c..006afbcf 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"misc","group":"wooden_fence","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"},"S":{"item":"stick"}},"pattern":["#S#","#S#"],"result":{"count":3,"item":"wwizardry:mycha_fence"}} \ No newline at end of file +{"type":"crafting_shaped","category":"misc","group":"wooden_fence","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"},"S":{"item":"stick"}},"pattern":["#S#","#S#"],"result":{"count":3,"id":"wwizardry:mycha_fence"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence_gate.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence_gate.json index b5752303..ee74eef4 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence_gate.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence_gate.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_fence_gate","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"},"S":{"item":"stick"}},"pattern":["S#S","S#S"],"result":{"item":"wwizardry:mycha_fence_gate"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","group":"wooden_fence_gate","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"},"S":{"item":"stick"}},"pattern":["S#S","S#S"],"result":{"id":"wwizardry:mycha_fence_gate"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/hyphae.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/hyphae.json index fc28075c..f6e08689 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/hyphae.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/hyphae.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"bark","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_stem"}},"pattern":["##","##"],"result":{"count":3,"item":"wwizardry:mycha_hyphae"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"bark","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_stem"}},"pattern":["##","##"],"result":{"count":3,"id":"wwizardry:mycha_hyphae"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/planks.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/planks.json index 01960b41..a668889e 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/planks.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/planks.json @@ -1 +1 @@ -{"type":"crafting_shapeless","category":"building","group":"planks","ingredients":[{"tag":"wwizardry:mycha_stems"}],"result":{"count":4,"item":"wwizardry:mycha_planks"}} \ No newline at end of file +{"type":"crafting_shapeless","category":"building","group":"planks","ingredients":[{"tag":"wwizardry:mycha_stems"}],"result":{"count":4,"id":"wwizardry:mycha_planks"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/pressure_plate.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/pressure_plate.json index 29bc5475..f096d5b3 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/pressure_plate.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/pressure_plate.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_pressure_plate","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["##"],"result":{"item":"wwizardry:mycha_pressure_plate"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","group":"wooden_pressure_plate","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["##"],"result":{"id":"wwizardry:mycha_pressure_plate"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/sign.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/sign.json index a3b51014..3dab8296 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/sign.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/sign.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_sign","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"},"S":{"item":"stick"}},"pattern":["###","###"," S "],"result":{"count":3,"item":"wwizardry:mycha_sign"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"wooden_sign","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"},"S":{"item":"stick"}},"pattern":["###","###"," S "],"result":{"count":3,"id":"wwizardry:mycha_sign"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/slab.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/slab.json index dfeacea9..1e45394b 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/slab.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_slab","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["###"],"result":{"count":6,"item":"wwizardry:mycha_slab"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"wooden_slab","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mycha_slab"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stairs.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stairs.json index 7539dbba..a10734fd 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stairs.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_stairs","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["# ","## ","###"],"result":{"count":4,"item":"wwizardry:mycha_stairs"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"wooden_stairs","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mycha_stairs"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stripped_hyphae.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stripped_hyphae.json index af45dae6..eba52338 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stripped_hyphae.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stripped_hyphae.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"building","group":"stripped_bark","show_notification":true,"key":{"#":{"item":"wwizardry:stripped_mycha_stem"}},"pattern":["##","##"],"result":{"count":3,"item":"wwizardry:stripped_mycha_hyphae"}} \ No newline at end of file +{"type":"crafting_shaped","category":"building","group":"stripped_bark","show_notification":true,"key":{"#":{"item":"wwizardry:stripped_mycha_stem"}},"pattern":["##","##"],"result":{"count":3,"id":"wwizardry:stripped_mycha_hyphae"}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/trapdoor.json b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/trapdoor.json index 351a9338..69cd44cf 100644 --- a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/trapdoor.json +++ b/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/trapdoor.json @@ -1 +1 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_trapdoor","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["###","###"],"result":{"count":2,"item":"wwizardry:mycha_trapdoor"}} \ No newline at end of file +{"type":"crafting_shaped","category":"redstone","group":"wooden_trapdoor","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["###","###"],"result":{"count":2,"id":"wwizardry:mycha_trapdoor"}} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarBlockEntityRenderer.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarBlockEntityRenderer.java index 0c38acaa..8c27fba8 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarBlockEntityRenderer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarBlockEntityRenderer.java @@ -7,7 +7,6 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.Items; import com.mojang.blaze3d.vertex.PoseStack; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index 53577295..6648e6d7 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -13,11 +13,13 @@ import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.minecraft.advancements.CriterionTrigger; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.entity.decoration.PaintingVariant; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; @@ -39,6 +41,7 @@ public static void listenToAll(RegistryCallback listener) { ItemInitializer.TABS.listen((RegistryCallback) listener); PaintingInitializer.PAINTINGS.listen((RegistryCallback) listener); RecipeInitializer.RECIPE_SERIALIZERS.listen((RegistryCallback>) listener); + RecipeInitializer.RECIPES.listen((RegistryCallback>) listener); WorldgenInitializer.STRUCTURE_PROCESSORS.listen((RegistryCallback>) listener); SoundInitializer.SOUNDS.listen((RegistryCallback) listener); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java index c90ad4c3..2e6bd3de 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java @@ -208,7 +208,7 @@ public class BlockInitializer { public static final Lazy WALL_HOLDER = registerBlock( "wall_holder", - () -> new WallHolderBlock( + () -> new SconceBlock( BlockBehaviour.Properties.of() .instabreak() .mapColor(MapColor.COLOR_GRAY) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallCandleBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java similarity index 96% rename from common/src/main/java/dev/sweetberry/wwizardry/content/block/WallCandleBlock.java rename to common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java index 544b874f..28bbae2f 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallCandleBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java @@ -14,7 +14,6 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -32,7 +31,7 @@ import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -public class WallCandleBlock extends WallHolderBlock { +public class CandleSconceBlock extends SconceBlock { public final CandleBlock candleBlock; public static final VoxelShape CANDLE_NORTH = box(7, 6, 2.25, 9, 11, 4.25); @@ -40,7 +39,7 @@ public class WallCandleBlock extends WallHolderBlock { public static final VoxelShape CANDLE_EAST = box(11.75, 6, 7, 13.75, 11, 9); public static final VoxelShape CANDLE_WEST = box(2.25, 6, 7, 4.25, 11, 9); - public WallCandleBlock(Properties settings, CandleBlock candleBlock) { + public CandleSconceBlock(Properties settings, CandleBlock candleBlock) { super(settings.lightLevel(state -> state.getValue(BlockStateProperties.LIT) ? 5 : 0)); this.candleBlock = candleBlock; ITEM_LOOKUP.put(candleBlock, this); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallHolderBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java similarity index 86% rename from common/src/main/java/dev/sweetberry/wwizardry/content/block/WallHolderBlock.java rename to common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java index c88c5402..b998a17b 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/WallHolderBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java @@ -13,6 +13,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -23,11 +24,9 @@ import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; @@ -36,15 +35,15 @@ import java.util.HashMap; -public class WallHolderBlock extends Block { - public static final HashMap ITEM_LOOKUP = new HashMap<>(); +public class SconceBlock extends Block { + public static final HashMap ITEM_LOOKUP = new HashMap<>(); public static final VoxelShape NORTH_SHAPE = box(6, 0, 0, 10, 6, 6); public static final VoxelShape SOUTH_SHAPE = box(6, 0, 10, 10, 6, 16); public static final VoxelShape EAST_SHAPE = box(10, 0, 6, 16, 6, 10); public static final VoxelShape WEST_SHAPE = box(0, 0, 6, 6, 6, 10); - public WallHolderBlock(Properties settings) { + public SconceBlock(Properties settings) { super(settings); } @@ -118,21 +117,27 @@ public BlockState updateShape( @Override protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + System.out.println("test"); if (state.getBlock() == BlockInitializer.WALL_HOLDER.get()) return useEmpty(state, world, pos, player, hand); + return specializedUseAction(state, world, pos, player, hand, hit); + } + + @Override + protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hitResult) { var droppedBlock = getDroppedBlock(); - if (droppedBlock != null && player.isShiftKeyDown()) { - if (!player.isCreative()) { - var stackEntity = new ItemEntity(world, pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5, droppedBlock.asItem().getDefaultInstance()); - world.addFreshEntity(stackEntity); - } - var soundGroup = ((Invoker_BlockBehaviour)droppedBlock).invokeGetSoundType(droppedBlock.defaultBlockState()); - world.playSound(player, pos, soundGroup.getBreakSound(), SoundSource.BLOCKS); - world.setBlockAndUpdate(pos, BlockInitializer.WALL_HOLDER.get().defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, state.getValue(BlockStateProperties.HORIZONTAL_FACING))); - return ItemInteractionResult.SUCCESS; - } - return specializedUseAction(state, world, pos, player, hand, hit); + if (droppedBlock == null || !player.isShiftKeyDown()) + return InteractionResult.PASS; + + if (!player.isCreative()) { + var stackEntity = new ItemEntity(world, pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5, droppedBlock.asItem().getDefaultInstance()); + world.addFreshEntity(stackEntity); + } + var soundGroup = ((Invoker_BlockBehaviour)droppedBlock).invokeGetSoundType(droppedBlock.defaultBlockState()); + world.playSound(player, pos, soundGroup.getBreakSound(), SoundSource.BLOCKS); + world.setBlockAndUpdate(pos, BlockInitializer.WALL_HOLDER.get().defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, state.getValue(BlockStateProperties.HORIZONTAL_FACING))); + return InteractionResult.SUCCESS; } @Nullable @@ -152,6 +157,8 @@ public ItemInteractionResult useEmpty(BlockState state, Level world, BlockPos po if (!(stack.getItem() instanceof BlockItem item)) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; if (!ITEM_LOOKUP.containsKey(item.getBlock())) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + System.out.println("test 2"); + var block = item.getBlock(); var holder = ITEM_LOOKUP.get(block); var soundGroup = ((Invoker_BlockBehaviour) block).invokeGetSoundType(block.defaultBlockState()); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java index 440807bf..f12d54d3 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java @@ -29,6 +29,10 @@ import net.minecraft.world.level.block.state.BlockState; public abstract class AltarBlockEntity extends BlockEntity implements Container { + public static final String HELD_ITEM_KEY = "HeldItem"; + public static final String RECIPE_REMAINDER_KEY = "RecipeRemainder"; + public static final String CRAFTING_KEY = "crafting"; + public static final float timingMultiplier = 0.0625f; private EndCrystal endCrystalEntity; @@ -136,24 +140,26 @@ private static Stream getBundledStacks(ItemStack stack) { @Override public void saveAdditional(CompoundTag nbt, HolderLookup.Provider provider) { - var heldItemNbt = new CompoundTag(); - if (!heldItemNbt.isEmpty()) - heldItem.save(provider, heldItemNbt); - var recipeRemainderNbt = new CompoundTag(); + if (!heldItem.isEmpty()) + nbt.put(HELD_ITEM_KEY, heldItem.save(provider)); + if (!recipeRemainder.isEmpty()) - recipeRemainder.save(provider, recipeRemainderNbt); - nbt.put("HeldItem", heldItemNbt); - nbt.put("RecipeRemainder", recipeRemainderNbt); - nbt.putBoolean("crafting", crafting); + nbt.put(RECIPE_REMAINDER_KEY, recipeRemainder.save(provider)); + + nbt.putBoolean(CRAFTING_KEY, crafting); } @Override public void loadAdditional(CompoundTag nbt, HolderLookup.Provider provider) { - var heldItemNbt = nbt.getCompound("HeldItem"); - heldItem = ItemStack.parse(provider, heldItemNbt).orElse(ItemStack.EMPTY); - var recipeRemainderNbt = nbt.getCompound("RecipeRemainder"); - recipeRemainder = ItemStack.parse(provider, recipeRemainderNbt).orElse(ItemStack.EMPTY); - crafting = nbt.getBoolean("crafting"); + heldItem = nbt.contains(HELD_ITEM_KEY) + ? ItemStack.parseOptional(provider, nbt.getCompound(HELD_ITEM_KEY)) + : ItemStack.EMPTY; + + recipeRemainder = nbt.contains(RECIPE_REMAINDER_KEY) + ? ItemStack.parseOptional(provider, nbt.getCompound(RECIPE_REMAINDER_KEY)) + : ItemStack.EMPTY; + + crafting = nbt.getBoolean(CRAFTING_KEY); } @Override @@ -215,11 +221,10 @@ public void setItem(int slot, ItemStack stack) { @Override public void setChanged() { if (level == null) return; - if (level.isClientSide()) { + if (level.isClientSide()) Minecraft.getInstance().levelRenderer.setBlocksDirty(worldPosition.getX(), worldPosition.getY(), worldPosition.getZ(), worldPosition.getX(), worldPosition.getY(), worldPosition.getZ()); - } else { + else ((ServerLevel) level).getChunkSource().blockChanged(worldPosition); - } super.setChanged(); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WallHolderBlockType.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WallHolderBlockType.java index a9440e1c..3b979cde 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WallHolderBlockType.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WallHolderBlockType.java @@ -3,8 +3,8 @@ import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.resource.MapBackedPack; import dev.sweetberry.wwizardry.content.block.BlockInitializer; -import dev.sweetberry.wwizardry.content.block.WallCandleBlock; -import dev.sweetberry.wwizardry.content.block.WallHolderBlock; +import dev.sweetberry.wwizardry.content.block.CandleSconceBlock; +import dev.sweetberry.wwizardry.content.block.SconceBlock; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.world.level.block.Block; @@ -16,7 +16,7 @@ public class WallHolderBlockType extends AbstractDataGenerator { public final ResourceLocation id; public final Block block; - public final Lazy wallBlock; + public final Lazy wallBlock; public final ParentType parent; public WallHolderBlockType(ResourceLocation id, Block block, ParentType parent) { @@ -25,7 +25,7 @@ public WallHolderBlockType(ResourceLocation id, Block block, ParentType parent) this.parent = parent; wallBlock = BlockInitializer.registerBlock(transformId(id), () -> switch (parent) { - case CANDLE -> new WallCandleBlock(BlockBehaviour.Properties.ofFullCopy(BlockInitializer.WALL_HOLDER.get()), (CandleBlock) block); + case CANDLE -> new CandleSconceBlock(BlockBehaviour.Properties.ofFullCopy(BlockInitializer.WALL_HOLDER.get()), (CandleBlock) block); // TODO! default -> throw new NotImplementedException("Type "+ parent.name +" is not implemented."); }); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java index 7dec5960..cb0e0a67 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java @@ -27,7 +27,7 @@ public class AltarCatalyzationRecipeSerializer implements RecipeSerializer { Ingredient[] ingredients = list.stream().filter(ingredient -> !ingredient.isEmpty()).toArray(Ingredient[]::new); if (ingredients.length == 0) - return DataResult.error(() -> "Too many inputs for altar recipe"); + return DataResult.error(() -> "Too few inputs for altar recipe"); else return ingredients.length > 4 ? DataResult.error(() -> "Too many inputs for altar recipe") : DataResult.success(List.of(ingredients)); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_MappedRegistry.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_MappedRegistry.java new file mode 100644 index 00000000..f82a143c --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_MappedRegistry.java @@ -0,0 +1,38 @@ +package dev.sweetberry.wwizardry.mixin; + +import dev.sweetberry.wwizardry.api.event.Event; +import dev.sweetberry.wwizardry.api.registry.RegistryCallback; +import dev.sweetberry.wwizardry.api.registry.RegistryEventHolder; +import net.minecraft.core.Holder; +import net.minecraft.core.MappedRegistry; +import net.minecraft.core.RegistrationInfo; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(MappedRegistry.class) +public class Mixin_MappedRegistry implements RegistryEventHolder { + @Unique + private final Event> wwizardry$EVENT = new Event<>(listeners -> (registry, id, object) -> { + for (var listener : listeners) { + listener.register(registry, id, object); + } + }); + + @Override + public Event> wwizardry$getEvent() { + return wwizardry$EVENT; + } + + @Inject( + method = "register", + at = @At("RETURN") + ) + private void wwizardry$triggerEvent(ResourceKey key, T value, RegistrationInfo info, CallbackInfoReturnable> cir) { + wwizardry$EVENT.invoker().register((Registry) this, key.location(), () -> value); + } +} diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json b/common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json index df092d8f..746ba824 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json @@ -20,7 +20,7 @@ { "condition": "minecraft:location_check", "predicate": { - "biome": "wwizardry:forgotten_fields" + "biomes": "wwizardry:forgotten_fields" } } ] diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json b/common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json index 845ca4d0..a1d4d505 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json @@ -23,8 +23,7 @@ { "condition": "location_check", "predicate": { - "structure": "wwizardry:sculk_lab", - "dimension": "overworld" + "structures": "wwizardry:sculk_lab" } } ] diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index 753d71d2..ed4fbfd4 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -15,6 +15,7 @@ "Mixin_Boat", "Mixin_Item", "Mixin_ItemEntity", + "Mixin_MappedRegistry", "Mixin_MultifaceSpreader_DefaultSpreaderConfig", "Mixin_Player", "Mixin_RedStoneWireBlock", diff --git a/data/recipes/altar_catalyzer.fennec b/data/recipes/altar_catalyzer.fennec index c7890ee0..1e5ec33d 100644 --- a/data/recipes/altar_catalyzer.fennec +++ b/data/recipes/altar_catalyzer.fennec @@ -15,5 +15,5 @@ pattern [ result { count = 1 - item = "wwizardry:altar_catalyzer" + id = "wwizardry:altar_catalyzer" } diff --git a/data/recipes/altar_pedestal.fennec b/data/recipes/altar_pedestal.fennec index df757c86..c1a4a0aa 100644 --- a/data/recipes/altar_pedestal.fennec +++ b/data/recipes/altar_pedestal.fennec @@ -15,5 +15,5 @@ pattern [ result { count = 1 - item = "wwizardry:altar_pedestal" + id = "wwizardry:altar_pedestal" } diff --git a/data/recipes/brewing_charm.fennec b/data/recipes/brewing_charm.fennec index 9ba3c056..1139ec18 100644 --- a/data/recipes/brewing_charm.fennec +++ b/data/recipes/brewing_charm.fennec @@ -13,5 +13,5 @@ inputs [ catalyst { item = "brewing_stand" } result { - item = "wwizardry:brewing_charm" + id = "wwizardry:brewing_charm" } diff --git a/data/recipes/crafting_charm.fennec b/data/recipes/crafting_charm.fennec index 10f5946c..376a06b6 100644 --- a/data/recipes/crafting_charm.fennec +++ b/data/recipes/crafting_charm.fennec @@ -13,5 +13,5 @@ inputs [ catalyst { item = "crafting_table" } result { - item = "wwizardry:crafting_charm" + id = "wwizardry:crafting_charm" } diff --git a/data/recipes/crystalline_sculk.fennec b/data/recipes/crystalline_sculk.fennec index 347e0f7b..70c8518a 100644 --- a/data/recipes/crystalline_sculk.fennec +++ b/data/recipes/crystalline_sculk.fennec @@ -14,5 +14,5 @@ catalyst { item = "amethyst_shard" } result { count = 16 - item = "wwizardry:crystalline_sculk" + id = "wwizardry:crystalline_sculk" } diff --git a/data/recipes/crystalline_sculk_block.fennec b/data/recipes/crystalline_sculk_block.fennec index ab2c60af..5eaf4389 100644 --- a/data/recipes/crystalline_sculk_block.fennec +++ b/data/recipes/crystalline_sculk_block.fennec @@ -14,5 +14,5 @@ pattern [ result { count = 1 - item = "wwizardry:crystalline_sculk_block" + id = "wwizardry:crystalline_sculk_block" } diff --git a/data/recipes/crystalline_sculk_from_block.fennec b/data/recipes/crystalline_sculk_from_block.fennec index ddc9804e..9060743b 100644 --- a/data/recipes/crystalline_sculk_from_block.fennec +++ b/data/recipes/crystalline_sculk_from_block.fennec @@ -8,5 +8,5 @@ ingredients [ result { count = 9 - item = "wwizardry:crystalline_sculk" + id = "wwizardry:crystalline_sculk" } diff --git a/data/recipes/modulo_comparator.fennec b/data/recipes/modulo_comparator.fennec index 93e6db39..b257518a 100644 --- a/data/recipes/modulo_comparator.fennec +++ b/data/recipes/modulo_comparator.fennec @@ -16,5 +16,5 @@ pattern [ result { count = 1 - item = "wwizardry:modulo_comparator" + id = "wwizardry:modulo_comparator" } diff --git a/data/recipes/redstone_stepper.fennec b/data/recipes/redstone_stepper.fennec index 963568fd..8010de80 100644 --- a/data/recipes/redstone_stepper.fennec +++ b/data/recipes/redstone_stepper.fennec @@ -14,5 +14,5 @@ pattern [ result { count = 1 - item = "wwizardry:redstone_stepper" + id = "wwizardry:redstone_stepper" } diff --git a/data/recipes/reinforced_glass.fennec b/data/recipes/reinforced_glass.fennec index d1aae669..e626bedd 100644 --- a/data/recipes/reinforced_glass.fennec +++ b/data/recipes/reinforced_glass.fennec @@ -15,5 +15,5 @@ pattern [ result { count = 8 - item = "wwizardry:reinforced_glass" + id = "wwizardry:reinforced_glass" } diff --git a/data/recipes/reinforced_glass_pane.fennec b/data/recipes/reinforced_glass_pane.fennec index 4d7944b9..59c81b27 100644 --- a/data/recipes/reinforced_glass_pane.fennec +++ b/data/recipes/reinforced_glass_pane.fennec @@ -13,5 +13,5 @@ pattern [ result { count = 16 - item = "wwizardry:reinforced_glass_pane" + id = "wwizardry:reinforced_glass_pane" } diff --git a/data/recipes/rose_quartz_block.fennec b/data/recipes/rose_quartz_block.fennec index 4124bbce..f66168c6 100644 --- a/data/recipes/rose_quartz_block.fennec +++ b/data/recipes/rose_quartz_block.fennec @@ -14,5 +14,5 @@ pattern [ result { count = 1 - item = "wwizardry:rose_quartz_block" + id = "wwizardry:rose_quartz_block" } diff --git a/data/recipes/rose_quartz_from_blasting_ore.fennec b/data/recipes/rose_quartz_from_blasting_ore.fennec index a6eb9978..630fa174 100644 --- a/data/recipes/rose_quartz_from_blasting_ore.fennec +++ b/data/recipes/rose_quartz_from_blasting_ore.fennec @@ -9,4 +9,6 @@ ingredient { tag = "wwizardry:rose_quartz_ores" } -result = "wwizardry:rose_quartz" +result { + id = "wwizardry:rose_quartz" +} diff --git a/data/recipes/rose_quartz_from_block.fennec b/data/recipes/rose_quartz_from_block.fennec index 05f4e380..0112d142 100644 --- a/data/recipes/rose_quartz_from_block.fennec +++ b/data/recipes/rose_quartz_from_block.fennec @@ -9,5 +9,5 @@ ingredients [ result { count = 9 - item = "wwizardry:rose_quartz" + id = "wwizardry:rose_quartz" } diff --git a/data/recipes/rose_quartz_from_smelting_ore.fennec b/data/recipes/rose_quartz_from_smelting_ore.fennec index 4eb3beec..3a4e160f 100644 --- a/data/recipes/rose_quartz_from_smelting_ore.fennec +++ b/data/recipes/rose_quartz_from_smelting_ore.fennec @@ -9,4 +9,6 @@ ingredient { tag = "wwizardry:rose_quartz_ores" } -result = "wwizardry:rose_quartz" +result { + id = "wwizardry:rose_quartz" +} diff --git a/data/recipes/sculk_resonator.fennec b/data/recipes/sculk_resonator.fennec index 9fa6d8e6..4e90eca7 100644 --- a/data/recipes/sculk_resonator.fennec +++ b/data/recipes/sculk_resonator.fennec @@ -13,5 +13,5 @@ inputs [ catalyst { item = "sculk_shrieker" } result { - item = "wwizardry:sculk_resonator" + id = "wwizardry:sculk_resonator" } diff --git a/data/recipes/slot_charm.fennec b/data/recipes/slot_charm.fennec index 1a6656d9..ce928efb 100644 --- a/data/recipes/slot_charm.fennec +++ b/data/recipes/slot_charm.fennec @@ -14,5 +14,5 @@ catalyst { item = "chest" } result { count = 4 - item = "wwizardry:slot_charm" + id = "wwizardry:slot_charm" } diff --git a/data/recipes/soul_mirror.fennec b/data/recipes/soul_mirror.fennec index f65dd8a2..73393450 100644 --- a/data/recipes/soul_mirror.fennec +++ b/data/recipes/soul_mirror.fennec @@ -13,5 +13,5 @@ inputs [ catalyst { item = "lapis_lazuli" } result { - item = "wwizardry:soul_mirror" + id = "wwizardry:soul_mirror" } diff --git a/data/recipes/void_bag.fennec b/data/recipes/void_bag.fennec index 7c96e769..c4e300c1 100644 --- a/data/recipes/void_bag.fennec +++ b/data/recipes/void_bag.fennec @@ -13,5 +13,5 @@ inputs [ catalyst { item = "bundle" } result { - item = "wwizardry:void_bag" + id = "wwizardry:void_bag" } diff --git a/data/recipes/wood/denia/boat.fennec b/data/recipes/wood/denia/boat.fennec index a754ac2e..4e0b4ad7 100644 --- a/data/recipes/wood/denia/boat.fennec +++ b/data/recipes/wood/denia/boat.fennec @@ -12,4 +12,6 @@ pattern [ "###" ] -result { item = "wwizardry:denia_boat" } +result { + id = "wwizardry:denia_boat" +} diff --git a/data/recipes/wood/denia/button.fennec b/data/recipes/wood/denia/button.fennec index 8863f2fc..a2d53bea 100644 --- a/data/recipes/wood/denia/button.fennec +++ b/data/recipes/wood/denia/button.fennec @@ -7,4 +7,6 @@ ingredients [ { item="wwizardry:denia_planks" } ] -result { item = "wwizardry:denia_button" } +result { + id = "wwizardry:denia_button" +} diff --git a/data/recipes/wood/denia/chest_boat.fennec b/data/recipes/wood/denia/chest_boat.fennec index f92d2f9b..0b8e72b0 100644 --- a/data/recipes/wood/denia/chest_boat.fennec +++ b/data/recipes/wood/denia/chest_boat.fennec @@ -8,4 +8,6 @@ ingredients [ { item="wwizardry:denia_boat" } ] -result { item = "wwizardry:denia_chest_boat" } +result { + id = "wwizardry:denia_chest_boat" +} diff --git a/data/recipes/wood/denia/door.fennec b/data/recipes/wood/denia/door.fennec index edc1b3e7..07e647f8 100644 --- a/data/recipes/wood/denia/door.fennec +++ b/data/recipes/wood/denia/door.fennec @@ -15,5 +15,5 @@ pattern [ result { count = 2 - item = "wwizardry:denia_door" + id = "wwizardry:denia_door" } diff --git a/data/recipes/wood/denia/fence.fennec b/data/recipes/wood/denia/fence.fennec index 11e35546..8bb7c157 100644 --- a/data/recipes/wood/denia/fence.fennec +++ b/data/recipes/wood/denia/fence.fennec @@ -15,5 +15,5 @@ pattern [ result { count = 3 - item = "wwizardry:denia_fence" + id = "wwizardry:denia_fence" } diff --git a/data/recipes/wood/denia/fence_gate.fennec b/data/recipes/wood/denia/fence_gate.fennec index dc5b8b62..e673a856 100644 --- a/data/recipes/wood/denia/fence_gate.fennec +++ b/data/recipes/wood/denia/fence_gate.fennec @@ -13,4 +13,6 @@ pattern [ "S#S" ] -result { item="wwizardry:denia_fence_gate" } +result { + id = "wwizardry:denia_fence_gate" +} diff --git a/data/recipes/wood/denia/planks.fennec b/data/recipes/wood/denia/planks.fennec index aad5b989..41438546 100644 --- a/data/recipes/wood/denia/planks.fennec +++ b/data/recipes/wood/denia/planks.fennec @@ -9,5 +9,5 @@ ingredients [ result { count = 4 - item = "wwizardry:denia_planks" + id = "wwizardry:denia_planks" } diff --git a/data/recipes/wood/denia/pressure_plate.fennec b/data/recipes/wood/denia/pressure_plate.fennec index 97cad5e4..f5ad26d6 100644 --- a/data/recipes/wood/denia/pressure_plate.fennec +++ b/data/recipes/wood/denia/pressure_plate.fennec @@ -11,4 +11,6 @@ pattern [ "##" ] -result { item="wwizardry:denia_pressure_plate" } +result { + id = "wwizardry:denia_pressure_plate" +} diff --git a/data/recipes/wood/denia/sign.fennec b/data/recipes/wood/denia/sign.fennec index f7697d77..a14388d2 100644 --- a/data/recipes/wood/denia/sign.fennec +++ b/data/recipes/wood/denia/sign.fennec @@ -16,5 +16,5 @@ pattern [ result { count = 3 - item = "wwizardry:denia_sign" + id = "wwizardry:denia_sign" } diff --git a/data/recipes/wood/denia/slab.fennec b/data/recipes/wood/denia/slab.fennec index b5773922..6ae2ff71 100644 --- a/data/recipes/wood/denia/slab.fennec +++ b/data/recipes/wood/denia/slab.fennec @@ -13,5 +13,5 @@ pattern [ result { count = 6 - item = "wwizardry:denia_slab" + id = "wwizardry:denia_slab" } diff --git a/data/recipes/wood/denia/stairs.fennec b/data/recipes/wood/denia/stairs.fennec index 4fb1f962..e56da01f 100644 --- a/data/recipes/wood/denia/stairs.fennec +++ b/data/recipes/wood/denia/stairs.fennec @@ -15,5 +15,5 @@ pattern [ result { count = 4 - item = "wwizardry:denia_stairs" + id = "wwizardry:denia_stairs" } diff --git a/data/recipes/wood/denia/stripped_wood.fennec b/data/recipes/wood/denia/stripped_wood.fennec index 1957d995..595b3ccc 100644 --- a/data/recipes/wood/denia/stripped_wood.fennec +++ b/data/recipes/wood/denia/stripped_wood.fennec @@ -14,5 +14,5 @@ pattern [ result { count = 3 - item = "wwizardry:stripped_denia_wood" + id = "wwizardry:stripped_denia_wood" } diff --git a/data/recipes/wood/denia/trapdoor.fennec b/data/recipes/wood/denia/trapdoor.fennec index 4b39193b..434a98e4 100644 --- a/data/recipes/wood/denia/trapdoor.fennec +++ b/data/recipes/wood/denia/trapdoor.fennec @@ -14,5 +14,5 @@ pattern [ result { count = 2 - item = "wwizardry:denia_trapdoor" + id = "wwizardry:denia_trapdoor" } diff --git a/data/recipes/wood/denia/wood.fennec b/data/recipes/wood/denia/wood.fennec index 61f2005c..4fa41db7 100644 --- a/data/recipes/wood/denia/wood.fennec +++ b/data/recipes/wood/denia/wood.fennec @@ -14,5 +14,5 @@ pattern [ result { count = 3 - item = "wwizardry:denia_wood" + id = "wwizardry:denia_wood" } diff --git a/data/recipes/wood/mycha/button.fennec b/data/recipes/wood/mycha/button.fennec index 994e4da9..b2d2d673 100644 --- a/data/recipes/wood/mycha/button.fennec +++ b/data/recipes/wood/mycha/button.fennec @@ -7,4 +7,6 @@ ingredients [ { item="wwizardry:mycha_planks" } ] -result { item = "wwizardry:mycha_button" } +result { + id = "wwizardry:mycha_button" +} diff --git a/data/recipes/wood/mycha/door.fennec b/data/recipes/wood/mycha/door.fennec index 03d337da..f6595756 100644 --- a/data/recipes/wood/mycha/door.fennec +++ b/data/recipes/wood/mycha/door.fennec @@ -15,5 +15,5 @@ pattern [ result { count = 2 - item = "wwizardry:mycha_door" + id = "wwizardry:mycha_door" } diff --git a/data/recipes/wood/mycha/fence.fennec b/data/recipes/wood/mycha/fence.fennec index f8e0b52d..07d91048 100644 --- a/data/recipes/wood/mycha/fence.fennec +++ b/data/recipes/wood/mycha/fence.fennec @@ -15,5 +15,5 @@ pattern [ result { count = 3 - item = "wwizardry:mycha_fence" + id = "wwizardry:mycha_fence" } diff --git a/data/recipes/wood/mycha/fence_gate.fennec b/data/recipes/wood/mycha/fence_gate.fennec index 8d072ef0..e19a8393 100644 --- a/data/recipes/wood/mycha/fence_gate.fennec +++ b/data/recipes/wood/mycha/fence_gate.fennec @@ -13,4 +13,6 @@ pattern [ "S#S" ] -result { item="wwizardry:mycha_fence_gate" } +result { + id = "wwizardry:mycha_fence_gate" +} diff --git a/data/recipes/wood/mycha/hyphae.fennec b/data/recipes/wood/mycha/hyphae.fennec index 481fb7f0..510e01df 100644 --- a/data/recipes/wood/mycha/hyphae.fennec +++ b/data/recipes/wood/mycha/hyphae.fennec @@ -14,5 +14,5 @@ pattern [ result { count = 3 - item = "wwizardry:mycha_hyphae" + id = "wwizardry:mycha_hyphae" } diff --git a/data/recipes/wood/mycha/planks.fennec b/data/recipes/wood/mycha/planks.fennec index 7b27c2ff..02348d00 100644 --- a/data/recipes/wood/mycha/planks.fennec +++ b/data/recipes/wood/mycha/planks.fennec @@ -9,5 +9,5 @@ ingredients [ result { count = 4 - item = "wwizardry:mycha_planks" + id = "wwizardry:mycha_planks" } diff --git a/data/recipes/wood/mycha/pressure_plate.fennec b/data/recipes/wood/mycha/pressure_plate.fennec index aef2bc4c..f7233a91 100644 --- a/data/recipes/wood/mycha/pressure_plate.fennec +++ b/data/recipes/wood/mycha/pressure_plate.fennec @@ -11,4 +11,6 @@ pattern [ "##" ] -result { item="wwizardry:mycha_pressure_plate" } +result { + id = "wwizardry:mycha_pressure_plate" +} diff --git a/data/recipes/wood/mycha/sign.fennec b/data/recipes/wood/mycha/sign.fennec index aa1e93a4..beb02e39 100644 --- a/data/recipes/wood/mycha/sign.fennec +++ b/data/recipes/wood/mycha/sign.fennec @@ -16,5 +16,5 @@ pattern [ result { count = 3 - item = "wwizardry:mycha_sign" + id = "wwizardry:mycha_sign" } diff --git a/data/recipes/wood/mycha/slab.fennec b/data/recipes/wood/mycha/slab.fennec index 4bac41c8..4d400c4b 100644 --- a/data/recipes/wood/mycha/slab.fennec +++ b/data/recipes/wood/mycha/slab.fennec @@ -13,5 +13,5 @@ pattern [ result { count = 6 - item = "wwizardry:mycha_slab" + id = "wwizardry:mycha_slab" } diff --git a/data/recipes/wood/mycha/stairs.fennec b/data/recipes/wood/mycha/stairs.fennec index 255f431a..c75f89d7 100644 --- a/data/recipes/wood/mycha/stairs.fennec +++ b/data/recipes/wood/mycha/stairs.fennec @@ -15,5 +15,5 @@ pattern [ result { count = 4 - item = "wwizardry:mycha_stairs" + id = "wwizardry:mycha_stairs" } diff --git a/data/recipes/wood/mycha/stripped_hyphae.fennec b/data/recipes/wood/mycha/stripped_hyphae.fennec index 1dbaf223..a4954823 100644 --- a/data/recipes/wood/mycha/stripped_hyphae.fennec +++ b/data/recipes/wood/mycha/stripped_hyphae.fennec @@ -14,5 +14,5 @@ pattern [ result { count = 3 - item = "wwizardry:stripped_mycha_hyphae" + id = "wwizardry:stripped_mycha_hyphae" } diff --git a/data/recipes/wood/mycha/trapdoor.fennec b/data/recipes/wood/mycha/trapdoor.fennec index 8923ce42..aeed6e0d 100644 --- a/data/recipes/wood/mycha/trapdoor.fennec +++ b/data/recipes/wood/mycha/trapdoor.fennec @@ -14,5 +14,5 @@ pattern [ result { count = 2 - item = "wwizardry:mycha_trapdoor" + id = "wwizardry:mycha_trapdoor" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 59506064..cab7dcc3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ neoforge = "20.5.0-beta" mixin = "0.8.5" mixin_extras = "0.3.5" -fabric_api = "0.97.7+1.20.5" +fabric_api = "0.97.8+1.20.5" terrablender = "1.20.5-3.4.0.2" ccapi = "6.0.0-beta.2" diff --git a/scripts/command/brick.ts b/scripts/command/brick.ts index 3053f55c..1034c01b 100644 --- a/scripts/command/brick.ts +++ b/scripts/command/brick.ts @@ -55,19 +55,19 @@ const Generator = { type: "stonecutting", count: 2, ingredient: { item: recipe.block }, - result: recipe.slab + result: { id: recipe.slab } }, stairs: { type: "stonecutting", count: 1, ingredient: { item: recipe.block }, - result: recipe.stairs + result: { id: recipe.stairs } }, wall: { type: "stonecutting", count: 1, ingredient: { item: recipe.block }, - result: recipe.wall + result: { id: recipe.wall } } } }, @@ -85,7 +85,7 @@ const Generator = { ], result: { count: 6, - item: recipe.slab + id: recipe.slab } }, stiars: { @@ -102,7 +102,7 @@ const Generator = { ], result: { count: 4, - item: recipe.stairs + id: recipe.stairs } }, wall: { @@ -118,7 +118,7 @@ const Generator = { ], result: { count: 6, - item: recipe.wall + id: recipe.wall } } } @@ -129,25 +129,25 @@ const Generator = { type: "stonecutting", count: 1, ingredient: { item: generator.item }, - result: recipe.block + result: { id: recipe.block } }, slab: { type: "stonecutting", count: 2, ingredient: { item: generator.item }, - result: recipe.slab + result: { id: recipe.slab } }, stairs: { type: "stonecutting", count: 1, ingredient: { item: generator.item }, - result: recipe.stairs + result: { id: recipe.stairs } }, wall: { type: "stonecutting", count: 1, ingredient: { item: generator.item }, - result: recipe.wall + result: { id: recipe.wall } } } }, @@ -164,7 +164,7 @@ const Generator = { }, pattern: generator.pattern, result: { - item: recipe.block, + id: recipe.block, count: generator.count } } @@ -182,8 +182,7 @@ const Generator = { { tag: "wwizardry:mossy_materials" } ], result: { - item: recipe.block, - count: 1 + id: recipe.block } } } From 622332202ec0284aa043c95aeb9560e0397b74c1 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 3 May 2024 14:14:50 -0500 Subject: [PATCH 13/46] Fix emi and neoforge --- .../wwizardry/compat/emi/EmiInitializer.java | 87 ++++++++++++------- .../block/entity/AltarBlockEntity.java | 4 +- .../mixin/Accessor_PotionBrewing.java | 2 +- .../mixin/Accessor_PotionBrewing_Mix.java | 12 --- gradle/libs.versions.toml | 2 +- neoforge/build.gradle | 6 +- .../wwizardry/neoforge/NeoForgeEvents.java | 4 +- .../src/main/resources/accesstransformer.cfg | 9 -- settings.gradle | 2 +- 9 files changed, 65 insertions(+), 63 deletions(-) delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing_Mix.java diff --git a/common/src/main/java/dev/sweetberry/wwizardry/compat/emi/EmiInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/compat/emi/EmiInitializer.java index f203684e..ca244374 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/compat/emi/EmiInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/compat/emi/EmiInitializer.java @@ -1,6 +1,5 @@ package dev.sweetberry.wwizardry.compat.emi; -import com.mojang.authlib.minecraft.client.MinecraftClient; import dev.emi.emi.api.EmiEntrypoint; import dev.emi.emi.api.EmiPlugin; import dev.emi.emi.api.EmiRegistry; @@ -12,22 +11,22 @@ import dev.sweetberry.wwizardry.compat.emi.recipe.EmiAltarCatalyzationRecipe; import dev.sweetberry.wwizardry.compat.emi.recipe.EmiAltarShapelessRecipe; import dev.sweetberry.wwizardry.content.block.BlockInitializer; -import dev.sweetberry.wwizardry.content.block.altar.AltarCatalyzerBlock; -import dev.sweetberry.wwizardry.content.block.altar.AltarPedestalBlock; import dev.sweetberry.wwizardry.content.item.ItemInitializer; -import dev.sweetberry.wwizardry.content.recipe.AltarCatalyzationRecipe; import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import dev.sweetberry.wwizardry.mixin.Accessor_PotionBrewing; -import dev.sweetberry.wwizardry.mixin.Accessor_PotionBrewing_Mix; import net.minecraft.client.Minecraft; +import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.Potion; import net.minecraft.world.item.alchemy.PotionBrewing; +import net.minecraft.world.item.alchemy.PotionContents; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.ShapelessRecipe; -import net.minecraft.world.level.block.entity.BrewingStandBlockEntity; @EmiEntrypoint public class EmiInitializer implements EmiPlugin { @@ -84,32 +83,56 @@ public void register(EmiRegistry registry) { registry.addRecipe(EmiAltarShapelessRecipe.of(recipe.id(), recipe.value())); // TODO: Fix this code -// for (var ingredient : Minecraft.getInstance().getConnection().packet) { -// for (var stack : ingredient.getItems()) { -// var basePath = getPrefixedPathedIdentifier(BuiltInRegistries.ITEM.getKey(stack.getItem()), "altar_brewing"); -// for (PotionBrewing.Mix recipe : Accessor_PotionBrewing.getMixes()) { -// try { -// var accessor = (Accessor_PotionBrewing_Mix)recipe; -// var recipeIngredient = accessor.getIngredient(); -// if (recipeIngredient.getItems().length > 0) { -// var ingredientPath = getPrefixedPathedIdentifier(BuiltInRegistries.ITEM.getKey(recipeIngredient.getItems()[0].getItem()), basePath); -// var inputPath = getPrefixedPathedIdentifier(BuiltInRegistries.POTION.getKey(accessor.getFrom()), ingredientPath); -// var outputPath = getPrefixedPathedIdentifier(BuiltInRegistries.POTION.getKey(accessor.getTo()), inputPath); -// var id = WanderingWizardry.id(outputPath); -// -// registry.addRecipe(new EmiAltarBrewingRecipe( -// EmiStack.of(PotionUtils.setPotion(stack.copy(), accessor.getFrom())), -// EmiIngredient.of(recipeIngredient), -// EmiStack.of(PotionUtils.setPotion(stack.copy(), accessor.getTo())), -// id -// )); -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } + var brewing = Minecraft.getInstance().level != null ? Minecraft.getInstance().level.potionBrewing() : PotionBrewing.EMPTY; + var a_brewing = (Accessor_PotionBrewing)brewing; + for (var ingredient : a_brewing.getContainers()) { + for (var stack : ingredient.getItems()) { + var basePath = getPrefixedPathedIdentifier(BuiltInRegistries.ITEM.getKey(stack.getItem()), "altar_brewing"); + for (PotionBrewing.Mix recipe : a_brewing.getMixes()) { + try { + var recipeIngredient = recipe.ingredient(); + if (recipeIngredient.getItems().length > 0) { + var ingredientPath = getPrefixedPathedIdentifier(BuiltInRegistries.ITEM.getKey(recipeIngredient.getItems()[0].getItem()), basePath); + var inputPath = getPrefixedPathedIdentifier(BuiltInRegistries.POTION.getKey(recipe.from().value()), ingredientPath); + var outputPath = getPrefixedPathedIdentifier(BuiltInRegistries.POTION.getKey(recipe.to().value()), inputPath); + var id = WanderingWizardry.id(outputPath); + + final Item[] items = { + Items.POTION, + Items.SPLASH_POTION, + Items.LINGERING_POTION, + Items.TIPPED_ARROW + }; + final String[] strings = { + "potion/", + "splash_potion/", + "lingering_potion/", + "tipped_arrow/" + }; + + final ItemStack[] inputStacks = new ItemStack[4]; + final ItemStack[] outputStacks = new ItemStack[4]; + + for (int i = 0; i < 4; i++) { + var inputStack = items[i].getDefaultInstance(); + inputStack.set(DataComponents.POTION_CONTENTS, new PotionContents(recipe.from())); + var outputStack = items[i].getDefaultInstance(); + outputStack.set(DataComponents.POTION_CONTENTS, new PotionContents(recipe.to())); + + registry.addRecipe(new EmiAltarBrewingRecipe( + EmiStack.of(inputStack), + EmiIngredient.of(recipeIngredient), + EmiStack.of(outputStack), + id.withPrefix(strings[i]) + )); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } } public static String getPathedIdentifier(ResourceLocation id) { diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java index f12d54d3..8f4858f3 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarBlockEntity.java @@ -151,11 +151,11 @@ public void saveAdditional(CompoundTag nbt, HolderLookup.Provider provider) { @Override public void loadAdditional(CompoundTag nbt, HolderLookup.Provider provider) { - heldItem = nbt.contains(HELD_ITEM_KEY) + heldItem = nbt.contains(HELD_ITEM_KEY, Tag.TAG_COMPOUND) ? ItemStack.parseOptional(provider, nbt.getCompound(HELD_ITEM_KEY)) : ItemStack.EMPTY; - recipeRemainder = nbt.contains(RECIPE_REMAINDER_KEY) + recipeRemainder = nbt.contains(RECIPE_REMAINDER_KEY, Tag.TAG_COMPOUND) ? ItemStack.parseOptional(provider, nbt.getCompound(RECIPE_REMAINDER_KEY)) : ItemStack.EMPTY; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java index 764fecb5..4d3312ac 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java @@ -13,7 +13,7 @@ @Mixin(PotionBrewing.class) public interface Accessor_PotionBrewing { @Accessor("containers") - List getAllowedContainers(); + List getContainers(); @Accessor("potionMixes") List> getMixes(); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing_Mix.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing_Mix.java deleted file mode 100644 index aeacf420..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing_Mix.java +++ /dev/null @@ -1,12 +0,0 @@ -package dev.sweetberry.wwizardry.mixin; - -import net.minecraft.world.item.alchemy.PotionBrewing; -import net.minecraft.world.item.crafting.Ingredient; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(PotionBrewing.Mix.class) -public interface Accessor_PotionBrewing_Mix { - @Accessor - Ingredient getIngredient(); -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cab7dcc3..d314772b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,7 +12,7 @@ fabric_api = "0.97.8+1.20.5" terrablender = "1.20.5-3.4.0.2" ccapi = "6.0.0-beta.2" -emi = "1.1.0+1.20.4" +emi = "1.1.6+1.20.6" modmenu = "10.0.0-beta.1" [libraries] diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 5f90acea..04ac1680 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -55,9 +55,9 @@ dependencies { implementation libs.neoforge compileOnly project(":common") -// compileOnly classify(libs.emi.neoforge, "api") -// testCompileOnly classify(libs.emi.neoforge, "api") -// runtimeOnly libs.emi.neoforge + compileOnly classify(libs.emi.neoforge, "api") + testCompileOnly classify(libs.emi.neoforge, "api") + runtimeOnly libs.emi.neoforge implementation libs.bundles.include.neoforge testImplementation libs.bundles.include.neoforge diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java index 9b5130c2..314ff040 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java @@ -31,6 +31,7 @@ import net.neoforged.neoforge.event.entity.player.UseItemOnBlockEvent; import net.neoforged.neoforge.network.PacketDistributor; +import javax.tools.Tool; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -58,8 +59,7 @@ public static void onTooltip(RenderTooltipEvent.GatherComponents event) { event.getItemStack(), TooltipFlag.NORMAL, (i, c) -> lines.addAll(i, - (Collection>) - c.stream().map(Either::left).toList() + c.stream().map(it -> (FormattedText) it).map(Either::left).toList() ) ); } diff --git a/neoforge/src/main/resources/accesstransformer.cfg b/neoforge/src/main/resources/accesstransformer.cfg index 32285052..374ae6f1 100644 --- a/neoforge/src/main/resources/accesstransformer.cfg +++ b/neoforge/src/main/resources/accesstransformer.cfg @@ -11,12 +11,3 @@ public net.minecraft.world.level.block.PressurePlateBlock (Lnet/minecraft/ public net.minecraft.world.level.block.DoorBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V public net.minecraft.world.level.block.TrapDoorBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V public net.minecraft.world.level.block.SaplingBlock (Lnet/minecraft/world/level/block/grower/TreeGrower;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V - -public -public -public -public -public -public -public -public \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 1370aecb..44071b36 100644 --- a/settings.gradle +++ b/settings.gradle @@ -18,4 +18,4 @@ pluginManagement { include "common" include "fabric" -//include "neoforge" +include "neoforge" From 0004e5b57478fad54cf339a964cec6c2bba6b69c Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 3 May 2024 23:13:54 -0500 Subject: [PATCH 14/46] SNALE!!!! --- .../assets/wwizardry/lang/en_us.json | 2 +- .../wwizardry/tags/blocks/damages_snail.json | 1 + .../data/wwizardry/tags/items/snail_food.json | 1 + .../wwizardry/WanderingWizardry.java | 3 + .../client/content/events/ClientEvents.java | 39 +++- .../client/render/entity/SnailRenderer.java | 32 +++ .../render/model/AltarCatalyzerModel.java | 1 - .../client/render/model/SnailModel.java | 55 +++++ .../wwizardry/content/ContentInitializer.java | 3 + .../content/entity/EntityInitializer.java | 47 ++++ .../wwizardry/content/entity/Snail.java | 208 ++++++++++++++++++ .../content/item/ItemInitializer.java | 26 ++- .../mixin/Mixin_DefaultAttributes.java | 42 ++++ .../wwizardry/models/item/snail_shell.json | 6 + .../models/item/snail_spawn_egg.json | 3 + .../wwizardry/textures/entity/snail/moss.png | Bin 0 -> 570 bytes .../textures/entity/snail/normal.png | Bin 0 -> 480 bytes .../wwizardry/textures/entity/snail/sculk.png | Bin 0 -> 537 bytes .../wwizardry/textures/entity/snail/slug.png | Bin 0 -> 303 bytes .../wwizardry/textures/item/snail_shell.png | Bin 0 -> 339 bytes .../advancements/adventure/altar_craft.json | 2 +- .../src/main/resources/wwizardry.mixins.json | 2 +- data/lang/en_us.fennec | 3 + data/tags/wwizardry.fennec | 104 +++++++++ .../client/FabricClientInitializer.java | 15 +- .../neoforge/NeoForgeInitializer.java | 23 +- 26 files changed, 574 insertions(+), 44 deletions(-) create mode 100644 common/src/generated/resources/data/wwizardry/tags/blocks/damages_snail.json create mode 100644 common/src/generated/resources/data/wwizardry/tags/items/snail_food.json create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/client/render/entity/SnailRenderer.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/client/render/model/SnailModel.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_DefaultAttributes.java create mode 100644 common/src/main/resources/assets/wwizardry/models/item/snail_shell.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/snail_spawn_egg.json create mode 100644 common/src/main/resources/assets/wwizardry/textures/entity/snail/moss.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/entity/snail/normal.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/entity/snail/sculk.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/entity/snail/slug.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/item/snail_shell.png diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index f3f724e7..4a558319 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -1 +1 @@ -{"itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file +{"itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","item.wwizardry.snail_spawn_egg":"Snail Spawn Egg","item.wwizardry.snail_shell":"Snail Shell","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/damages_snail.json b/common/src/generated/resources/data/wwizardry/tags/blocks/damages_snail.json new file mode 100644 index 00000000..3248d794 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/tags/blocks/damages_snail.json @@ -0,0 +1 @@ +{"replace":false,"values":[{"required":false,"id":"copper_block"},{"required":false,"id":"exposed_copper"},{"required":false,"id":"weathered_copper"},{"required":false,"id":"oxidized_copper"},{"required":false,"id":"waxed_copper_block"},{"required":false,"id":"waxed_exposed_copper"},{"required":false,"id":"waxed_weathered_copper"},{"required":false,"id":"waxed_oxidized_copper"},{"required":false,"id":"cut_copper"},{"required":false,"id":"exposed_cut_copper"},{"required":false,"id":"weathered_cut_copper"},{"required":false,"id":"oxidized_cut_copper"},{"required":false,"id":"waxed_cut_copper"},{"required":false,"id":"waxed_exposed_cut_copper"},{"required":false,"id":"waxed_weathered_cut_copper"},{"required":false,"id":"waxed_oxidized_cut_copper"},{"required":false,"id":"cut_copper_stairs"},{"required":false,"id":"exposed_cut_copper_stairs"},{"required":false,"id":"weathered_cut_copper_stairs"},{"required":false,"id":"oxidized_cut_copper_stairs"},{"required":false,"id":"waxed_cut_copper"},{"required":false,"id":"waxed_exposed_cut_copper_stairs"},{"required":false,"id":"waxed_weathered_cut_copper_stairs"},{"required":false,"id":"waxed_oxidized_cut_copper_stairs"},{"required":false,"id":"cut_copper_slab"},{"required":false,"id":"exposed_cut_copper_slab"},{"required":false,"id":"weathered_cut_copper_slab"},{"required":false,"id":"oxidized_cut_copper_slab"},{"required":false,"id":"waxed_cut_copper_slab"},{"required":false,"id":"waxed_exposed_cut_copper_slab"},{"required":false,"id":"waxed_weathered_cut_copper_slab"},{"required":false,"id":"waxed_oxidized_cut_copper_slab"},{"required":false,"id":"chiseled_copper"},{"required":false,"id":"exposed_chiseled_copper"},{"required":false,"id":"weathered_chiseled_copper"},{"required":false,"id":"oxidized_chiseled_copper"},{"required":false,"id":"waxed_chiseled_copper"},{"required":false,"id":"waxed_exposed_chiseled_copper"},{"required":false,"id":"waxed_weathered_chiseled_copper"},{"required":false,"id":"waxed_oxidized_chiseled_copper"},{"required":false,"id":"copper_grate"},{"required":false,"id":"exposed_copper_grate"},{"required":false,"id":"weathered_copper_grate"},{"required":false,"id":"oxidized_copper_grate"},{"required":false,"id":"waxed_copper_grate"},{"required":false,"id":"waxed_exposed_copper_grate"},{"required":false,"id":"waxed_weathered_copper_grate"},{"required":false,"id":"waxed_oxidized_copper_grate"},{"required":false,"id":"copper_bulb"},{"required":false,"id":"exposed_copper_bulb"},{"required":false,"id":"weathered_copper_bulb"},{"required":false,"id":"oxidized_copper_bulb"},{"required":false,"id":"waxed_copper_bulb"},{"required":false,"id":"waxed_exposed_copper_bulb"},{"required":false,"id":"waxed_weathered_copper_bulb"},{"required":false,"id":"waxed_oxidized_copper_bulb"},{"required":false,"id":"copper_door"},{"required":false,"id":"exposed_copper_door"},{"required":false,"id":"weathered_copper_door"},{"required":false,"id":"oxidized_copper_door"},{"required":false,"id":"waxed_copper_door"},{"required":false,"id":"waxed_exposed_copper_door"},{"required":false,"id":"waxed_weathered_copper_door"},{"required":false,"id":"waxed_oxidized_copper_door"},{"required":false,"id":"copper_trapdoor"},{"required":false,"id":"exposed_copper_trapdoor"},{"required":false,"id":"weathered_copper_trapdoor"},{"required":false,"id":"oxidized_copper_trapdoor"},{"required":false,"id":"waxed_copper_trapdoor"},{"required":false,"id":"waxed_exposed_copper_trapdoor"},{"required":false,"id":"waxed_weathered_copper_trapdoor"},{"required":false,"id":"waxed_oxidized_copper_trapdoor"}]} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/items/snail_food.json b/common/src/generated/resources/data/wwizardry/tags/items/snail_food.json new file mode 100644 index 00000000..bfa43b98 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/tags/items/snail_food.json @@ -0,0 +1 @@ +{"replace":false,"values":[{"required":false,"id":"kelp"}]} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java b/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java index 88ecc5a8..2c25ca57 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java @@ -1,6 +1,7 @@ package dev.sweetberry.wwizardry; import dev.sweetberry.wwizardry.content.ContentInitializer; +import dev.sweetberry.wwizardry.content.block.BlockInitializer; import net.minecraft.resources.ResourceLocation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,6 +24,8 @@ public static void init(String platform) { init = true; WanderingWizardry.LOGGER.info("*tips altar* w'wizardry"); ContentInitializer.init(); + + BlockInitializer.registerSecondaryBlockFunctions(); } public static ResourceLocation id(String id) { diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java index a8e59877..53d3565d 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java @@ -2,26 +2,29 @@ import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.client.WanderingWizardryClient; +import dev.sweetberry.wwizardry.client.render.model.SnailModel; +import dev.sweetberry.wwizardry.client.render.entity.SnailRenderer; import dev.sweetberry.wwizardry.client.render.model.AltarCatalyzerModel; import dev.sweetberry.wwizardry.content.block.BlockInitializer; -import dev.sweetberry.wwizardry.content.block.entity.AltarCatalyzerBlockEntity; -import dev.sweetberry.wwizardry.content.block.entity.AltarPedestalBlockEntity; import dev.sweetberry.wwizardry.client.render.blockentity.AltarCatalyzerBlockEntityRenderer; import dev.sweetberry.wwizardry.client.render.blockentity.AltarPedestalBlockEntityRenderer; import dev.sweetberry.wwizardry.content.block.sign.ModdedSignBlock; import dev.sweetberry.wwizardry.content.component.BoatComponent; +import dev.sweetberry.wwizardry.content.entity.EntityInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; import net.minecraft.client.model.BoatModel; import net.minecraft.client.model.ChestBoatModel; -import net.minecraft.client.model.geom.LayerDefinitions; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.blockentity.ChestRenderer; import net.minecraft.client.renderer.blockentity.HangingSignRenderer; import net.minecraft.client.renderer.blockentity.SignRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.item.ClampedItemPropertyFunction; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import org.apache.logging.log4j.util.TriConsumer; @@ -42,14 +45,29 @@ public static void registerModelPredicates(TriConsumer, String, Clamp ); } - public static void registerEntityRenderers(BiConsumer>, BlockEntityRendererProvider> consumer) { + private static EntityRendererProvider get(EntityRendererProvider provider) { + return (EntityRendererProvider) provider; + } + + private static BlockEntityRendererProvider get(BlockEntityRendererProvider provider) { + return (BlockEntityRendererProvider) provider; + } + + public static void registerEntityRenderers(BiConsumer>, EntityRendererProvider> consumer) { consumer.accept( - (Lazy>)(Object) BlockInitializer.ALTAR_PEDESTAL_TYPE, - (BlockEntityRendererProvider) AltarPedestalBlockEntityRenderer::new + (Lazy>) (Object) EntityInitializer.SNAIL, + get(SnailRenderer::new) + ); + } + + public static void registerBlockEntityRenderers(BiConsumer>, BlockEntityRendererProvider> consumer) { + consumer.accept( + (Lazy>)(Object) BlockInitializer.ALTAR_PEDESTAL_TYPE, + get(AltarPedestalBlockEntityRenderer::new) ); consumer.accept( - (Lazy>)(Object) BlockInitializer.ALTAR_CATALYZER_TYPE, - (BlockEntityRendererProvider) AltarCatalyzerBlockEntityRenderer::new + (Lazy>)(Object) BlockInitializer.ALTAR_CATALYZER_TYPE, + get(AltarCatalyzerBlockEntityRenderer::new) ); } @@ -72,5 +90,8 @@ public static void registerModelLayers(BiConsumer altarModel); + + var snailModel = SnailModel.createBodyLayer(); + consumer.accept(SnailModel.LAYER_LOCATION, () -> snailModel); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/entity/SnailRenderer.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/entity/SnailRenderer.java new file mode 100644 index 00000000..6409e5c0 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/entity/SnailRenderer.java @@ -0,0 +1,32 @@ +package dev.sweetberry.wwizardry.client.render.entity; + +import com.mojang.blaze3d.vertex.PoseStack; +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.client.render.model.SnailModel; +import dev.sweetberry.wwizardry.content.entity.Snail; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.resources.ResourceLocation; + +public class SnailRenderer extends MobRenderer { + public SnailRenderer(EntityRendererProvider.Context context) { + super(context, new SnailModel(context.bakeLayer(SnailModel.LAYER_LOCATION)), 0.2f); + } + + @Override + public ResourceLocation getTextureLocation(Snail snail) { + return WanderingWizardry.id(snail.getVariant().getTextureName()); + } + + @Override + public void render(Snail snail, float $$1, float $$2, PoseStack stack, MultiBufferSource buffer, int $$5) { + stack.pushPose(); + final float scale = 0.6f; + if (snail.isBaby()) + stack.scale(scale, scale, scale); + + super.render(snail, $$1, $$2, stack, buffer, $$5); + stack.popPose(); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java index cf9709ef..8dda1d8a 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java @@ -61,7 +61,6 @@ public static LayerDefinition createLayer() { @Override public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - WanderingWizardry.id(timeToCraft + ""); var seconds = ticks / 20; seconds %= 4; poseStack.pushPose(); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/SnailModel.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/SnailModel.java new file mode 100644 index 00000000..9397e00b --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/SnailModel.java @@ -0,0 +1,55 @@ +package dev.sweetberry.wwizardry.client.render.model; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.content.entity.Snail; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; + +public class SnailModel extends EntityModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(WanderingWizardry.id("snail"), "main"); + private final ModelPart body; + private final ModelPart leftEye; + private final ModelPart rightEye; + private final ModelPart shell; + + public SnailModel(ModelPart root) { + this.body = root.getChild("Body"); + this.leftEye = root.getChild("EyeL"); + this.rightEye = root.getChild("EyeR"); + this.shell = root.getChild("Shell"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition body = partdefinition.addOrReplaceChild("Body", CubeListBuilder.create().texOffs(0, 0).addBox(-1.5F, -1.0F, -3.5F, 3.0F, 1.0F, 7.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + + PartDefinition leftEye = partdefinition.addOrReplaceChild("EyeL", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5F, -3.0F, -0.5F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.01F)), PartPose.offsetAndRotation(1.0F, 23.25F, -3.0F, 0.0873F, 0.0F, 0.0873F)); + + PartDefinition rightEye = partdefinition.addOrReplaceChild("EyeR", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5F, -3.0F, -0.5F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.01F)), PartPose.offsetAndRotation(-1.0F, 23.25F, -3.0F, 0.0873F, 0.0F, -0.0873F)); + + PartDefinition shell = partdefinition.addOrReplaceChild("Shell", CubeListBuilder.create().texOffs(0, 8).addBox(-1.5F, -2.0F, -2.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.01F)), PartPose.offsetAndRotation(0.0F, 21.25F, 1.0F, -0.0873F, 0.0F, 0.0F)); + + PartDefinition shroom = shell.addOrReplaceChild("shroom", CubeListBuilder.create().texOffs(13, 4).addBox(-2.0F, -1.5F, 0.5F, 3.0F, 3.0F, 0.0F, new CubeDeformation(0.0F)) + .texOffs(13, 1).addBox(-0.5F, -1.5F, -1.0F, 0.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.25F, -3.25F, 1.25F, -0.1309F, -0.7854F, -0.0436F)); + + return LayerDefinition.create(meshdefinition, 32, 32); + } + + @Override + public void setupAnim(Snail entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {} + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + body.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + leftEye.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + rightEye.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + shell.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index 6648e6d7..78890216 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -5,6 +5,7 @@ import dev.sweetberry.wwizardry.content.component.ComponentInitializer; import dev.sweetberry.wwizardry.content.criterion.CriterionInitializer; import dev.sweetberry.wwizardry.content.datagen.DatagenInitializer; +import dev.sweetberry.wwizardry.content.entity.EntityInitializer; import dev.sweetberry.wwizardry.content.events.EventInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.net.NetworkingInitializer; @@ -15,6 +16,7 @@ import net.minecraft.advancements.CriterionTrigger; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.decoration.PaintingVariant; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; @@ -44,5 +46,6 @@ public static void listenToAll(RegistryCallback listener) { RecipeInitializer.RECIPES.listen((RegistryCallback>) listener); WorldgenInitializer.STRUCTURE_PROCESSORS.listen((RegistryCallback>) listener); SoundInitializer.SOUNDS.listen((RegistryCallback) listener); + EntityInitializer.ENTITIES.listen((RegistryCallback>) listener); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java new file mode 100644 index 00000000..49f70aa4 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java @@ -0,0 +1,47 @@ +package dev.sweetberry.wwizardry.content.entity; + +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.api.Lazy; +import dev.sweetberry.wwizardry.api.registry.RegistryContext; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.phys.Vec3; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.function.Supplier; + +public class EntityInitializer { + public static final RegistryContext> ENTITIES = new RegistryContext<>(BuiltInRegistries.ENTITY_TYPE); + public static final List SUPPLIER_DATA = new ArrayList<>(); + + public static final Lazy> SNAIL = registerEntity( + "snail", + () -> EntityType.Builder + .of(Snail::new, MobCategory.CREATURE) + .sized(0.4f, 0.4f) + .passengerAttachments(new Vec3(0, 0.3125f, -0.0625f)) + .eyeHeight(0.125f) + .clientTrackingRange(10) + .build("wwizardry:snail"), + Snail::createAttributes + ); + + public static void init() {} + + public static Lazy> registerEntity(String id, Supplier> entity, Supplier supplier) { + var value = EntityInitializer.entities().register(WanderingWizardry.id(id), entity); + SUPPLIER_DATA.add(new AttributeSupplierData((Supplier>) (Object) value, supplier.get())); + return value; + } + + public static RegistryContext> entities() { + return (RegistryContext>) (Object) ENTITIES; + } + + public record AttributeSupplierData(Supplier> entity, AttributeSupplier supplier) {} +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java new file mode 100644 index 00000000..c6b6af54 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java @@ -0,0 +1,208 @@ +package dev.sweetberry.wwizardry.content.entity; + +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.content.item.ItemInitializer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.TagKey; +import net.minecraft.util.RandomSource; +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.*; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.animal.Fox; +import net.minecraft.world.entity.animal.Pig; +import net.minecraft.world.entity.animal.armadillo.Armadillo; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class Snail extends Animal implements VariantHolder { + public static final TagKey FOOD = TagKey.create(Registries.ITEM, WanderingWizardry.id("snail_food")); + public static final TagKey DAMAGES = TagKey.create(Registries.BLOCK, WanderingWizardry.id("damages_snail")); + public static final String VARIANT_KEY = "variant"; + + private static final EntityDataAccessor VARIANT = SynchedEntityData.defineId(Snail.class, EntityDataSerializers.INT); + + public AvoidDamagingBlocksGoal avoidBlocks; + + protected Snail(EntityType type, Level level) { + super(type, level); + + setVariant(Variant.randomNonSlug(level().random)); + } + + @Override + protected void registerGoals() { + goalSelector.addGoal(4, new TemptGoal(this, 1, (s) -> s.is(FOOD), false)); + goalSelector.addGoal(3, new BreedGoal(this, 1)); + goalSelector.addGoal(5, new RandomStrollGoal(this, 1)); + goalSelector.addGoal(5, new RandomLookAroundGoal(this)); + goalSelector.addGoal(8, new AvoidEntityGoal<>(this, Armadillo.class, 8, 1.6, 1.4)); + avoidBlocks = new AvoidDamagingBlocksGoal(this, 1.6, 8); + goalSelector.addGoal(16, avoidBlocks); + } + + public static AttributeSupplier createAttributes() { + return Mob + .createMobAttributes() + .add(Attributes.MOVEMENT_SPEED, 0.1) + .add(Attributes.MAX_HEALTH, 5.0) + .add(Attributes.FOLLOW_RANGE, 8.0) + .add(Attributes.SAFE_FALL_DISTANCE, 16.0) + .build(); + } + + @Override + public boolean isFood(ItemStack stack) { + return stack.is(FOOD); + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(ServerLevel serverLevel, AgeableMob ageableMob) { + var entity = EntityInitializer.SNAIL.get().create(serverLevel); + entity.setVariant(Variant.SLUG); + entity.setAge(-5000); + return entity; + } + + @Override + public void tick() { + boolean wasBaby = isBaby(); + super.tick(); + + if (wasBaby && !isBaby()) + setVariant(Variant.randomNonSlug(level().random)); + + if (getBlockStateOn().is(DAMAGES)) + hurt(level().damageSources().dryOut(), 0.125f); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + if (player.isShiftKeyDown() || isBaby()) + return super.mobInteract(player, hand); + var level = level(); + var variant = getVariant(); + var stack = player.getItemInHand(hand); + if (variant != Variant.SLUG && stack.is(Items.SHEARS)) { + setVariant(Variant.SLUG); + level().playSound(player, BlockPos.containing(getPosition(0)), SoundEvents.SHEEP_SHEAR, SoundSource.PLAYERS); + if (!player.isCreative()) { + stack.hurtAndBreak(1, player, hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); + if (level instanceof ServerLevel serverLevel) { + var item = new ItemEntity(serverLevel, getX(), getY(), getZ(), ItemInitializer.SNAIL_SHELL.get().getDefaultInstance()); + serverLevel.addFreshEntity(item); + } + } + return InteractionResult.SUCCESS; + } else if (variant == Variant.SLUG && stack.is(ItemInitializer.SNAIL_SHELL.get())) { + setVariant(Variant.randomNonSlug(level().random)); + level().playSound(player, BlockPos.containing(getPosition(0)), SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS); + if (!player.isCreative()) + stack.consume(1, player); + return InteractionResult.SUCCESS; + } + + return super.mobInteract(player, hand); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(VARIANT, 0); + } + + @Override + public void addAdditionalSaveData(CompoundTag nbt) { + super.addAdditionalSaveData(nbt); + nbt.putInt(VARIANT_KEY, getRawVariant()); + } + + @Override + public void readAdditionalSaveData(CompoundTag nbt) { + super.readAdditionalSaveData(nbt); + setRawVariant(nbt.getInt(VARIANT_KEY)); + } + + @Override + public void setVariant(Variant variant) { + setRawVariant(variant.ordinal()); + } + + private void setRawVariant(int variant) { + if (!(level() instanceof ServerLevel)) + return; + entityData.set(VARIANT, variant); + } + + @Override + @NotNull + public Variant getVariant() { + return Variant.values()[getRawVariant()]; + } + + private int getRawVariant() { + return entityData.get(VARIANT); + } + + public enum Variant implements StringRepresentable { + NORMAL, + SLUG, + MOSS, + SCULK; + + public static final Variant[] NON_SLUG = { + NORMAL, + MOSS, + SCULK + }; + + @Override + public String getSerializedName() { + return toString().toLowerCase(); + } + + public String getTextureName() { + return "textures/entity/snail/" + getSerializedName() + ".png"; + } + + public static Variant random(RandomSource random) { + return values()[random.nextInt(values().length)]; + } + + public static Variant randomNonSlug(RandomSource random) { + return NON_SLUG[random.nextInt(NON_SLUG.length)]; + } + } + + public static class AvoidDamagingBlocksGoal extends MoveToBlockGoal { + public AvoidDamagingBlocksGoal(PathfinderMob self, double speed, int searchRange) { + super(self, speed, searchRange); + } + + @Override + protected boolean isValidTarget(LevelReader levelReader, BlockPos pos) { + return !levelReader.getBlockState(pos).is(DAMAGES); + } + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java index a8e5c612..4d50c6ea 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java @@ -4,6 +4,7 @@ import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.registry.RegistryContext; import dev.sweetberry.wwizardry.content.block.BlockInitializer; +import dev.sweetberry.wwizardry.content.entity.EntityInitializer; import dev.sweetberry.wwizardry.content.item.charm.AnvilCharmItem; import dev.sweetberry.wwizardry.content.item.charm.BrewingCharmItem; import dev.sweetberry.wwizardry.content.item.charm.CraftingCharmItem; @@ -11,11 +12,7 @@ import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.Rarity; -import net.minecraft.world.item.RecordItem; +import net.minecraft.world.item.*; import java.util.ArrayList; import java.util.List; @@ -297,6 +294,25 @@ public class ItemInitializer { BLOCKS_STACKS ); + public static final Lazy SNAIL_SHELL = registerItem( + "snail_shell", + () -> new Item( + new Item.Properties() + ), + ITEMS_STACKS + ); + + public static final Lazy SNAIL_SPAWN_EGG = registerItem( + "snail_spawn_egg", + () -> new SpawnEggItem( + EntityInitializer.SNAIL.get(), + 0xdfb8a2, + 0xdd9c9c, + new Item.Properties() + ), + ITEMS_STACKS + ); + public static Lazy registerItem(String id, Supplier item, List> group) { var lazy = ITEMS.register(WanderingWizardry.id(id), (Supplier)item); group.add(lazy); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_DefaultAttributes.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_DefaultAttributes.java new file mode 100644 index 00000000..0a1ebab2 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_DefaultAttributes.java @@ -0,0 +1,42 @@ +package dev.sweetberry.wwizardry.mixin; + +import dev.sweetberry.wwizardry.content.entity.EntityInitializer; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.DefaultAttributes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(DefaultAttributes.class) +public class Mixin_DefaultAttributes { + @Inject( + at = @At("RETURN"), + method = "getSupplier", + cancellable = true + ) + private static void getModdedSupplier(EntityType entity, CallbackInfoReturnable cir) { + for (var data : EntityInitializer.SUPPLIER_DATA) { + if (data.entity().get() == entity) { + cir.setReturnValue(data.supplier()); + return; + } + } + } + + @Inject( + at = @At("RETURN"), + method = "hasSupplier", + cancellable = true + ) + private static void hasModdedSupplier(EntityType entity, CallbackInfoReturnable cir) { + for (var data : EntityInitializer.SUPPLIER_DATA) { + if (data.entity().get() == entity) { + cir.setReturnValue(true); + return; + } + } + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/snail_shell.json b/common/src/main/resources/assets/wwizardry/models/item/snail_shell.json new file mode 100644 index 00000000..24c7405f --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/snail_shell.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "wwizardry:item/snail_shell" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/snail_spawn_egg.json b/common/src/main/resources/assets/wwizardry/models/item/snail_spawn_egg.json new file mode 100644 index 00000000..ddd15597 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/snail_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/template_spawn_egg" +} diff --git a/common/src/main/resources/assets/wwizardry/textures/entity/snail/moss.png b/common/src/main/resources/assets/wwizardry/textures/entity/snail/moss.png new file mode 100644 index 0000000000000000000000000000000000000000..01c6944d450e328b263a8b7ba5f330549e45da49 GIT binary patch literal 570 zcmV-A0>%A_P)Q-F`*`-e|pnuU*-LDnh|MIEvpQrV0k%aJub zc>DrxILHAYOJM-!2t|)L>N(*4jz#}LzWVd&GuR$v!$ETBmQy_hV7>(T4g`>+0oeh_ zp+waXz!zsQ2Y`J2`O#C_qya(>09nq;$HVab$#ZZ51hK`!^1<4kym-MN_wF4<=>f0i z$H&(H2U!TR7~}v@I)SBuw=Yip7nU%i$a0V;7(tf63D`_mV&FOdPrQV;;CgUN$v zm_Aqn2BjnPtV}3dV)!7X$oM}8-#>=C_r5U{2!=4cd-HfcY<`;vs2oHnvGjp)zAV);5m_{E5IECu|SCVC80EL3@doKndF#(2muRhQ(1U%!^ z|0^qTF|Y{zVTk@52eusK2-E6P+Jpei!XKZQz`lO+@;8GBCp(yZ?dl%}Eo~MCm>h@? z3Z18KzA$WGbdxF$V%(Wu{lD|sCa^`Ig!l718=O7Gu9P8l=R`QaNj-(3{K6uJRAyVM zr3uF65n2CLbQQq{cN)Yo+_`+8VfNp{U^WPV5+TSDo zHcX7#*^(;pNT{&ECqL?d(GVC7fzc2c4S~@R7!82|4*>w$F6<%vg~oRP0000si%eaAE0(Vo*ZDw|6XU>^#&#a^RHJ?uDa`9L#2D4L5anVMne9C}1NG~3jZ^i!HtCp~V=gEz zPJmB|)1l1IU>Yzfi4q9=W^4ebZoj_AlYuA$5Fd9ZRp;%40*HQUc~dR}VFnu2D-A&i z!vJz3o&kvP#t`dzzjR8oAd13!Jdc*wae$Gd;8l*gmIEkn4)ePC^`nw=)3lcRTPFoE z?53%KO)qo%8sf>>gsMH($p}pBmd-|F00bZoVKUI~H@{nIWCZRDMItbhT~yDNDv86y zYW^r50*oA(*EUxCZw>>f+l#WF1)j%%lp%+a12+U1JBRSD@}L&785&0mB9fVKKmZ$a z*f@B=j^c3^mJTHu;7x;9&%B0w9i^{jEWwKU`Go!lhFL7}t|edzSOS)SC143y0)LCC W-63kOocsU)002ovPDHLkV1fYd`^$#_ literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/entity/snail/sculk.png b/common/src/main/resources/assets/wwizardry/textures/entity/snail/sculk.png new file mode 100644 index 0000000000000000000000000000000000000000..6761a0e489b5e313655eab43a7ca1d57169d29f7 GIT binary patch literal 537 zcmV+!0_OdRP)BXh0hXme5V^B!Se*w-5r_m2 z7ytnb0`Q4)4**0I23T58@-F27C<5P!eT?FqFfe>n_>{{%%OWYO1}B*H?t+qa^%NK$ zqxWcx?2dXG*<4p9yG*L6sCi+IWkU%vMZ@IxcsV#oOz&@3h5!@*c-GNEhn`NdH`wU? zEnYzd+`SCoCRZ&5+dLc`B>H@-f1`j|0Oq>3e8eb|`lK&s6ITFAU=4o2sCV@6HAMR6 zTnQoVc-hCsFRw`$55OY7U0I}#-9UaGoS7!?$tmqP8kKoM+nZWs?cFY3_-tr^?yo{L z8-3=q bz5!4t;~{25G++P#002ovPDHLkV1fVu{C(pf literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/entity/snail/slug.png b/common/src/main/resources/assets/wwizardry/textures/entity/snail/slug.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1755810b16d2282d43b77e5db43da493258a07 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJubwWBArbD$DGW@kk)8i<@5+|g zqEsZ|SR=7xThgg|f!V2n@x(%xs{#ka z(+$`gYX1Jb7<_99qZ1!P^=HlJ+Hm|+*e#I{uV%Niez=pbDU&d3(;x+{!} j6%C}Auo291Obk~SCM!PRXHNnK0E4HipUXO@geC?6=R0yL literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/item/snail_shell.png b/common/src/main/resources/assets/wwizardry/textures/item/snail_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..d88042e655ee9b0fc4f4ca85123f7e188efd9d04 GIT binary patch literal 339 zcmV-Z0j&OsP)x0WuWi3Nb-J2IOeP8i*i6 zKrR9K8ySE!g8)tgCb~!d2RRiSg+N0zycF%G@|DT lm_g{`cvB)d8H?iF2mnCJz!AB8yg>i}002ovPDHLkV1ke=e*XXf literal 0 HcmV?d00001 diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json b/common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json index 7f645dfe..3ad03d68 100644 --- a/common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json +++ b/common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json @@ -20,7 +20,7 @@ "conditions": { "items": [ { - "tag": "wwizardry:altars" + "items": "#wwizardry:altars" } ] } diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index ed4fbfd4..e430de2a 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -8,11 +8,11 @@ "Accessor_BlockEntityType", "Accessor_PlayerRespawnLogic", "Accessor_PotionBrewing", - "Accessor_PotionBrewing_Mix", "Accessor_ServerPlayer", "Accessor_StructureProcessor", "Invoker_BlockBehaviour", "Mixin_Boat", + "Mixin_DefaultAttributes", "Mixin_Item", "Mixin_ItemEntity", "Mixin_MappedRegistry", diff --git a/data/lang/en_us.fennec b/data/lang/en_us.fennec index 06c12bbd..65e97200 100644 --- a/data/lang/en_us.fennec +++ b/data/lang/en_us.fennec @@ -221,6 +221,9 @@ music_disc_wandering = "Music Disc" "music_disc_wandering.desc" = "Moonkey - Wandering" + + snail_spawn_egg = "Snail Spawn Egg" + snail_shell = "Snail Shell" } "boat.wwizardry" { diff --git a/data/tags/wwizardry.fennec b/data/tags/wwizardry.fennec index 4a9b0a54..12c16521 100644 --- a/data/tags/wwizardry.fennec +++ b/data/tags/wwizardry.fennec @@ -1,4 +1,104 @@ blocks { + damages_snail [ + "copper_block" + "exposed_copper" + "weathered_copper" + "oxidized_copper" + + "waxed_copper_block" + "waxed_exposed_copper" + "waxed_weathered_copper" + "waxed_oxidized_copper" + + + "cut_copper" + "exposed_cut_copper" + "weathered_cut_copper" + "oxidized_cut_copper" + + "waxed_cut_copper" + "waxed_exposed_cut_copper" + "waxed_weathered_cut_copper" + "waxed_oxidized_cut_copper" + + + "cut_copper_stairs" + "exposed_cut_copper_stairs" + "weathered_cut_copper_stairs" + "oxidized_cut_copper_stairs" + + "waxed_cut_copper" + "waxed_exposed_cut_copper_stairs" + "waxed_weathered_cut_copper_stairs" + "waxed_oxidized_cut_copper_stairs" + + + "cut_copper_slab" + "exposed_cut_copper_slab" + "weathered_cut_copper_slab" + "oxidized_cut_copper_slab" + + "waxed_cut_copper_slab" + "waxed_exposed_cut_copper_slab" + "waxed_weathered_cut_copper_slab" + "waxed_oxidized_cut_copper_slab" + + + "chiseled_copper" + "exposed_chiseled_copper" + "weathered_chiseled_copper" + "oxidized_chiseled_copper" + + "waxed_chiseled_copper" + "waxed_exposed_chiseled_copper" + "waxed_weathered_chiseled_copper" + "waxed_oxidized_chiseled_copper" + + + "copper_grate" + "exposed_copper_grate" + "weathered_copper_grate" + "oxidized_copper_grate" + + "waxed_copper_grate" + "waxed_exposed_copper_grate" + "waxed_weathered_copper_grate" + "waxed_oxidized_copper_grate" + + + "copper_bulb" + "exposed_copper_bulb" + "weathered_copper_bulb" + "oxidized_copper_bulb" + + "waxed_copper_bulb" + "waxed_exposed_copper_bulb" + "waxed_weathered_copper_bulb" + "waxed_oxidized_copper_bulb" + + + "copper_door" + "exposed_copper_door" + "weathered_copper_door" + "oxidized_copper_door" + + "waxed_copper_door" + "waxed_exposed_copper_door" + "waxed_weathered_copper_door" + "waxed_oxidized_copper_door" + + + "copper_trapdoor" + "exposed_copper_trapdoor" + "weathered_copper_trapdoor" + "oxidized_copper_trapdoor" + + "waxed_copper_trapdoor" + "waxed_exposed_copper_trapdoor" + "waxed_weathered_copper_trapdoor" + "waxed_oxidized_copper_trapdoor" + ] + mycha_growable [ "sand" "wwizardry:mycelial_sand" @@ -132,6 +232,10 @@ blocks { } items { + snail_food [ + "kelp" + ] + repairs_sculk [ "wwizardry:crystalline_sculk" ] diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java index ba220905..0f39be3d 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/client/FabricClientInitializer.java @@ -3,35 +3,27 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.net.PacketRegistry; import dev.sweetberry.wwizardry.client.WanderingWizardryClient; -import dev.sweetberry.wwizardry.client.content.ClientContentInitializer; import dev.sweetberry.wwizardry.client.content.RenderLayers; import dev.sweetberry.wwizardry.client.content.events.ClientEvents; import dev.sweetberry.wwizardry.client.content.events.ItemTooltipHandler; import dev.sweetberry.wwizardry.client.content.events.PackReloader; -import dev.sweetberry.wwizardry.content.block.sign.ModdedSignBlock; -import dev.sweetberry.wwizardry.content.component.BoatComponent; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; -import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; -import net.minecraft.client.model.BoatModel; -import net.minecraft.client.model.ChestBoatModel; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; -import net.minecraft.client.renderer.blockentity.HangingSignRenderer; -import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackType; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; import java.util.function.Supplier; @@ -39,8 +31,11 @@ public class FabricClientInitializer implements ClientModInitializer { @Override public void onInitializeClient() { WanderingWizardryClient.init(); + ClientEvents.registerBlockEntityRenderers((type, renderer) -> { + BlockEntityRenderers.register(type.get(), renderer); + }); ClientEvents.registerEntityRenderers((type, renderer) -> { - BlockEntityRenderers.register(type.get(), (BlockEntityRendererProvider) renderer); + EntityRendererRegistry.register(type.get(), renderer); }); ClientEvents.registerModelPredicates((item, name, callback) -> { diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java index 2909ddca..635e5074 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java @@ -1,26 +1,15 @@ package dev.sweetberry.wwizardry.neoforge; import dev.sweetberry.wwizardry.WanderingWizardry; -import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.client.WanderingWizardryClient; import dev.sweetberry.wwizardry.client.content.events.ClientEvents; import dev.sweetberry.wwizardry.client.content.events.PackReloader; import dev.sweetberry.wwizardry.compat.terrablender.TerraBlenderInitializer; import dev.sweetberry.wwizardry.content.ContentInitializer; -import dev.sweetberry.wwizardry.content.block.sign.ModdedSignBlock; -import dev.sweetberry.wwizardry.content.component.BoatComponent; -import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.neoforge.component.NeoForgeComponents; import dev.sweetberry.wwizardry.neoforge.networking.NeoForgeNetworking; -import net.minecraft.client.model.BoatModel; -import net.minecraft.client.model.ChestBoatModel; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.blockentity.HangingSignRenderer; -import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.client.renderer.item.ItemProperties; -import net.minecraft.core.RegistryAccess; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.Item; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; @@ -32,8 +21,6 @@ import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent; import net.neoforged.neoforge.registries.RegisterEvent; -import java.util.stream.Collectors; - @Mod("wwizardry") public class NeoForgeInitializer { public NeoForgeInitializer(IEventBus bus, Dist dist) { @@ -56,7 +43,7 @@ public void initClient(IEventBus bus) { callback ); }); - bus.addListener(this::registerBlockEntityRenderers); + bus.addListener(this::registerEntityRenderers); bus.addListener(this::registerEntityLayers); bus.addListener(this::registerClientReloadListeners); WanderingWizardryClient.init(); @@ -79,9 +66,13 @@ public void registerClientReloadListeners(RegisterClientReloadListenersEvent ev) } @SubscribeEvent - public void registerBlockEntityRenderers(EntityRenderersEvent.RegisterRenderers event) { + public void registerEntityRenderers(EntityRenderersEvent.RegisterRenderers event) { + ClientEvents.registerBlockEntityRenderers((type, renderer) -> { + event.registerBlockEntityRenderer(type.get(), renderer); + }); + ClientEvents.registerEntityRenderers((type, renderer) -> { - event.registerBlockEntityRenderer(type.get(), (BlockEntityRendererProvider) renderer); + event.registerEntityRenderer(type.get(), renderer); }); } From ed2dbd91b74b11bf137bd7add24757f8b45e6455 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 4 May 2024 14:33:20 -0500 Subject: [PATCH 15/46] Replace CCAPI with fabric data attachments --- .../wwizardry/api/component/Component.java | 10 +-- .../wwizardry/content/ContentInitializer.java | 4 + .../content/component/BoatComponent.java | 30 +++++-- .../component/ComponentInitializer.java | 4 +- .../content/component/VoidBagComponent.java | 36 +++++--- .../content/entity/EntityInitializer.java | 3 - .../wwizardry/content/entity/Snail.java | 6 ++ .../content/net/NetworkingInitializer.java | 2 + .../net/packet/ComponentSyncPacket.java | 85 +++++++++++++++++++ .../content/potions/PotionInitializer.java | 19 +++++ .../wwizardry/mixin/Mixin_LivingEntity.java | 24 ++++++ .../mixin/client/Mixin_ClientLevel.java | 26 ++++++ .../src/main/resources/wwizardry.mixins.json | 2 + .../wwizardry/fabric/FabricInitializer.java | 15 ++-- .../compat/cardinal/CardinalInitializer.java | 44 ---------- .../component/BoatCardinalComponent.java | 10 --- .../cardinal/component/ProxyComponent.java | 24 ------ .../component/VoidBagCardinalComponent.java | 16 ---- .../fabric/component/FabricComponents.java | 37 ++++++++ fabric/src/main/resources/fabric.mod.json | 3 - gradle.properties | 4 +- .../wwizardry/neoforge/NeoForgeEvents.java | 41 +-------- .../component/NeoForgeComponents.java | 2 +- .../neoforge/component/ProxyComponent.java | 9 +- .../networking/ComponentSyncPayload.java | 69 --------------- .../networking/NeoForgeNetworking.java | 13 --- 26 files changed, 273 insertions(+), 265 deletions(-) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/net/packet/ComponentSyncPacket.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/potions/PotionInitializer.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_LivingEntity.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_ClientLevel.java delete mode 100644 fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/CardinalInitializer.java delete mode 100644 fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/BoatCardinalComponent.java delete mode 100644 fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java delete mode 100644 fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/VoidBagCardinalComponent.java create mode 100644 fabric/src/main/java/dev/sweetberry/wwizardry/fabric/component/FabricComponents.java delete mode 100644 neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ComponentSyncPayload.java diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/component/Component.java b/common/src/main/java/dev/sweetberry/wwizardry/api/component/Component.java index fc7ecd96..92617617 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/component/Component.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/api/component/Component.java @@ -1,9 +1,9 @@ package dev.sweetberry.wwizardry.api.component; -import net.minecraft.core.HolderLookup; -import net.minecraft.nbt.CompoundTag; +import com.mojang.serialization.Codec; -public interface Component { - void fromNbt(CompoundTag tag, HolderLookup.Provider lookup); - void toNbt(CompoundTag tag, HolderLookup.Provider lookup); +public interface Component> { + Codec codec(); + + void copyFrom(TSelf other); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index 78890216..4ed3afd6 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -10,6 +10,7 @@ import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.net.NetworkingInitializer; import dev.sweetberry.wwizardry.content.painting.PaintingInitializer; +import dev.sweetberry.wwizardry.content.potions.PotionInitializer; import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; @@ -20,6 +21,8 @@ import net.minecraft.world.entity.decoration.PaintingVariant; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionBrewing; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.block.Block; @@ -47,5 +50,6 @@ public static void listenToAll(RegistryCallback listener) { WorldgenInitializer.STRUCTURE_PROCESSORS.listen((RegistryCallback>) listener); SoundInitializer.SOUNDS.listen((RegistryCallback) listener); EntityInitializer.ENTITIES.listen((RegistryCallback>) listener); + PotionInitializer.POTIONS.listen((RegistryCallback) listener); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/component/BoatComponent.java b/common/src/main/java/dev/sweetberry/wwizardry/content/component/BoatComponent.java index 2e938066..bd53d222 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/component/BoatComponent.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/component/BoatComponent.java @@ -1,36 +1,50 @@ package dev.sweetberry.wwizardry.content.component; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.component.Component; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.vehicle.Boat; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.Map; +import java.util.Optional; -public class BoatComponent implements Component { +public class BoatComponent implements Component { public static Map BOATS = new HashMap<>(); + public static final Codec CODEC = RecordCodecBuilder.create(inst -> inst + .group( + ResourceLocation.CODEC.optionalFieldOf("id").forGetter(BoatComponent::type) + ).apply(inst, BoatComponent::new) + ); @Nullable public ResourceLocation type; + public BoatComponent(Optional type) { + this.type = type.orElse(null); + } + public BoatComponent() {} + public Optional type() { + return type == null ? Optional.empty() : Optional.of(type); + } + @Override - public void fromNbt(CompoundTag tag, HolderLookup.Provider lookup) { - type = tag.contains("id") - ? new ResourceLocation(tag.getString("id")) - : null; + public Codec codec() { + return CODEC; } @Override - public void toNbt(CompoundTag tag, HolderLookup.Provider lookup) { - if (type != null) - tag.putString("id", type.toString()); + public void copyFrom(BoatComponent other) { + type = other.type; } public record BoatType(Lazy planks, Lazy boat, Lazy chest) {} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/component/ComponentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/component/ComponentInitializer.java index 31043a3e..1c8417e4 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/component/ComponentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/component/ComponentInitializer.java @@ -16,12 +16,12 @@ public static void init() { BoatComponent.BOATS.put(WanderingWizardry.id("denia"), new BoatComponent.BoatType(DatagenInitializer.DENIA_WOOD.PLANKS, DatagenInitializer.DENIA_WOOD.BOAT_ITEM, DatagenInitializer.DENIA_WOOD.BOAT_CHEST_ITEM)); } - public static T getComponent(ResourceLocation id, Entity entity) { + public static > T getComponent(ResourceLocation id, Entity entity) { return getter.get(id, entity); } @FunctionalInterface public interface ComponentGetter { - T get(ResourceLocation id, Entity entity); + > T get(ResourceLocation id, Entity entity); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/component/VoidBagComponent.java b/common/src/main/java/dev/sweetberry/wwizardry/content/component/VoidBagComponent.java index 5de405d2..c50ed744 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/component/VoidBagComponent.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/component/VoidBagComponent.java @@ -19,28 +19,36 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.ChestBlockEntity; -public class VoidBagComponent implements Component, Container { +import java.util.List; + +public class VoidBagComponent implements Component, Container { + public static final Codec CODEC = RecordCodecBuilder.create(inst -> inst + .group( + Codec.BOOL.fieldOf("locked").forGetter(it -> it.locked), + ItemStack.OPTIONAL_CODEC.sizeLimitedListOf(27).fieldOf("items").forGetter(it -> it.inventory) + ).apply(inst, VoidBagComponent::new) + ); + public NonNullList inventory = NonNullList.withSize(27, ItemStack.EMPTY); public boolean locked = false; + public VoidBagComponent(boolean locked, List inventory) { + this.locked = locked; + for (int i = 0; i < 27; i++) + this.inventory.set(i, inventory.get(i)); + } + public VoidBagComponent() {} - @Override - public void fromNbt(CompoundTag tag, HolderLookup.Provider lookup) { - inventory = NonNullList.withSize(27, ItemStack.EMPTY); - ContainerHelper.loadAllItems(tag, inventory, lookup); - locked = tag.getBoolean("Locked"); + @Override + public Codec codec() { + return CODEC; } @Override - public void toNbt(CompoundTag tag, HolderLookup.Provider lookup) { - ContainerHelper.saveAllItems(tag, inventory, lookup); - tag.putBoolean("Locked", locked); -// ItemStack previewStack = ItemInitializer.VOID_BAG.get().getDefaultInstance(); -// previewStack.getOrCreateTag().putBoolean("Locked", locked); -// CompoundTag previewCompound = new CompoundTag(); -// previewStack.save(previewCompound); -// tag.put("PreviewStack", previewCompound); + public void copyFrom(VoidBagComponent other) { + locked = other.locked; + inventory = other.inventory; } @Override diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java index 49f70aa4..30ca0460 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java @@ -11,7 +11,6 @@ import net.minecraft.world.phys.Vec3; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.function.Supplier; @@ -31,8 +30,6 @@ public class EntityInitializer { Snail::createAttributes ); - public static void init() {} - public static Lazy> registerEntity(String id, Supplier> entity, Supplier supplier) { var value = EntityInitializer.entities().register(WanderingWizardry.id(id), entity); SUPPLIER_DATA.add(new AttributeSupplierData((Supplier>) (Object) value, supplier.get())); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java index c6b6af54..9fb266e0 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java @@ -25,6 +25,7 @@ import net.minecraft.world.entity.animal.Pig; import net.minecraft.world.entity.animal.armadillo.Armadillo; import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.monster.Spider; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -50,6 +51,11 @@ protected Snail(EntityType type, Level level) { setVariant(Variant.randomNonSlug(level().random)); } + @Override + public boolean onClimbable() { + return true; + } + @Override protected void registerGoals() { goalSelector.addGoal(4, new TemptGoal(this, 1, (s) -> s.is(FOOD), false)); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/net/NetworkingInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/net/NetworkingInitializer.java index 50fe2073..9a236538 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/net/NetworkingInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/net/NetworkingInitializer.java @@ -2,9 +2,11 @@ import dev.sweetberry.wwizardry.api.net.PacketRegistry; import dev.sweetberry.wwizardry.content.net.packet.AltarCraftPacket; +import dev.sweetberry.wwizardry.content.net.packet.ComponentSyncPacket; public class NetworkingInitializer { public static void init() { PacketRegistry.register(AltarCraftPacket.TYPE, AltarCraftPacket.CODEC); + PacketRegistry.register(ComponentSyncPacket.TYPE, ComponentSyncPacket.CODEC); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/net/packet/ComponentSyncPacket.java b/common/src/main/java/dev/sweetberry/wwizardry/content/net/packet/ComponentSyncPacket.java new file mode 100644 index 00000000..37411fa8 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/net/packet/ComponentSyncPacket.java @@ -0,0 +1,85 @@ +package dev.sweetberry.wwizardry.content.net.packet; + +import com.mojang.datafixers.util.Pair; +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.api.component.Component; +import dev.sweetberry.wwizardry.api.net.CustomPacket; +import dev.sweetberry.wwizardry.api.net.PacketRegistry; +import dev.sweetberry.wwizardry.content.component.BoatComponent; +import dev.sweetberry.wwizardry.content.component.ComponentInitializer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; + +public class ComponentSyncPacket implements CustomPacket { + public static final ResourceLocation ID = WanderingWizardry.id("component_sync"); + public static final Type TYPE = new Type<>(ID); + public static final StreamCodec CODEC = StreamCodec.of( + ComponentSyncPacket::writeTo, ComponentSyncPacket::readFrom + ); + public ResourceLocation id; + public int entity; + public Tag component; + + public ComponentSyncPacket(ResourceLocation id, int entity, Tag component) { + this.id = id; + this.entity = entity; + this.component = component; + } + + public static void writeTo(FriendlyByteBuf buf, ComponentSyncPacket packet) { + buf.writeResourceLocation(packet.id); + buf.writeInt(packet.entity); + buf.writeNbt(packet.component); + } + + public static ComponentSyncPacket readFrom(FriendlyByteBuf buf) { + var id = buf.readResourceLocation(); + var entity = buf.readInt(); + var component = buf.readNbt(); + return new ComponentSyncPacket(id, entity, component); + } + + @Override + public void onClientReceive(Minecraft client, ClientLevel world, AbstractClientPlayer receiver) { + onClientReceiveGeneric(client, world, receiver); + } + + private > void onClientReceiveGeneric(Minecraft client, ClientLevel world, AbstractClientPlayer receiver) { + // please java + var component = ComponentInitializer.getComponent(id, world.getEntity(entity)); + var codec = component.codec(); + codec.decode(NbtOps.INSTANCE, this.component).result().map(Pair::getFirst).ifPresent(component::copyFrom); + } + + @Override + public void onServerReceive(MinecraftServer server, ServerLevel world, ServerPlayer sender) { + onServerReceiveGeneric(server, world, sender); + } + + private > void onServerReceiveGeneric(MinecraftServer server, ServerLevel world, ServerPlayer sender) { + var component = ComponentInitializer.getComponent(id, world.getEntity(entity)); + this.component = component.codec().encode(component, NbtOps.INSTANCE, this.component).result().orElse(this.component); + PacketRegistry.sendToClient(sender, this); + } + + @Override + public ResourceLocation getId() { + return ID; + } + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/potions/PotionInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/potions/PotionInitializer.java new file mode 100644 index 00000000..8ed24468 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/potions/PotionInitializer.java @@ -0,0 +1,19 @@ +package dev.sweetberry.wwizardry.content.potions; + +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.api.Lazy; +import dev.sweetberry.wwizardry.api.registry.RegistryContext; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.item.alchemy.Potion; + +import java.util.function.Supplier; + +public class PotionInitializer { + public static final RegistryContext POTIONS = new RegistryContext<>(BuiltInRegistries.POTION); + + public static final Lazy WALL_GLUE = register("wall_glue", Potion::new); + + public static Lazy register(String id, Supplier potion) { + return POTIONS.register(WanderingWizardry.id(id), potion); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_LivingEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_LivingEntity.java new file mode 100644 index 00000000..ca94a86b --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_LivingEntity.java @@ -0,0 +1,24 @@ +package dev.sweetberry.wwizardry.mixin; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(LivingEntity.class) +public class Mixin_LivingEntity { + @WrapOperation( + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/level/block/state/BlockState;is(Lnet/minecraft/tags/TagKey;)Z" + ), + method = "onClimbable" + ) + private boolean hasEffect(BlockState instance, TagKey tagKey, Operation original) { + return original.call(instance, tagKey); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_ClientLevel.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_ClientLevel.java new file mode 100644 index 00000000..8a2cb09a --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_ClientLevel.java @@ -0,0 +1,26 @@ +package dev.sweetberry.wwizardry.mixin.client; + +import dev.sweetberry.wwizardry.api.net.PacketRegistry; +import dev.sweetberry.wwizardry.content.component.ComponentInitializer; +import dev.sweetberry.wwizardry.content.net.packet.ComponentSyncPacket; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.vehicle.Boat; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ClientLevel.class) +public class Mixin_ClientLevel { + @Inject( + at = @At("RETURN"), + method = "addEntity" + ) + private void askForComponent(Entity entity, CallbackInfo ci) { + if (!(entity instanceof Boat)) + return; + PacketRegistry.sendToServer(new ComponentSyncPacket(ComponentInitializer.BOAT, entity.getId(), new CompoundTag())); + } +} diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index e430de2a..95f19bad 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -15,6 +15,7 @@ "Mixin_DefaultAttributes", "Mixin_Item", "Mixin_ItemEntity", + "Mixin_LivingEntity", "Mixin_MappedRegistry", "Mixin_MultifaceSpreader_DefaultSpreaderConfig", "Mixin_Player", @@ -27,6 +28,7 @@ "defaultRequire": 1 }, "client": [ + "client.Mixin_ClientLevel", "client.Mixin_ItemInHandRenderer", "client.Mixin_Model", "client.Mixin_SignRenderer", diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java index c1236fbe..c6ea45c8 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java @@ -3,31 +3,34 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.component.Component; import dev.sweetberry.wwizardry.api.net.PacketRegistry; -import dev.sweetberry.wwizardry.fabric.compat.cardinal.CardinalInitializer; +import dev.sweetberry.wwizardry.client.content.events.ClientEvents; import dev.sweetberry.wwizardry.content.ContentInitializer; import dev.sweetberry.wwizardry.content.component.ComponentInitializer; import dev.sweetberry.wwizardry.content.events.UseBlockHandler; +import dev.sweetberry.wwizardry.content.net.packet.ComponentSyncPacket; import dev.sweetberry.wwizardry.content.trades.TradeInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; +import dev.sweetberry.wwizardry.fabric.component.FabricComponents; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.biome.v1.BiomeModifications; import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; import net.fabricmc.fabric.api.biome.v1.ModificationPhase; import net.fabricmc.fabric.api.event.player.UseBlockCallback; +import net.fabricmc.fabric.api.networking.v1.EntityTrackingEvents; import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; import java.util.List; public class FabricInitializer implements ModInitializer { @Override public void onInitialize() { - ComponentInitializer.getter = FabricInitializer::getComponent; + FabricComponents.init(); + + ComponentInitializer.getter = FabricComponents::getComponent; WanderingWizardry.modLoadedCheck = FabricLoader.getInstance()::isModLoaded; ContentInitializer.listenToAll(((registry, id, item) -> { @@ -71,8 +74,4 @@ private static void addWanderingTradesFor(int level) { offers -> offers.addAll(List.of(TradeInitializer.WANDERING_TRADER_OFFERS[level-1])) ); } - - public static T getComponent(ResourceLocation id, Entity entity) { - return (T) entity.getComponent(CardinalInitializer.COMPONENTS.get(id)).baseComponent; - } } diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/CardinalInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/CardinalInitializer.java deleted file mode 100644 index 214cec88..00000000 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/CardinalInitializer.java +++ /dev/null @@ -1,44 +0,0 @@ -package dev.sweetberry.wwizardry.fabric.compat.cardinal; - -import org.ladysnake.cca.api.v3.component.ComponentKey; -import org.ladysnake.cca.api.v3.component.ComponentRegistryV3; -import org.ladysnake.cca.api.v3.entity.EntityComponentFactoryRegistry; -import org.ladysnake.cca.api.v3.entity.EntityComponentInitializer; -import dev.sweetberry.wwizardry.fabric.compat.cardinal.component.BoatCardinalComponent; -import dev.sweetberry.wwizardry.fabric.compat.cardinal.component.ProxyComponent; -import dev.sweetberry.wwizardry.fabric.compat.cardinal.component.VoidBagCardinalComponent; -import dev.sweetberry.wwizardry.content.component.ComponentInitializer; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.vehicle.Boat; - -import java.util.HashMap; -import java.util.Map; - -public class CardinalInitializer implements EntityComponentInitializer { - public static final Map>> COMPONENTS = new HashMap<>(); - public static final ComponentKey VOID_BAG = createComponent( - ComponentInitializer.VOID_BAG, - VoidBagCardinalComponent.class - ); - - public static final ComponentKey BOAT = createComponent( - ComponentInitializer.BOAT, - BoatCardinalComponent.class - ); - - @Override - public void registerEntityComponentFactories(EntityComponentFactoryRegistry registry) { - registry.registerForPlayers(VOID_BAG, VoidBagCardinalComponent::new); - registry.registerFor(Boat.class, BOAT, BoatCardinalComponent::new); - } - - public static > ComponentKey createComponent(ResourceLocation id, Class clazz) { - var key = ComponentRegistryV3.INSTANCE - .getOrCreate( - id, - clazz - ); - COMPONENTS.put(id, (ComponentKey>) key); - return key; - } -} diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/BoatCardinalComponent.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/BoatCardinalComponent.java deleted file mode 100644 index 6bba7ae1..00000000 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/BoatCardinalComponent.java +++ /dev/null @@ -1,10 +0,0 @@ -package dev.sweetberry.wwizardry.fabric.compat.cardinal.component; - -import dev.sweetberry.wwizardry.content.component.BoatComponent; -import net.minecraft.world.entity.vehicle.Boat; - -public class BoatCardinalComponent extends ProxyComponent { - public BoatCardinalComponent(Boat boat) { - super(new BoatComponent()); - } -} diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java deleted file mode 100644 index 3e97e6ed..00000000 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/ProxyComponent.java +++ /dev/null @@ -1,24 +0,0 @@ -package dev.sweetberry.wwizardry.fabric.compat.cardinal.component; - -import dev.sweetberry.wwizardry.api.component.Component; -import net.minecraft.core.HolderLookup; -import net.minecraft.nbt.CompoundTag; -import org.ladysnake.cca.api.v3.component.sync.AutoSyncedComponent; - -public class ProxyComponent implements AutoSyncedComponent { - public T baseComponent; - - public ProxyComponent(T base) { - baseComponent = base; - } - - @Override - public void readFromNbt(CompoundTag tag, HolderLookup.Provider lookup) { - baseComponent.fromNbt(tag, lookup); - } - - @Override - public void writeToNbt(CompoundTag tag, HolderLookup.Provider lookup) { - baseComponent.toNbt(tag, lookup); - } -} diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/VoidBagCardinalComponent.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/VoidBagCardinalComponent.java deleted file mode 100644 index edd17db5..00000000 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/compat/cardinal/component/VoidBagCardinalComponent.java +++ /dev/null @@ -1,16 +0,0 @@ -package dev.sweetberry.wwizardry.fabric.compat.cardinal.component; - -import dev.sweetberry.wwizardry.content.component.VoidBagComponent; -import net.minecraft.world.entity.player.Player; -import org.ladysnake.cca.api.v3.entity.RespawnableComponent; - -public class VoidBagCardinalComponent extends ProxyComponent implements RespawnableComponent { - public VoidBagCardinalComponent(Player player) { - super(new VoidBagComponent()); - } - - @Override - public boolean shouldCopyForRespawn(boolean lossless, boolean keepInventory, boolean sameCharacter) { - return true; - } -} diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/component/FabricComponents.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/component/FabricComponents.java new file mode 100644 index 00000000..c666bafc --- /dev/null +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/component/FabricComponents.java @@ -0,0 +1,37 @@ +package dev.sweetberry.wwizardry.fabric.component; + +import com.mojang.serialization.Codec; +import dev.sweetberry.wwizardry.api.component.Component; +import dev.sweetberry.wwizardry.content.component.BoatComponent; +import dev.sweetberry.wwizardry.content.component.ComponentInitializer; +import dev.sweetberry.wwizardry.content.component.VoidBagComponent; +import net.fabricmc.fabric.api.attachment.v1.AttachmentRegistry; +import net.fabricmc.fabric.api.attachment.v1.AttachmentType; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Supplier; + +public class FabricComponents { + private static final Map> ATTACHMENTS = new HashMap<>(); + private static final Map> INIT = new HashMap<>(); + public static final AttachmentType BOAT = register(ComponentInitializer.BOAT, BoatComponent.CODEC, BoatComponent::new); + public static final AttachmentType VOID_BAG = register(ComponentInitializer.VOID_BAG, VoidBagComponent.CODEC, VoidBagComponent::new); + + public static void init() {} + + public static > AttachmentType register(ResourceLocation id, Codec codec, Supplier init) { + var type = AttachmentRegistry.createPersistent(id, codec); + ATTACHMENTS.put(id, (AttachmentType) (Object) type); + INIT.put(id, (Supplier) (Object) init); + return type; + } + + public static > T getComponent(ResourceLocation id, Entity entity) { + var type = (AttachmentType) (Object) ATTACHMENTS.get(id); + var init = (Supplier) (Object) INIT.get(id); + return entity.getAttachedOrCreate(type, init); + } +} diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index cac243fc..12386ee8 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -33,9 +33,6 @@ "terrablender": [ "dev.sweetberry.wwizardry.fabric.compat.terrablender.FabricTerraBlenderInitializer" ], - "cardinal-components": [ - "dev.sweetberry.wwizardry.fabric.compat.cardinal.CardinalInitializer" - ], "emi": [ "dev.sweetberry.wwizardry.compat.emi.EmiInitializer" ] diff --git a/gradle.properties b/gradle.properties index f61fe80f..a3a64548 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.parallel = true org.gradle.daemon=false # Mod Properties -version = 1.0.11 -classification = +version = 1.1.0 +classification = alpha.1 maven_group = dev.sweetberry archives_base_name = wwizardry diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java index 314ff040..240c3d87 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java @@ -1,56 +1,35 @@ package dev.sweetberry.wwizardry.neoforge; import com.mojang.datafixers.util.Either; -import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.api.net.PacketRegistry; import dev.sweetberry.wwizardry.client.WanderingWizardryClient; import dev.sweetberry.wwizardry.client.content.events.ItemTooltipHandler; -import dev.sweetberry.wwizardry.client.content.events.ModelPredicates; -import dev.sweetberry.wwizardry.client.content.events.PackReloader; import dev.sweetberry.wwizardry.content.events.UseBlockHandler; +import dev.sweetberry.wwizardry.content.net.packet.ComponentSyncPacket; import dev.sweetberry.wwizardry.neoforge.component.NeoForgeComponents; -import dev.sweetberry.wwizardry.neoforge.networking.ComponentSyncPayload; -import dev.sweetberry.wwizardry.neoforge.networking.NeoForgeNetworking; -import net.minecraft.client.Minecraft; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.FormattedText; -import net.minecraft.server.packs.resources.ResourceManagerReloadListener; import net.minecraft.world.InteractionResult; import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.TooltipFlag; -import net.neoforged.bus.api.Event; import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.neoforge.client.event.EntityRenderersEvent; -import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent; import net.neoforged.neoforge.client.event.RenderTooltipEvent; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.event.TickEvent; -import net.neoforged.neoforge.event.entity.EntityEvent; import net.neoforged.neoforge.event.entity.EntityJoinLevelEvent; -import net.neoforged.neoforge.event.entity.living.BabyEntitySpawnEvent; import net.neoforged.neoforge.event.entity.player.UseItemOnBlockEvent; import net.neoforged.neoforge.network.PacketDistributor; -import javax.tools.Tool; import java.util.ArrayList; -import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; public class NeoForgeEvents { - public static List addedEntities = new ArrayList<>(); - public static void init() { NeoForge.EVENT_BUS.register(NeoForgeEvents.class); } - @SubscribeEvent - public static void onJoinLevel(EntityJoinLevelEvent event) { - if (!event.getLevel().isClientSide) - return; - addedEntities.add(event.getEntity()); - } - @SubscribeEvent public static void onTooltip(RenderTooltipEvent.GatherComponents event) { var lines = event.getTooltipElements(); @@ -64,20 +43,6 @@ public static void onTooltip(RenderTooltipEvent.GatherComponents event) { ); } - @SubscribeEvent - public static void onClientTick(TickEvent.ClientTickEvent event) { - if (event.phase == TickEvent.Phase.END) - return; - WanderingWizardryClient.tickCounter++; - for (var entity : addedEntities) { - NeoForgeComponents.COMPONENTS.forEach((key, it) -> { - var data = entity.getData(it); - PacketDistributor.sendToServer(new ComponentSyncPayload(entity, key, data.component)); - }); - } - addedEntities.clear(); - } - @SubscribeEvent public static void onUseOnBlock(UseItemOnBlockEvent event) { var result = UseBlockHandler.onBlockUse( diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/NeoForgeComponents.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/NeoForgeComponents.java index 12e2482f..2235dfa1 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/NeoForgeComponents.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/NeoForgeComponents.java @@ -31,7 +31,7 @@ public static void init(IEventBus bus) { ATTACHMENT_TYPES.register(bus); } - public static T get(ResourceLocation id, Entity entity) { + public static > T get(ResourceLocation id, Entity entity) { return (T) entity.getData(COMPONENTS.get(id)).component; } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java index ccbae433..55ae17d3 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java @@ -3,11 +3,12 @@ import dev.sweetberry.wwizardry.api.component.Component; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.neoforged.neoforge.common.util.INBTSerializable; public class ProxyComponent implements INBTSerializable { - public final T component; + public T component; public ProxyComponent(T component) { this.component = component; @@ -16,13 +17,11 @@ public ProxyComponent(T component) { @Override public Tag serializeNBT(HolderLookup.Provider provider) { var tag = new CompoundTag(); - component.toNbt(tag, provider); - return tag; + return (Tag) component.codec().encode(component, NbtOps.INSTANCE, tag).result().orElse(tag); } @Override public void deserializeNBT(HolderLookup.Provider provider, Tag nbt) { - if (nbt instanceof CompoundTag tag) - component.fromNbt(tag, provider); + component = (T) component.codec().decode(NbtOps.INSTANCE, nbt).result().orElse(component); } } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ComponentSyncPayload.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ComponentSyncPayload.java deleted file mode 100644 index 1ce0cc24..00000000 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/ComponentSyncPayload.java +++ /dev/null @@ -1,69 +0,0 @@ -package dev.sweetberry.wwizardry.neoforge.networking; - -import dev.sweetberry.wwizardry.WanderingWizardry; -import dev.sweetberry.wwizardry.api.component.Component; -import dev.sweetberry.wwizardry.content.component.ComponentInitializer; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.Entity; -import net.neoforged.neoforge.network.PacketDistributor; - -public class ComponentSyncPayload implements CustomPacketPayload { - public static final ResourceLocation ID = WanderingWizardry.id("sync"); - public static final Type TYPE = new Type<>(ID); - public static final StreamCodec CODEC = StreamCodec.of( - ComponentSyncPayload::writeTo, ComponentSyncPayload::new - ); - private int entityId; - private ResourceLocation id; - private CompoundTag component; - - public ComponentSyncPayload(Entity entity, ResourceLocation id, Component component) { - entityId = entity.getId(); - this.id = id; - var tag = new CompoundTag(); - component.toNbt(tag, entity.level().registryAccess()); - this.component = tag; - } - - public ComponentSyncPayload(FriendlyByteBuf buf) { - entityId = buf.readInt(); - id = buf.readResourceLocation(); - component = buf.readNbt(); - } - - public static void writeTo(FriendlyByteBuf buf, ComponentSyncPayload packet) { - buf.writeInt(packet.entityId); - buf.writeResourceLocation(packet.id); - buf.writeNbt(packet.component); - } - - public static void onClientReceive(ComponentSyncPayload payload, ClientLevel level) { - var entity = level.getEntity(payload.entityId); - if (entity == null) - return; - WanderingWizardry.LOGGER.info("client: " + payload.entityId + " " + entity); - var component = ComponentInitializer.getComponent(payload.id, entity); - component.fromNbt(payload.component, level.registryAccess()); - } - - public static void onServerReceive(ComponentSyncPayload payload, ServerPlayer player) { - var entity = player.serverLevel().getEntity(payload.entityId); - if (entity == null) - return; - WanderingWizardry.LOGGER.info("server: " + payload.entityId + " " + entity); - var componenet = ComponentInitializer.getComponent(payload.id, entity); - var out = new ComponentSyncPayload(entity, payload.id, componenet); - PacketDistributor.sendToPlayer(player, out); - } - - @Override - public Type type() { - return TYPE; - } -} diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/NeoForgeNetworking.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/NeoForgeNetworking.java index 933c5177..f421b0a1 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/NeoForgeNetworking.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/networking/NeoForgeNetworking.java @@ -32,19 +32,6 @@ public static void register(RegisterPayloadHandlersEvent event) { }); }); - registrar.playBidirectional( - ComponentSyncPayload.TYPE, - ComponentSyncPayload.CODEC, - (packet, context) -> { - if (context instanceof ClientPayloadContext) { - var client = Minecraft.getInstance(); - ComponentSyncPayload.onClientReceive(packet, client.level); - } else { - ComponentSyncPayload.onServerReceive(packet, (ServerPlayer) context.player()); - } - } - ); - PacketRegistry.SEND_TO_SERVER.listen(PacketDistributor::sendToServer); PacketRegistry.SEND_TO_CLIENT.listen(PacketDistributor::sendToPlayer); From 733d65dd2693f873c62076c6b46b0ee18f87321e Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 4 May 2024 14:42:47 -0500 Subject: [PATCH 16/46] Make snails spawn and add mycha variant --- .../worldgen/biome/forgotten_fields.json | 2 +- .../worldgen/biome/fungal_forest.json | 2 +- .../wwizardry/content/entity/Snail.java | 25 +++++------------- .../wwizardry/textures/entity/snail/mycha.png | Bin 0 -> 567 bytes data/world/biome/forgotten_fields.fennec | 14 +++------- data/world/biome/fungal_forest.fennec | 8 +++--- 6 files changed, 16 insertions(+), 35 deletions(-) create mode 100644 common/src/main/resources/assets/wwizardry/textures/entity/snail/mycha.png diff --git a/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json b/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json index 6545a265..7b40fc8a 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json @@ -1 +1 @@ -{"temperature":0.55,"downfall":0.8,"has_precipitation":true,"effects":{"sky_color":7907327,"fog_color":12638463,"water_color":4159204,"water_fog_color":329011,"grass_color":2532189,"foliage_color":3585102,"mood_sound":{"sound":"ambient.cave","tick_delay":6000,"block_search_extent":8,"offset":2}},"spawn_costs":{},"carvers":{"air":["cave","cave_extra_underground","canyon"]},"features":[[],["lake_lava_underground","lake_lava_surface"],["amethyst_geode"],["monster_room","monster_room_deep"],[],[],["ore_dirt","ore_gravel","ore_granite_upper","ore_granite_lower","ore_diorite_upper","ore_diorite_lower","ore_andesite_upper","ore_andesite_lower","ore_tuff","ore_coal_upper","ore_coal_lower","ore_iron_upper","ore_iron_middle","ore_iron_small","ore_gold","ore_gold_lower","ore_redstone","ore_redstone_lower","ore_diamond","ore_diamond_large","ore_diamond_buried","ore_lapis","ore_lapis_buried","ore_copper","underwater_magma","disk_sand","disk_clay","disk_gravel","wwizardry:ore/rose_quartz_biome"],["sculk_vein","wwizardry:rare_sculk_patch","wwizardry:rare_moss_patch"],["spring_water","spring_lava"],["wwizardry:tree/denia","wwizardry:flower_patch","glow_lichen","patch_tall_grass_2","flower_plains","patch_grass_plain","brown_mushroom_normal","red_mushroom_normal","patch_sugar_cane","patch_pumpkin"],["freeze_top_layer"]],"spawners":{"ambient":[{"type":"bat","weight":10,"minCount":8,"maxCount":8}],"axolotls":[],"creature":[{"type":"sheep","weight":12,"minCount":4,"maxCount":4},{"type":"pig","weight":10,"minCount":4,"maxCount":4},{"type":"chicken","weight":10,"minCount":4,"maxCount":4},{"type":"cow","weight":8,"minCount":4,"maxCount":4},{"type":"horse","weight":5,"minCount":2,"maxCount":6},{"type":"donkey","weight":1,"minCount":1,"maxCount":3}],"misc":[],"monster":[{"type":"spider","weight":100,"minCount":4,"maxCount":4},{"type":"zombie","weight":95,"minCount":4,"maxCount":4},{"type":"zombie_villager","weight":5,"minCount":1,"maxCount":1},{"type":"skeleton","weight":100,"minCount":4,"maxCount":4},{"type":"creeper","weight":100,"minCount":4,"maxCount":4},{"type":"slime","weight":100,"minCount":4,"maxCount":4},{"type":"enderman","weight":10,"minCount":1,"maxCount":4},{"type":"witch","weight":5,"minCount":1,"maxCount":1}],"underground_water_creature":[{"type":"glow_squid","weight":10,"minCount":4,"maxCount":6}],"water_ambient":[],"water_creature":[]}} \ No newline at end of file +{"temperature":0.55,"downfall":0.8,"has_precipitation":true,"effects":{"sky_color":7907327,"fog_color":12638463,"water_color":4159204,"water_fog_color":329011,"grass_color":2532189,"foliage_color":3585102,"mood_sound":{"sound":"ambient.cave","tick_delay":6000,"block_search_extent":8,"offset":2}},"spawn_costs":{},"carvers":{"air":["cave","cave_extra_underground","canyon"]},"features":[[],["lake_lava_underground","lake_lava_surface"],["amethyst_geode"],["monster_room","monster_room_deep"],[],[],["ore_dirt","ore_gravel","ore_granite_upper","ore_granite_lower","ore_diorite_upper","ore_diorite_lower","ore_andesite_upper","ore_andesite_lower","ore_tuff","ore_coal_upper","ore_coal_lower","ore_iron_upper","ore_iron_middle","ore_iron_small","ore_gold","ore_gold_lower","ore_redstone","ore_redstone_lower","ore_diamond","ore_diamond_large","ore_diamond_buried","ore_lapis","ore_lapis_buried","ore_copper","underwater_magma","disk_sand","disk_clay","disk_gravel","wwizardry:ore/rose_quartz_biome"],["sculk_vein","wwizardry:rare_sculk_patch","wwizardry:rare_moss_patch"],["spring_water","spring_lava"],["wwizardry:tree/denia","wwizardry:flower_patch","glow_lichen","patch_tall_grass_2","flower_plains","patch_grass_plain","brown_mushroom_normal","red_mushroom_normal","patch_sugar_cane","patch_pumpkin"],["freeze_top_layer"]],"spawners":{"ambient":[{"type":"bat","weight":10,"minCount":8,"maxCount":8}],"axolotls":[],"creature":[{"type":"sheep","weight":12,"minCount":4,"maxCount":4},{"type":"pig","weight":10,"minCount":4,"maxCount":4},{"type":"chicken","weight":10,"minCount":4,"maxCount":4},{"type":"cow","weight":8,"minCount":4,"maxCount":4},{"type":"wwizardry:snail","weight":6,"minCount":4,"maxCount":8}],"misc":[],"monster":[{"type":"spider","weight":100,"minCount":4,"maxCount":4},{"type":"zombie","weight":95,"minCount":4,"maxCount":4},{"type":"zombie_villager","weight":5,"minCount":1,"maxCount":1},{"type":"skeleton","weight":100,"minCount":4,"maxCount":4},{"type":"creeper","weight":100,"minCount":4,"maxCount":4},{"type":"slime","weight":100,"minCount":4,"maxCount":4},{"type":"enderman","weight":10,"minCount":1,"maxCount":4},{"type":"witch","weight":5,"minCount":1,"maxCount":1}],"underground_water_creature":[{"type":"glow_squid","weight":10,"minCount":4,"maxCount":6}],"water_ambient":[],"water_creature":[]}} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json b/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json index 66cf805c..024fab20 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json @@ -1 +1 @@ -{"temperature":2,"downfall":0,"has_precipitation":false,"effects":{"sky_color":5453248,"fog_color":8298215,"water_color":10143220,"water_fog_color":2516631,"grass_color_modifier":"none","mood_sound":{"sound":"ambient.cave","tick_delay":6000,"block_search_extent":8,"offset":2},"music":{"sound":"music.overworld.desert","min_delay":12000,"max_delay":24000,"replace_current_music":false}},"spawners":{"ambient":[{"type":"bat","weight":10,"minCount":8,"maxCount":8}],"axolotls":[],"creature":[{"type":"rabbit","weight":4,"minCount":2,"maxCount":3}],"misc":[],"monster":[{"type":"spider","weight":100,"minCount":4,"maxCount":4},{"type":"zombie","weight":19,"minCount":4,"maxCount":4},{"type":"zombie_villager","weight":1,"minCount":1,"maxCount":1},{"type":"skeleton","weight":100,"minCount":4,"maxCount":4},{"type":"creeper","weight":100,"minCount":4,"maxCount":4},{"type":"slime","weight":100,"minCount":4,"maxCount":4},{"type":"enderman","weight":10,"minCount":1,"maxCount":4},{"type":"witch","weight":5,"minCount":1,"maxCount":1},{"type":"husk","weight":80,"minCount":4,"maxCount":4}],"underground_water_creature":[{"type":"glow_squid","weight":10,"minCount":4,"maxCount":6}],"water_ambient":[],"water_creature":[]},"spawn_costs":{},"carvers":{"air":["cave","cave_extra_underground","canyon"]},"features":[[],["lake_lava_underground","lake_lava_surface"],["amethyst_geode"],["fossil_upper","fossil_lower","monster_room","monster_room_deep"],["desert_well"],[],["ore_dirt","ore_gravel","ore_granite_upper","ore_granite_lower","ore_diorite_upper","ore_diorite_lower","ore_andesite_upper","ore_andesite_lower","ore_tuff","ore_coal_upper","ore_coal_lower","ore_iron_upper","ore_iron_middle","ore_iron_small","ore_gold","ore_gold_lower","ore_redstone","ore_redstone_lower","ore_diamond","ore_diamond_large","ore_diamond_buried","ore_lapis","ore_lapis_buried","ore_copper","underwater_magma","disk_sand","disk_clay","disk_gravel","wwizardry:ore/rose_quartz_biome"],[],["spring_water","spring_lava"],["wwizardry:tree/mycha","wwizardry:mycha_spread","glow_lichen","flower_default","patch_grass_badlands","patch_dead_bush_2","brown_mushroom_normal","red_mushroom_normal","patch_sugar_cane_desert","patch_pumpkin","patch_cactus_desert"],["freeze_top_layer"]]} \ No newline at end of file +{"temperature":2,"downfall":0,"has_precipitation":false,"effects":{"sky_color":5453248,"fog_color":8298215,"water_color":10143220,"water_fog_color":2516631,"grass_color_modifier":"none","mood_sound":{"sound":"ambient.cave","tick_delay":6000,"block_search_extent":8,"offset":2},"music":{"sound":"music.overworld.desert","min_delay":12000,"max_delay":24000,"replace_current_music":false}},"spawners":{"ambient":[{"type":"bat","weight":10,"minCount":8,"maxCount":8}],"axolotls":[],"creature":[{"type":"wwizardry:snail","weight":6,"minCount":4,"maxCount":8}],"misc":[],"monster":[{"type":"spider","weight":100,"minCount":4,"maxCount":4},{"type":"zombie","weight":19,"minCount":4,"maxCount":4},{"type":"zombie_villager","weight":1,"minCount":1,"maxCount":1},{"type":"skeleton","weight":100,"minCount":4,"maxCount":4},{"type":"creeper","weight":100,"minCount":4,"maxCount":4},{"type":"slime","weight":100,"minCount":4,"maxCount":4},{"type":"enderman","weight":10,"minCount":1,"maxCount":4},{"type":"witch","weight":5,"minCount":1,"maxCount":1},{"type":"husk","weight":80,"minCount":4,"maxCount":4}],"underground_water_creature":[{"type":"glow_squid","weight":10,"minCount":4,"maxCount":6}],"water_ambient":[],"water_creature":[]},"spawn_costs":{},"carvers":{"air":["cave","cave_extra_underground","canyon"]},"features":[[],["lake_lava_underground","lake_lava_surface"],["amethyst_geode"],["fossil_upper","fossil_lower","monster_room","monster_room_deep"],["desert_well"],[],["ore_dirt","ore_gravel","ore_granite_upper","ore_granite_lower","ore_diorite_upper","ore_diorite_lower","ore_andesite_upper","ore_andesite_lower","ore_tuff","ore_coal_upper","ore_coal_lower","ore_iron_upper","ore_iron_middle","ore_iron_small","ore_gold","ore_gold_lower","ore_redstone","ore_redstone_lower","ore_diamond","ore_diamond_large","ore_diamond_buried","ore_lapis","ore_lapis_buried","ore_copper","underwater_magma","disk_sand","disk_clay","disk_gravel","wwizardry:ore/rose_quartz_biome"],[],["spring_water","spring_lava"],["wwizardry:tree/mycha","wwizardry:mycha_spread","glow_lichen","flower_default","patch_grass_badlands","patch_dead_bush_2","brown_mushroom_normal","red_mushroom_normal","patch_sugar_cane_desert","patch_pumpkin","patch_cactus_desert"],["freeze_top_layer"]]} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java index 9fb266e0..7bb45402 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java @@ -43,8 +43,6 @@ public class Snail extends Animal implements VariantHolder { private static final EntityDataAccessor VARIANT = SynchedEntityData.defineId(Snail.class, EntityDataSerializers.INT); - public AvoidDamagingBlocksGoal avoidBlocks; - protected Snail(EntityType type, Level level) { super(type, level); @@ -62,9 +60,7 @@ protected void registerGoals() { goalSelector.addGoal(3, new BreedGoal(this, 1)); goalSelector.addGoal(5, new RandomStrollGoal(this, 1)); goalSelector.addGoal(5, new RandomLookAroundGoal(this)); - goalSelector.addGoal(8, new AvoidEntityGoal<>(this, Armadillo.class, 8, 1.6, 1.4)); - avoidBlocks = new AvoidDamagingBlocksGoal(this, 1.6, 8); - goalSelector.addGoal(16, avoidBlocks); + goalSelector.addGoal(3, new AvoidEntityGoal<>(this, Armadillo.class, 8, 1.6, 1.4)); } public static AttributeSupplier createAttributes() { @@ -173,14 +169,16 @@ private int getRawVariant() { public enum Variant implements StringRepresentable { NORMAL, - SLUG, MOSS, - SCULK; + SCULK, + MYCHA, + SLUG; public static final Variant[] NON_SLUG = { NORMAL, MOSS, - SCULK + SCULK, + MYCHA }; @Override @@ -200,15 +198,4 @@ public static Variant randomNonSlug(RandomSource random) { return NON_SLUG[random.nextInt(NON_SLUG.length)]; } } - - public static class AvoidDamagingBlocksGoal extends MoveToBlockGoal { - public AvoidDamagingBlocksGoal(PathfinderMob self, double speed, int searchRange) { - super(self, speed, searchRange); - } - - @Override - protected boolean isValidTarget(LevelReader levelReader, BlockPos pos) { - return !levelReader.getBlockState(pos).is(DAMAGES); - } - } } diff --git a/common/src/main/resources/assets/wwizardry/textures/entity/snail/mycha.png b/common/src/main/resources/assets/wwizardry/textures/entity/snail/mycha.png new file mode 100644 index 0000000000000000000000000000000000000000..31813213c3b681d15e5db68e560838eac71698b1 GIT binary patch literal 567 zcmV-70?7S|P)Q-F`*`-e|pnuU*-LDnh|MIEvpQrV0k%aJub zc>DrxILHAYOJM-!2t|)L>N(*4jz#}LzWVd&GuR$v!$ETBmQy_hV7>(T4g`>+0oeh_ zp+waXz!zsQ2Y`J2`O#C_qya(>09nq;$HVab$#ZZ51hHGg=76=md;gDN>GRbTr3bv4 zA0J!)A7mlOVvqws=>(Pr6iti%-#^_)k>wyyFoGGXD zc-j9Co8K_7t8y|-yn7yOImi)_E2h!M0X)uq|G6x989<@1;NcwxAu$1lcdtIsF9i6* zCV?HmCd$sR2AK6gmV+E&T3t$;5P(_u_w66BuYcYC!N4rU0%m{S`ksN;TaW=J2jYVq z_w)95hL5ZAsNx{To%z-OgRcmKEdnJxkYzCTIX5l_{pFwF{5|?V865X9Gt3sfL$x%) zxI7~3zlyFR*x>z6e;MvvzR!^QS_RAo0Z<|YIbyBOTX>G3W}*Z;0G850G`NI=W<6v! zOpMyuk}B~?sIb8&Kk9(d5Eu=C(GVC7fzc2c4S@j<0RZp*}002ovPDHLk FV1m^p{^$Sz literal 0 HcmV?d00001 diff --git a/data/world/biome/forgotten_fields.fennec b/data/world/biome/forgotten_fields.fennec index c9bfc80a..d9b777ba 100644 --- a/data/world/biome/forgotten_fields.fennec +++ b/data/world/biome/forgotten_fields.fennec @@ -137,16 +137,10 @@ spawners { maxCount = 4 } { - type = "horse" - weight = 5 - minCount = 2 - maxCount = 6 - } - { - type = "donkey" - weight = 1 - minCount = 1 - maxCount = 3 + type = "wwizardry:snail" + weight = 6 + minCount = 4 + maxCount = 8 } ] misc [] diff --git a/data/world/biome/fungal_forest.fennec b/data/world/biome/fungal_forest.fennec index b19e4725..1088323f 100644 --- a/data/world/biome/fungal_forest.fennec +++ b/data/world/biome/fungal_forest.fennec @@ -34,10 +34,10 @@ spawners { axolotls [] creature [ { - type = "rabbit" - weight = 4 - minCount = 2 - maxCount = 3 + type = "wwizardry:snail" + weight = 6 + minCount = 4 + maxCount = 8 } ] misc [] From a9dec722cc1e959d66db0b1cc2666fd206d2bd62 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 4 May 2024 14:43:15 -0500 Subject: [PATCH 17/46] alpha 2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a3a64548..efc875fa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.daemon=false # Mod Properties version = 1.1.0 -classification = alpha.1 +classification = alpha.2 maven_group = dev.sweetberry archives_base_name = wwizardry From 4e6e1c4902edff7516a3a7c78ce9d1f0deb59ad4 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 4 May 2024 18:28:01 -0500 Subject: [PATCH 18/46] Placeable shells and new sounds --- .../wwizardry/blockstates/snail_shell.json | 1 + .../assets/wwizardry/lang/en_us.json | 2 +- .../content/block/BlockInitializer.java | 13 ++++- .../content/block/CandleSconceBlock.java | 2 +- .../wwizardry/content/block/SconceBlock.java | 7 ++- .../wwizardry/content/block/ShellBlock.java | 49 ++++++++++++++++++ .../content/datagen/WallHolderBlockType.java | 2 +- .../wwizardry/content/entity/Snail.java | 13 ++--- .../content/item/ItemInitializer.java | 7 +-- .../content/sounds/SoundInitializer.java | 7 +++ .../wwizardry/models/block/snail_shell.json | 21 ++++++++ .../resources/assets/wwizardry/sounds.json | 42 +++++++++++++++ .../assets/wwizardry/sounds/shell_1.ogg | Bin 0 -> 8039 bytes .../assets/wwizardry/sounds/shell_2.ogg | Bin 0 -> 6791 bytes .../assets/wwizardry/sounds/shell_3.ogg | Bin 0 -> 6526 bytes .../wwizardry/textures/block/snail_shell.png | Bin 0 -> 264 bytes data/blockstate/snail_shell.fennec | 30 +++++++++++ data/lang/en_us.fennec | 11 ++++ 18 files changed, 190 insertions(+), 17 deletions(-) create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/block/ShellBlock.java create mode 100644 common/src/main/resources/assets/wwizardry/models/block/snail_shell.json create mode 100644 common/src/main/resources/assets/wwizardry/sounds/shell_1.ogg create mode 100644 common/src/main/resources/assets/wwizardry/sounds/shell_2.ogg create mode 100644 common/src/main/resources/assets/wwizardry/sounds/shell_3.ogg create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/snail_shell.png create mode 100644 data/blockstate/snail_shell.fennec diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json b/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json new file mode 100644 index 00000000..0bb42678 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json @@ -0,0 +1 @@ +{"variants":{"facing=north":{"model":"wwizardry:block/snail_shell"},"facing=south":{"model":"wwizardry:block/snail_shell","y":180},"facing=east":{"model":"wwizardry:block/snail_shell","y":90},"facing=west":{"model":"wwizardry:block/snail_shell","y":270}}} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index 4a558319..d3e99b1d 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -1 +1 @@ -{"itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","item.wwizardry.snail_spawn_egg":"Snail Spawn Egg","item.wwizardry.snail_shell":"Snail Shell","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file +{"subtitles.wwizardry.snail.place":"Shell placed on snail","subtitles.wwizardry.snail.break":"Shell removed from snail","itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","item.wwizardry.snail_spawn_egg":"Snail Spawn Egg","item.wwizardry.snail_shell":"Snail Shell","entity.wwizardry.snail":"Snail","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java index 2e6bd3de..c273d137 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java @@ -14,6 +14,7 @@ import dev.sweetberry.wwizardry.content.block.nature.SculkflowerBlock; import dev.sweetberry.wwizardry.content.block.redstone.LogicGateBlock; import dev.sweetberry.wwizardry.content.block.redstone.ResonatorBlock; +import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import dev.sweetberry.wwizardry.mixin.Accessor_AxeItem; import dev.sweetberry.wwizardry.mixin.Accessor_BlockEntityType; import net.minecraft.core.registries.BuiltInRegistries; @@ -206,7 +207,7 @@ public class BlockInitializer { ) ); - public static final Lazy WALL_HOLDER = registerBlock( + public static final Lazy SCONCE = registerBlock( "wall_holder", () -> new SconceBlock( BlockBehaviour.Properties.of() @@ -215,6 +216,16 @@ public class BlockInitializer { ) ); + public static final Lazy SNAIL_SHELL = registerBlock( + "snail_shell", + () -> new ShellBlock( + BlockBehaviour.Properties.of() + .instabreak() + .mapColor(MapColor.TERRACOTTA_PINK) + .sound(SoundInitializer.SNAIL.get()) + ) + ); + public static final Lazy> ALTAR_PEDESTAL_TYPE = registerBlockEntity( "altar_pedestal", diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java index 28bbae2f..44522ff9 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java @@ -48,7 +48,7 @@ public CandleSconceBlock(Properties settings, CandleBlock candleBlock) { @Override public List getDrops(BlockState state, LootParams.Builder builder) { - var stacks = new ArrayList<>(((Invoker_BlockBehaviour) BlockInitializer.WALL_HOLDER.get()).invokeGetDrops(state, builder)); + var stacks = new ArrayList<>(((Invoker_BlockBehaviour) BlockInitializer.SCONCE.get()).invokeGetDrops(state, builder)); stacks.add(new ItemStack(candleBlock)); return stacks; } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java index b998a17b..f68c7892 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java @@ -13,7 +13,6 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -118,7 +117,7 @@ public BlockState updateShape( @Override protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { System.out.println("test"); - if (state.getBlock() == BlockInitializer.WALL_HOLDER.get()) return useEmpty(state, world, pos, player, hand); + if (state.getBlock() == BlockInitializer.SCONCE.get()) return useEmpty(state, world, pos, player, hand); return specializedUseAction(state, world, pos, player, hand, hit); } @@ -136,7 +135,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level world, BlockP } var soundGroup = ((Invoker_BlockBehaviour)droppedBlock).invokeGetSoundType(droppedBlock.defaultBlockState()); world.playSound(player, pos, soundGroup.getBreakSound(), SoundSource.BLOCKS); - world.setBlockAndUpdate(pos, BlockInitializer.WALL_HOLDER.get().defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, state.getValue(BlockStateProperties.HORIZONTAL_FACING))); + world.setBlockAndUpdate(pos, BlockInitializer.SCONCE.get().defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, state.getValue(BlockStateProperties.HORIZONTAL_FACING))); return InteractionResult.SUCCESS; } @@ -208,7 +207,7 @@ public int getParticleHeight(BlockState state) { @Override public ItemStack getCloneItemStack(LevelReader world, BlockPos pos, BlockState state) { if (getDroppedBlock() != null) return getDroppedBlock().getCloneItemStack(world, pos, state); - return BlockInitializer.WALL_HOLDER.get().asItem().getDefaultInstance(); + return BlockInitializer.SCONCE.get().asItem().getDefaultInstance(); } @Override diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/ShellBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/ShellBlock.java new file mode 100644 index 00000000..f360ffa2 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/ShellBlock.java @@ -0,0 +1,49 @@ +package dev.sweetberry.wwizardry.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; + +public class ShellBlock extends HorizontalDirectionalBlock { + public static final VoxelShape NORTH_SOUTH = box(6.5, 0, 6, 9.5, 4, 10); + public static final VoxelShape EAST_WEST = box(6, 0, 6.5, 10, 4, 9.5); + + public static final MapCodec CODEC = BlockBehaviour.simpleCodec(ShellBlock::new); + + public ShellBlock(Properties properties) { + super(properties); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(HorizontalDirectionalBlock.FACING); + } + + @Override + protected MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter getter, BlockPos pos, CollisionContext context) { + return switch (state.getValue(HorizontalDirectionalBlock.FACING)) { + case NORTH, SOUTH -> NORTH_SOUTH; + default -> EAST_WEST; + }; + } + + @Nullable + @Override + public BlockState getStateForPlacement(BlockPlaceContext ctx) { + return defaultBlockState().setValue(HorizontalDirectionalBlock.FACING, ctx.getHorizontalDirection()); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WallHolderBlockType.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WallHolderBlockType.java index 3b979cde..225c5c54 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WallHolderBlockType.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WallHolderBlockType.java @@ -25,7 +25,7 @@ public WallHolderBlockType(ResourceLocation id, Block block, ParentType parent) this.parent = parent; wallBlock = BlockInitializer.registerBlock(transformId(id), () -> switch (parent) { - case CANDLE -> new CandleSconceBlock(BlockBehaviour.Properties.ofFullCopy(BlockInitializer.WALL_HOLDER.get()), (CandleBlock) block); + case CANDLE -> new CandleSconceBlock(BlockBehaviour.Properties.ofFullCopy(BlockInitializer.SCONCE.get()), (CandleBlock) block); // TODO! default -> throw new NotImplementedException("Type "+ parent.name +" is not implemented."); }); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java index 7bb45402..39bf895e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java @@ -2,6 +2,7 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.content.item.ItemInitializer; +import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; @@ -51,14 +52,14 @@ protected Snail(EntityType type, Level level) { @Override public boolean onClimbable() { - return true; + return false; } @Override protected void registerGoals() { - goalSelector.addGoal(4, new TemptGoal(this, 1, (s) -> s.is(FOOD), false)); - goalSelector.addGoal(3, new BreedGoal(this, 1)); - goalSelector.addGoal(5, new RandomStrollGoal(this, 1)); + goalSelector.addGoal(2, new TemptGoal(this, 1, (s) -> s.is(FOOD), false)); + goalSelector.addGoal(2, new BreedGoal(this, 1)); + goalSelector.addGoal(8, new RandomStrollGoal(this, 1, 20)); goalSelector.addGoal(5, new RandomLookAroundGoal(this)); goalSelector.addGoal(3, new AvoidEntityGoal<>(this, Armadillo.class, 8, 1.6, 1.4)); } @@ -108,7 +109,7 @@ public InteractionResult mobInteract(Player player, InteractionHand hand) { var stack = player.getItemInHand(hand); if (variant != Variant.SLUG && stack.is(Items.SHEARS)) { setVariant(Variant.SLUG); - level().playSound(player, BlockPos.containing(getPosition(0)), SoundEvents.SHEEP_SHEAR, SoundSource.PLAYERS); + level().playSound(player, BlockPos.containing(getPosition(0)), SoundInitializer.SNAIL_BREAK.get(), SoundSource.PLAYERS); if (!player.isCreative()) { stack.hurtAndBreak(1, player, hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); if (level instanceof ServerLevel serverLevel) { @@ -119,7 +120,7 @@ public InteractionResult mobInteract(Player player, InteractionHand hand) { return InteractionResult.SUCCESS; } else if (variant == Variant.SLUG && stack.is(ItemInitializer.SNAIL_SHELL.get())) { setVariant(Variant.randomNonSlug(level().random)); - level().playSound(player, BlockPos.containing(getPosition(0)), SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS); + level().playSound(player, BlockPos.containing(getPosition(0)), SoundInitializer.SNAIL_PLACE.get(), SoundSource.PLAYERS); if (!player.isCreative()) stack.consume(1, player); return InteractionResult.SUCCESS; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java index 4d50c6ea..f1cac042 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java @@ -126,7 +126,7 @@ public class ItemInitializer { public static final Lazy WALL_HOLDER = registerItem( "wall_holder", () -> new BlockItem( - BlockInitializer.WALL_HOLDER.get(), + BlockInitializer.SCONCE.get(), new Item.Properties() ), BLOCKS_STACKS @@ -296,10 +296,11 @@ public class ItemInitializer { public static final Lazy SNAIL_SHELL = registerItem( "snail_shell", - () -> new Item( + () -> new BlockItem( + BlockInitializer.SNAIL_SHELL.get(), new Item.Properties() ), - ITEMS_STACKS + BLOCKS_STACKS ); public static final Lazy SNAIL_SPAWN_EGG = registerItem( diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/sounds/SoundInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/sounds/SoundInitializer.java index 09b6471b..21ec39c4 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/sounds/SoundInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/sounds/SoundInitializer.java @@ -5,10 +5,17 @@ import dev.sweetberry.wwizardry.api.registry.RegistryContext; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.level.block.SoundType; public class SoundInitializer { public static final RegistryContext SOUNDS = new RegistryContext<>(BuiltInRegistries.SOUND_EVENT); public static final Lazy DISC_WANDERING = registerSound("music_disc.wandering"); + public static final Lazy SNAIL_PLACE = registerSound("entity.snail.place"); + public static final Lazy SNAIL_BREAK = registerSound("entity.snail.break"); + public static final Lazy SHELL_PLACE = registerSound("block.shell.place"); + public static final Lazy SHELL_BREAK = registerSound("block.shell.break"); + public static final Lazy SHELL_STEP = registerSound("block.shell.step"); + public static final Lazy SNAIL = Lazy.create(() -> new SoundType(1, 1.25f, SHELL_BREAK.get(), SHELL_STEP.get(), SHELL_PLACE.get(), SHELL_BREAK.get(), SHELL_STEP.get())); public static Lazy registerSound(String name) { var id = WanderingWizardry.id(name); diff --git a/common/src/main/resources/assets/wwizardry/models/block/snail_shell.json b/common/src/main/resources/assets/wwizardry/models/block/snail_shell.json new file mode 100644 index 00000000..a642463e --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/snail_shell.json @@ -0,0 +1,21 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "wwizardry:block/snail_shell", + "particle": "wwizardry:block/snail_shell" + }, + "elements": [ + { + "from": [6.5, 0, 6], + "to": [9.5, 4, 10], + "faces": { + "north": {"uv": [4, 4, 7, 8], "texture": "#0"}, + "east": {"uv": [0, 4, 4, 8], "texture": "#0"}, + "south": {"uv": [11, 4, 14, 8], "texture": "#0"}, + "west": {"uv": [7, 4, 11, 8], "texture": "#0"}, + "up": {"uv": [7, 4, 4, 0], "texture": "#0"}, + "down": {"uv": [10, 0, 7, 4], "texture": "#0"} + } + } + ] +} diff --git a/common/src/main/resources/assets/wwizardry/sounds.json b/common/src/main/resources/assets/wwizardry/sounds.json index 48993040..48529b70 100644 --- a/common/src/main/resources/assets/wwizardry/sounds.json +++ b/common/src/main/resources/assets/wwizardry/sounds.json @@ -7,5 +7,47 @@ "stream": true } ] + }, + "entity.snail.place": { + "subtitle": "subtitles.wwizardry.snail.place", + "sounds": [ + { + "name": "wwizardry:shell_1" + } + ] + }, + "entity.snail.break": { + "subtitle": "subtitles.wwizardry.snail.break", + "sounds": [ + { + "name": "wwizardry:shell_2" + } + ] + }, + "block.shell.place": { + "subtitle": "subtitles.block.generic.place", + "sounds": [ + { + "name": "wwizardry:shell_1" + } + ] + }, + "block.shell.break": { + "subtitle": "subtitles.block.generic.break", + "sounds": [ + { + "name": "wwizardry:shell_2" + } + ] + }, + "block.shell.step": { + "subtitle": "subtitles.block.generic.footsteps", + "sounds": [ + { + "name": "wwizardry:shell_3", + "volume": 2, + "pitch": 0.75 + } + ] } } diff --git a/common/src/main/resources/assets/wwizardry/sounds/shell_1.ogg b/common/src/main/resources/assets/wwizardry/sounds/shell_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..334b5924cefd2642ec877a96cf41cb1daf2b7edf GIT binary patch literal 8039 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/sounds/shell_2.ogg b/common/src/main/resources/assets/wwizardry/sounds/shell_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..03110aee033f56237974dd98bf316bdfcc5e7fb7 GIT binary patch literal 6791 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/sounds/shell_3.ogg b/common/src/main/resources/assets/wwizardry/sounds/shell_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bf94b4190dfbe8b1e6d796490c70f634fdc677bb GIT binary patch literal 6526 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 L`njxgN@xNA2rXQY literal 0 HcmV?d00001 diff --git a/data/blockstate/snail_shell.fennec b/data/blockstate/snail_shell.fennec new file mode 100644 index 00000000..e9516d3f --- /dev/null +++ b/data/blockstate/snail_shell.fennec @@ -0,0 +1,30 @@ +[ + { + when { facing = "north" } + apply = "wwizardry:block/snail_shell" + } + + { + when { facing = "south" } + apply { + model = "wwizardry:block/snail_shell" + y = 180 + } + } + + { + when { facing = "east" } + apply { + model = "wwizardry:block/snail_shell" + y = 90 + } + } + + { + when { facing = "west" } + apply { + model = "wwizardry:block/snail_shell" + y = 270 + } + } +] diff --git a/data/lang/en_us.fennec b/data/lang/en_us.fennec index 65e97200..87d956c3 100644 --- a/data/lang/en_us.fennec +++ b/data/lang/en_us.fennec @@ -1,3 +1,10 @@ +"subtitles.wwizardry" { + snail { + place = "Shell placed on snail" + break = "Shell removed from snail" + } +} + "itemGroup.wwizardry" { items = "Wandering Wizardry Items" blocks = "Wandering Wizardry Blocks" @@ -226,6 +233,10 @@ snail_shell = "Snail Shell" } +"entity.wwizardry" { + snail = "Snail" +} + "boat.wwizardry" { denia = "Denia Boat" denia_chest = "Denia Boat with Chest" From d46a436658ace62d12ccef29bb56b6d7b3e065df Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 4 May 2024 18:54:26 -0500 Subject: [PATCH 19/46] Update lang --- common/src/generated/resources/assets/wwizardry/lang/en_us.json | 2 +- data/lang/en_us.fennec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index d3e99b1d..2b084fb5 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -1 +1 @@ -{"subtitles.wwizardry.snail.place":"Shell placed on snail","subtitles.wwizardry.snail.break":"Shell removed from snail","itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","item.wwizardry.snail_spawn_egg":"Snail Spawn Egg","item.wwizardry.snail_shell":"Snail Shell","entity.wwizardry.snail":"Snail","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file +{"subtitles.wwizardry.snail.place":"Shell placed on snail","subtitles.wwizardry.snail.break":"Shell removed from snail","itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.snail_shell":"Snail Shell","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","item.wwizardry.snail_spawn_egg":"Snail Spawn Egg","entity.wwizardry.snail":"Snail","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file diff --git a/data/lang/en_us.fennec b/data/lang/en_us.fennec index 87d956c3..b608f034 100644 --- a/data/lang/en_us.fennec +++ b/data/lang/en_us.fennec @@ -116,6 +116,7 @@ sculkflower = "Sculkflower" indigo_caeruleum = "Indigo Caeruleum" mycelial_sand = "Mycelial Sand" + snail_shell = "Snail Shell" # Altar altar_pedestal = "Altar Pedestal" @@ -230,7 +231,6 @@ "music_disc_wandering.desc" = "Moonkey - Wandering" snail_spawn_egg = "Snail Spawn Egg" - snail_shell = "Snail Shell" } "entity.wwizardry" { From a72de8af8c664ccb5e90df23ada1c2c56a992572 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 4 May 2024 18:56:16 -0500 Subject: [PATCH 20/46] h --- .../wwizardry/content/ContentInitializer.java | 5 ---- .../content/potions/PotionInitializer.java | 19 --------------- .../wwizardry/mixin/Mixin_LivingEntity.java | 24 ------------------- .../src/main/resources/wwizardry.mixins.json | 1 - 4 files changed, 49 deletions(-) delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/potions/PotionInitializer.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_LivingEntity.java diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index 4ed3afd6..01966258 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -10,19 +10,15 @@ import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.net.NetworkingInitializer; import dev.sweetberry.wwizardry.content.painting.PaintingInitializer; -import dev.sweetberry.wwizardry.content.potions.PotionInitializer; import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.minecraft.advancements.CriterionTrigger; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.decoration.PaintingVariant; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.PotionBrewing; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.block.Block; @@ -50,6 +46,5 @@ public static void listenToAll(RegistryCallback listener) { WorldgenInitializer.STRUCTURE_PROCESSORS.listen((RegistryCallback>) listener); SoundInitializer.SOUNDS.listen((RegistryCallback) listener); EntityInitializer.ENTITIES.listen((RegistryCallback>) listener); - PotionInitializer.POTIONS.listen((RegistryCallback) listener); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/potions/PotionInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/potions/PotionInitializer.java deleted file mode 100644 index 8ed24468..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/potions/PotionInitializer.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.sweetberry.wwizardry.content.potions; - -import dev.sweetberry.wwizardry.WanderingWizardry; -import dev.sweetberry.wwizardry.api.Lazy; -import dev.sweetberry.wwizardry.api.registry.RegistryContext; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.item.alchemy.Potion; - -import java.util.function.Supplier; - -public class PotionInitializer { - public static final RegistryContext POTIONS = new RegistryContext<>(BuiltInRegistries.POTION); - - public static final Lazy WALL_GLUE = register("wall_glue", Potion::new); - - public static Lazy register(String id, Supplier potion) { - return POTIONS.register(WanderingWizardry.id(id), potion); - } -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_LivingEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_LivingEntity.java deleted file mode 100644 index ca94a86b..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_LivingEntity.java +++ /dev/null @@ -1,24 +0,0 @@ -package dev.sweetberry.wwizardry.mixin; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import net.minecraft.tags.TagKey; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(LivingEntity.class) -public class Mixin_LivingEntity { - @WrapOperation( - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/level/block/state/BlockState;is(Lnet/minecraft/tags/TagKey;)Z" - ), - method = "onClimbable" - ) - private boolean hasEffect(BlockState instance, TagKey tagKey, Operation original) { - return original.call(instance, tagKey); - } -} diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index 95f19bad..2f667664 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -15,7 +15,6 @@ "Mixin_DefaultAttributes", "Mixin_Item", "Mixin_ItemEntity", - "Mixin_LivingEntity", "Mixin_MappedRegistry", "Mixin_MultifaceSpreader_DefaultSpreaderConfig", "Mixin_Player", From 2ec1c4f1f68deb2ae89e0b807aa300a01afea7de Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 23 Aug 2024 14:53:13 -0500 Subject: [PATCH 21/46] Update to 1.21 --- build.gradle | 8 +- .../tags/{blocks => block}/glass_blocks.json | 0 .../c/tags/{blocks => block}/glass_panes.json | 0 .../{blocks => block}/rose_quartz_ores.json | 0 .../c/tags/{items => item}/glass_blocks.json | 0 .../c/tags/{items => item}/glass_panes.json | 0 .../{items => item}/rose_quartz_ores.json | 0 .../c/tags/{items => item}/rose_quartzes.json | 0 .../forge/tags/{blocks => block}/glass.json | 0 .../tags/{blocks => block}/glass_panes.json | 0 .../{blocks => block}/ores/rose_quartz.json | 0 .../forge/tags/{items => item}/glass.json | 0 .../tags/{items => item}/glass_panes.json | 0 .../{items => item}/ores/rose_quartz.json | 0 .../tags/{items => item}/rose_quartzes.json | 0 .../{blocks => block}/all_hanging_signs.json | 0 .../ceiling_hanging_signs.json | 0 .../crystal_sound_blocks.json | 0 .../tags/{blocks => block}/fence_gates.json | 0 .../tags/{blocks => block}/fences.json | 0 .../tags/{blocks => block}/flowers.json | 0 .../tags/{blocks => block}/impermeable.json | 0 .../tags/{blocks => block}/leaves.json | 0 .../tags/{blocks => block}/logs.json | 0 .../{blocks => block}/logs_that_burn.json | 0 .../tags/{blocks => block}/mineable/axe.json | 0 .../tags/{blocks => block}/mineable/hoe.json | 0 .../{blocks => block}/mineable/pickaxe.json | 0 .../tags/{blocks => block}/planks.json | 0 .../tags/{blocks => block}/slabs.json | 0 .../tags/{blocks => block}/stairs.json | 0 .../{blocks => block}/standing_signs.json | 0 .../vibration_resonators.json | 0 .../{blocks => block}/wall_hanging_signs.json | 0 .../tags/{blocks => block}/wall_signs.json | 0 .../tags/{blocks => block}/walls.json | 0 .../tags/{blocks => block}/wart_blocks.json | 0 .../{blocks => block}/wooden_buttons.json | 0 .../tags/{blocks => block}/wooden_doors.json | 0 .../wooden_pressure_plates.json | 0 .../tags/{blocks => block}/wooden_slabs.json | 0 .../tags/{blocks => block}/wooden_stairs.json | 0 .../{blocks => block}/wooden_trapdoors.json | 0 .../tags/{items => item}/fence_gates.json | 0 .../tags/{items => item}/fences.json | 0 .../tags/{items => item}/flowers.json | 0 .../tags/{items => item}/hanging_signs.json | 0 .../tags/{items => item}/leaves.json | 0 .../minecraft/tags/{items => item}/logs.json | 0 .../tags/{items => item}/logs_that_burn.json | 0 .../tags/{items => item}/music_discs.json | 0 .../{items => item}/non_flammable_wood.json | 0 .../tags/{items => item}/planks.json | 0 .../minecraft/tags/{items => item}/signs.json | 0 .../minecraft/tags/{items => item}/slabs.json | 0 .../tags/{items => item}/small_flowers.json | 0 .../tags/{items => item}/stairs.json | 0 .../minecraft/tags/{items => item}/walls.json | 0 .../tags/{items => item}/wart_blocks.json | 0 .../tags/{items => item}/wooden_buttons.json | 0 .../tags/{items => item}/wooden_doors.json | 0 .../wooden_pressure_plates.json | 0 .../tags/{items => item}/wooden_slabs.json | 0 .../tags/{items => item}/wooden_stairs.json | 0 .../{items => item}/wooden_trapdoors.json | 0 .../blocks/altar_catalyzer.json | 0 .../blocks/altar_pedestal.json | 0 .../blocks/basalt_brick_slab.json | 0 .../blocks/basalt_brick_stairs.json | 0 .../blocks/basalt_brick_wall.json | 0 .../blocks/basalt_bricks.json | 0 .../blocks/basalt_tile_slab.json | 0 .../blocks/basalt_tile_stairs.json | 0 .../blocks/basalt_tile_wall.json | 0 .../blocks/basalt_tiles.json | 0 .../blocks/camera.json | 0 .../blocks/chiseled_basalt.json | 0 .../blocks/chiseled_basalt_slab.json | 0 .../blocks/chiseled_basalt_stairs.json | 0 .../blocks/chiseled_basalt_wall.json | 0 .../blocks/crystalline_sculk_block.json | 0 .../blocks/cut_basalt.json | 0 .../blocks/cut_basalt_slab.json | 0 .../blocks/cut_basalt_stairs.json | 0 .../blocks/cut_basalt_wall.json | 0 .../blocks/deepslate_rose_quartz_ore.json | 0 .../blocks/denia_button.json | 0 .../blocks/denia_door.json | 0 .../blocks/denia_fence.json | 0 .../blocks/denia_fence_gate.json | 0 .../blocks/denia_hanging_sign.json | 0 .../blocks/denia_leaves.json | 0 .../blocks/denia_log.json | 0 .../blocks/denia_planks.json | 0 .../blocks/denia_pressure_plate.json | 0 .../blocks/denia_sapling.json | 0 .../blocks/denia_sign.json | 0 .../blocks/denia_slab.json | 0 .../blocks/denia_stairs.json | 0 .../blocks/denia_trapdoor.json | 0 .../blocks/denia_wall_hanging_sign.json | 0 .../blocks/denia_wall_sign.json | 0 .../blocks/denia_wood.json | 0 .../blocks/indigo_caeruleum.json | 0 .../blocks/mossy_basalt_brick_slab.json | 0 .../blocks/mossy_basalt_brick_stairs.json | 0 .../blocks/mossy_basalt_brick_wall.json | 0 .../blocks/mossy_basalt_bricks.json | 0 .../blocks/mossy_basalt_tile_slab.json | 0 .../blocks/mossy_basalt_tile_stairs.json | 0 .../blocks/mossy_basalt_tile_wall.json | 0 .../blocks/mossy_basalt_tiles.json | 0 .../blocks/mossy_chiseled_basalt.json | 0 .../blocks/mossy_chiseled_basalt_slab.json | 0 .../blocks/mossy_chiseled_basalt_stairs.json | 0 .../blocks/mossy_chiseled_basalt_wall.json | 0 .../blocks/mossy_cut_basalt.json | 0 .../blocks/mossy_cut_basalt_slab.json | 0 .../blocks/mossy_cut_basalt_stairs.json | 0 .../blocks/mossy_cut_basalt_wall.json | 0 .../blocks/mycha_button.json | 0 .../blocks/mycha_door.json | 0 .../blocks/mycha_fence.json | 0 .../blocks/mycha_fence_gate.json | 0 .../blocks/mycha_fungus.json | 0 .../blocks/mycha_hanging_sign.json | 0 .../blocks/mycha_hyphae.json | 0 .../blocks/mycha_planks.json | 0 .../blocks/mycha_pressure_plate.json | 0 .../blocks/mycha_sign.json | 0 .../blocks/mycha_slab.json | 0 .../blocks/mycha_stairs.json | 0 .../blocks/mycha_stem.json | 0 .../blocks/mycha_trapdoor.json | 0 .../blocks/mycha_wall_hanging_sign.json | 0 .../blocks/mycha_wall_sign.json | 0 .../blocks/mycha_wart.json | 0 .../blocks/redstone_lantern.json | 0 .../blocks/reinforced_glass.json | 0 .../blocks/reinforced_glass_pane.json | 0 .../blocks/rose_quartz_block.json | 0 .../blocks/rose_quartz_ore.json | 0 .../blocks/sculkflower.json | 0 .../blocks/stripped_denia_log.json | 0 .../blocks/stripped_denia_wood.json | 0 .../blocks/stripped_mycha_hyphae.json | 0 .../blocks/stripped_mycha_stem.json | 0 .../blocks/wall_holder.json | 0 .../{recipes => recipe}/altar_catalyzer.json | 0 .../{recipes => recipe}/altar_pedestal.json | 0 .../basalt_bricks/basalt_crafted/block.json | 0 .../basalt_bricks/basalt_cut/block.json | 0 .../basalt_bricks/basalt_cut/slab.json | 0 .../basalt_bricks/basalt_cut/stairs.json | 0 .../basalt_bricks/basalt_cut/wall.json | 0 .../basalt_bricks/self_crafted/slab.json | 0 .../basalt_bricks/self_crafted/stiars.json | 0 .../basalt_bricks/self_crafted/wall.json | 0 .../basalt_bricks/self_cut/slab.json | 0 .../basalt_bricks/self_cut/stairs.json | 0 .../basalt_bricks/self_cut/wall.json | 0 .../basalt_tiles/basalt_cut/block.json | 0 .../basalt_tiles/basalt_cut/slab.json | 0 .../basalt_tiles/basalt_cut/stairs.json | 0 .../basalt_tiles/basalt_cut/wall.json | 0 .../basalt_tiles/brick_crafted/block.json | 0 .../basalt_tiles/brick_cut/block.json | 0 .../basalt_tiles/brick_cut/slab.json | 0 .../basalt_tiles/brick_cut/stairs.json | 0 .../basalt_tiles/brick_cut/wall.json | 0 .../basalt_tiles/self_crafted/slab.json | 0 .../basalt_tiles/self_crafted/stiars.json | 0 .../basalt_tiles/self_crafted/wall.json | 0 .../basalt_tiles/self_cut/slab.json | 0 .../basalt_tiles/self_cut/stairs.json | 0 .../basalt_tiles/self_cut/wall.json | 0 .../{recipes => recipe}/brewing_charm.json | 0 .../chiseled_basalt/basalt_cut/block.json | 0 .../chiseled_basalt/basalt_cut/slab.json | 0 .../chiseled_basalt/basalt_cut/stairs.json | 0 .../chiseled_basalt/basalt_cut/wall.json | 0 .../chiseled_basalt/brick_crafted/block.json | 0 .../chiseled_basalt/self_crafted/slab.json | 0 .../chiseled_basalt/self_crafted/stiars.json | 0 .../chiseled_basalt/self_crafted/wall.json | 0 .../chiseled_basalt/self_cut/slab.json | 0 .../chiseled_basalt/self_cut/stairs.json | 0 .../chiseled_basalt/self_cut/wall.json | 0 .../{recipes => recipe}/crafting_charm.json | 0 .../create/rose_quartz_crushed.json | 0 .../create/rose_quartz_crushed_deepslate.json | 0 .../create/rose_quartz_polished.json | 0 .../crystalline_sculk.json | 0 .../crystalline_sculk_block.json | 0 .../crystalline_sculk_from_block.json | 0 .../cut_basalt/basalt_crafted/block.json | 0 .../cut_basalt/basalt_cut/block.json | 0 .../cut_basalt/basalt_cut/slab.json | 0 .../cut_basalt/basalt_cut/stairs.json | 0 .../cut_basalt/basalt_cut/wall.json | 0 .../cut_basalt/self_crafted/slab.json | 0 .../cut_basalt/self_crafted/stiars.json | 0 .../cut_basalt/self_crafted/wall.json | 0 .../cut_basalt/self_cut/slab.json | 0 .../cut_basalt/self_cut/stairs.json | 0 .../cut_basalt/self_cut/wall.json | 0 .../modulo_comparator.json | 0 .../mossy_basalt_bricks/basalt_cut/block.json | 0 .../mossy_basalt_bricks/basalt_cut/slab.json | 0 .../basalt_cut/stairs.json | 0 .../mossy_basalt_bricks/basalt_cut/wall.json | 0 .../brick_mossed/block.json | 0 .../self_crafted/slab.json | 0 .../self_crafted/stiars.json | 0 .../self_crafted/wall.json | 0 .../mossy_basalt_bricks/self_cut/slab.json | 0 .../mossy_basalt_bricks/self_cut/stairs.json | 0 .../mossy_basalt_bricks/self_cut/wall.json | 0 .../mossy_basalt_tiles/basalt_cut/block.json | 0 .../mossy_basalt_tiles/basalt_cut/slab.json | 0 .../mossy_basalt_tiles/basalt_cut/stairs.json | 0 .../mossy_basalt_tiles/basalt_cut/wall.json | 0 .../brick_crafted/block.json | 0 .../mossy_basalt_tiles/brick_cut/block.json | 0 .../mossy_basalt_tiles/brick_cut/slab.json | 0 .../mossy_basalt_tiles/brick_cut/stairs.json | 0 .../mossy_basalt_tiles/brick_cut/wall.json | 0 .../brick_mossed/block.json | 0 .../mossy_basalt_tiles/self_crafted/slab.json | 0 .../self_crafted/stiars.json | 0 .../mossy_basalt_tiles/self_crafted/wall.json | 0 .../mossy_basalt_tiles/self_cut/slab.json | 0 .../mossy_basalt_tiles/self_cut/stairs.json | 0 .../mossy_basalt_tiles/self_cut/wall.json | 0 .../basalt_cut/block.json | 0 .../basalt_cut/slab.json | 0 .../basalt_cut/stairs.json | 0 .../basalt_cut/wall.json | 0 .../brick_crafted/block.json | 0 .../brick_mossed/block.json | 0 .../self_crafted/slab.json | 0 .../self_crafted/stiars.json | 0 .../self_crafted/wall.json | 0 .../mossy_chiseled_basalt/self_cut/slab.json | 0 .../self_cut/stairs.json | 0 .../mossy_chiseled_basalt/self_cut/wall.json | 0 .../mossy_cut_basalt/cut_mossed/block.json | 0 .../mossy_cut_basalt/self_crafted/slab.json | 0 .../mossy_cut_basalt/self_crafted/stiars.json | 0 .../mossy_cut_basalt/self_crafted/wall.json | 0 .../mossy_cut_basalt/self_cut/slab.json | 0 .../mossy_cut_basalt/self_cut/stairs.json | 0 .../mossy_cut_basalt/self_cut/wall.json | 0 .../{recipes => recipe}/redstone_stepper.json | 0 .../{recipes => recipe}/reinforced_glass.json | 0 .../reinforced_glass_pane.json | 0 .../rose_quartz_block.json | 0 .../rose_quartz_from_blasting_ore.json | 0 .../rose_quartz_from_block.json | 0 .../rose_quartz_from_smelting_ore.json | 0 .../{recipes => recipe}/sculk_resonator.json | 0 .../{recipes => recipe}/slot_charm.json | 0 .../{recipes => recipe}/soul_mirror.json | 0 .../{recipes => recipe}/void_bag.json | 0 .../{recipes => recipe}/wood/denia/boat.json | 0 .../wood/denia/button.json | 0 .../wood/denia/chest_boat.json | 0 .../{recipes => recipe}/wood/denia/door.json | 0 .../{recipes => recipe}/wood/denia/fence.json | 0 .../wood/denia/fence_gate.json | 0 .../wood/denia/planks.json | 0 .../wood/denia/pressure_plate.json | 0 .../{recipes => recipe}/wood/denia/sign.json | 0 .../{recipes => recipe}/wood/denia/slab.json | 0 .../wood/denia/stairs.json | 0 .../wood/denia/stripped_wood.json | 0 .../wood/denia/trapdoor.json | 0 .../{recipes => recipe}/wood/denia/wood.json | 0 .../wood/mycha/button.json | 0 .../{recipes => recipe}/wood/mycha/door.json | 0 .../{recipes => recipe}/wood/mycha/fence.json | 0 .../wood/mycha/fence_gate.json | 0 .../wood/mycha/hyphae.json | 0 .../wood/mycha/planks.json | 0 .../wood/mycha/pressure_plate.json | 0 .../{recipes => recipe}/wood/mycha/sign.json | 0 .../{recipes => recipe}/wood/mycha/slab.json | 0 .../wood/mycha/stairs.json | 0 .../wood/mycha/stripped_hyphae.json | 0 .../wood/mycha/trapdoor.json | 0 .../tags/{blocks => block}/altars.json | 0 .../tags/{blocks => block}/brick/basalt.json | 0 .../brick/basalt_bricks.json | 0 .../brick/basalt_chiseled.json | 0 .../{blocks => block}/brick/basalt_cut.json | 0 .../{blocks => block}/brick/basalt_tiles.json | 0 .../brick/mossy_basalt_bricks.json | 0 .../brick/mossy_basalt_chiseled.json | 0 .../brick/mossy_basalt_cut.json | 0 .../brick/mossy_basalt_tiles.json | 0 .../tags/{blocks => block}/damages_snail.json | 0 .../tags/{blocks => block}/denia_logs.json | 0 .../{blocks => block}/mycha_growable.json | 0 .../tags/{blocks => block}/mycha_growth.json | 0 .../tags/{blocks => block}/mycha_stems.json | 0 .../{blocks => block}/rose_quartz_ores.json | 0 .../tags/{blocks => block}/wood/all.json | 0 .../tags/{blocks => block}/wood/denia.json | 0 .../tags/{blocks => block}/wood/mycha.json | 0 .../{items => item}/altar_air_modifier.json | 0 .../tags/{items => item}/altars.json | 0 .../tags/{items => item}/brick/basalt.json | 0 .../{items => item}/brick/basalt_bricks.json | 0 .../brick/basalt_chiseled.json | 0 .../{items => item}/brick/basalt_cut.json | 0 .../{items => item}/brick/basalt_tiles.json | 0 .../brick/mossy_basalt_bricks.json | 0 .../brick/mossy_basalt_chiseled.json | 0 .../brick/mossy_basalt_cut.json | 0 .../brick/mossy_basalt_tiles.json | 0 .../tags/{items => item}/denia_logs.json | 0 .../wwizardry/tags/{items => item}/glass.json | 0 .../tags/{items => item}/mossy_materials.json | 0 .../tags/{items => item}/mycha_stems.json | 0 .../tags/{items => item}/repairs_sculk.json | 0 .../tags/{items => item}/rose_quartzes.json | 0 .../tags/{items => item}/snail_food.json | 0 .../tags/{items => item}/wood/all.json | 0 .../tags/{items => item}/wood/denia.json | 0 .../tags/{items => item}/wood/mycha.json | 0 .../wwizardry/WanderingWizardry.java | 3 +- .../wwizardry/api/altar/AltarRecipeView.java | 3 +- .../client/WanderingWizardryClient.java | 16 ---- .../content/DatagenRegistryAttachment.java | 11 +-- .../client/content/events/ClientEvents.java | 8 -- .../AltarCatalyzerBlockEntityRenderer.java | 3 +- .../render/model/AltarCatalyzerModel.java | 6 +- .../client/render/model/SnailModel.java | 10 +- .../wwizardry/content/ContentInitializer.java | 1 - .../entity/AltarCatalyzerBlockEntity.java | 43 +++------ .../{BrickType.java => BrickTypeGen.java} | 4 +- .../content/datagen/DatagenInitializer.java | 21 ++--- .../{WoodType.java => WoodTypeGen.java} | 58 ++++++++---- .../content/item/ItemInitializer.java | 8 +- .../content/item/SoulMirrorItem.java | 14 +-- .../content/item/charm/AnvilCharmItem.java | 9 +- .../content/item/charm/SmithingCharmItem.java | 56 +---------- .../content/painting/PaintingInitializer.java | 7 -- .../recipe/AltarCatalyzationRecipe.java | 8 ++ .../AltarCatalyzationRecipeSerializer.java | 4 +- .../content/sounds/SoundInitializer.java | 10 ++ .../wwizardry/duck/Duck_SignRenderer.java | 8 -- .../mixin/Accessor_BlockSetType.java | 15 +++ .../mixin/Accessor_ServerPlayer.java | 9 ++ .../wwizardry/mixin/Accessor_WoodType.java | 15 +++ .../mixin/Mixin_StructureTemplate.java | 3 +- .../mixin/client/Mixin_BoatRenderer.java | 28 ++---- .../mixin/client/Mixin_SignRenderer.java | 37 -------- ...ixin_SignRenderer_HangingSignRenderer.java | 93 ------------------- .../wwizardry/jukebox_song/wandering.json | 8 ++ .../wwizardry/painting_variant/altar.json | 5 + .../main/resources/wwizardry.accesswidener | 2 +- .../src/main/resources/wwizardry.mixins.json | 7 +- data/tags/c.fennec | 4 +- data/tags/forge.fennec | 4 +- data/tags/minecraft.fennec | 4 +- data/tags/wwizardry.fennec | 4 +- fabric/build.gradle | 2 +- .../wwizardry/fabric/FabricInitializer.java | 1 + .../mixin/client/Mixin_BoatRenderer.java | 57 ------------ fabric/src/main/resources/fabric.mod.json | 3 +- .../resources/wwizardry_fabric.mixins.json | 13 --- gradle/libs.versions.toml | 23 ++--- gradle/wrapper/gradle-wrapper.properties | 2 +- neoforge/build.gradle | 51 +++++----- .../neoforge/NeoForgeInitializer.java | 2 + .../src/main/resources/META-INF/mods.toml | 2 - .../resources/wwizardry_neoforge.mixins.json | 13 --- 378 files changed, 240 insertions(+), 486 deletions(-) rename common/src/generated/resources/data/c/tags/{blocks => block}/glass_blocks.json (100%) rename common/src/generated/resources/data/c/tags/{blocks => block}/glass_panes.json (100%) rename common/src/generated/resources/data/c/tags/{blocks => block}/rose_quartz_ores.json (100%) rename common/src/generated/resources/data/c/tags/{items => item}/glass_blocks.json (100%) rename common/src/generated/resources/data/c/tags/{items => item}/glass_panes.json (100%) rename common/src/generated/resources/data/c/tags/{items => item}/rose_quartz_ores.json (100%) rename common/src/generated/resources/data/c/tags/{items => item}/rose_quartzes.json (100%) rename common/src/generated/resources/data/forge/tags/{blocks => block}/glass.json (100%) rename common/src/generated/resources/data/forge/tags/{blocks => block}/glass_panes.json (100%) rename common/src/generated/resources/data/forge/tags/{blocks => block}/ores/rose_quartz.json (100%) rename common/src/generated/resources/data/forge/tags/{items => item}/glass.json (100%) rename common/src/generated/resources/data/forge/tags/{items => item}/glass_panes.json (100%) rename common/src/generated/resources/data/forge/tags/{items => item}/ores/rose_quartz.json (100%) rename common/src/generated/resources/data/forge/tags/{items => item}/rose_quartzes.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/all_hanging_signs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/ceiling_hanging_signs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/crystal_sound_blocks.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/fence_gates.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/fences.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/flowers.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/impermeable.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/leaves.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/logs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/logs_that_burn.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/mineable/axe.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/mineable/hoe.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/mineable/pickaxe.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/planks.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/slabs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/stairs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/standing_signs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/vibration_resonators.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/wall_hanging_signs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/wall_signs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/walls.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/wart_blocks.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/wooden_buttons.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/wooden_doors.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/wooden_pressure_plates.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/wooden_slabs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/wooden_stairs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{blocks => block}/wooden_trapdoors.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/fence_gates.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/fences.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/flowers.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/hanging_signs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/leaves.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/logs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/logs_that_burn.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/music_discs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/non_flammable_wood.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/planks.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/signs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/slabs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/small_flowers.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/stairs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/walls.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/wart_blocks.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/wooden_buttons.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/wooden_doors.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/wooden_pressure_plates.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/wooden_slabs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/wooden_stairs.json (100%) rename common/src/generated/resources/data/minecraft/tags/{items => item}/wooden_trapdoors.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/altar_catalyzer.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/altar_pedestal.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/basalt_brick_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/basalt_brick_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/basalt_brick_wall.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/basalt_bricks.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/basalt_tile_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/basalt_tile_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/basalt_tile_wall.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/basalt_tiles.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/camera.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/chiseled_basalt.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/chiseled_basalt_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/chiseled_basalt_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/chiseled_basalt_wall.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/crystalline_sculk_block.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/cut_basalt.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/cut_basalt_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/cut_basalt_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/cut_basalt_wall.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/deepslate_rose_quartz_ore.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_button.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_door.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_fence.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_fence_gate.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_hanging_sign.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_leaves.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_log.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_planks.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_pressure_plate.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_sapling.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_sign.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_trapdoor.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_wall_hanging_sign.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_wall_sign.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/denia_wood.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/indigo_caeruleum.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_basalt_brick_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_basalt_brick_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_basalt_brick_wall.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_basalt_bricks.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_basalt_tile_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_basalt_tile_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_basalt_tile_wall.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_basalt_tiles.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_chiseled_basalt.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_chiseled_basalt_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_chiseled_basalt_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_chiseled_basalt_wall.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_cut_basalt.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_cut_basalt_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_cut_basalt_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mossy_cut_basalt_wall.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_button.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_door.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_fence.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_fence_gate.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_fungus.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_hanging_sign.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_hyphae.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_planks.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_pressure_plate.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_sign.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_slab.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_stem.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_trapdoor.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_wall_hanging_sign.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_wall_sign.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/mycha_wart.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/redstone_lantern.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/reinforced_glass.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/reinforced_glass_pane.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/rose_quartz_block.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/rose_quartz_ore.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/sculkflower.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/stripped_denia_log.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/stripped_denia_wood.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/stripped_mycha_hyphae.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/stripped_mycha_stem.json (100%) rename common/src/generated/resources/data/wwizardry/{loot_tables => loot_table}/blocks/wall_holder.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/altar_catalyzer.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/altar_pedestal.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/basalt_crafted/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/basalt_cut/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/basalt_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/basalt_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/basalt_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/self_crafted/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/self_crafted/stiars.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/self_crafted/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/self_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/self_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_bricks/self_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/basalt_cut/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/basalt_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/basalt_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/basalt_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/brick_crafted/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/brick_cut/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/brick_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/brick_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/brick_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/self_crafted/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/self_crafted/stiars.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/self_crafted/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/self_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/self_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/basalt_tiles/self_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/brewing_charm.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/basalt_cut/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/basalt_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/basalt_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/basalt_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/brick_crafted/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/self_crafted/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/self_crafted/stiars.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/self_crafted/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/self_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/self_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/chiseled_basalt/self_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/crafting_charm.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/create/rose_quartz_crushed.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/create/rose_quartz_crushed_deepslate.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/create/rose_quartz_polished.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/crystalline_sculk.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/crystalline_sculk_block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/crystalline_sculk_from_block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/basalt_crafted/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/basalt_cut/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/basalt_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/basalt_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/basalt_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/self_crafted/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/self_crafted/stiars.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/self_crafted/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/self_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/self_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/cut_basalt/self_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/modulo_comparator.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/basalt_cut/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/basalt_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/basalt_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/basalt_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/brick_mossed/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/self_crafted/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/self_crafted/stiars.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/self_crafted/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/self_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/self_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_bricks/self_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/basalt_cut/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/basalt_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/basalt_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/basalt_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/brick_crafted/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/brick_cut/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/brick_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/brick_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/brick_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/brick_mossed/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/self_crafted/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/self_crafted/stiars.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/self_crafted/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/self_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/self_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_basalt_tiles/self_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/basalt_cut/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/basalt_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/basalt_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/basalt_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/brick_crafted/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/brick_mossed/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/self_crafted/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/self_crafted/stiars.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/self_crafted/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/self_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/self_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_chiseled_basalt/self_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_cut_basalt/cut_mossed/block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_cut_basalt/self_crafted/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_cut_basalt/self_crafted/stiars.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_cut_basalt/self_crafted/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_cut_basalt/self_cut/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_cut_basalt/self_cut/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/mossy_cut_basalt/self_cut/wall.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/redstone_stepper.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/reinforced_glass.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/reinforced_glass_pane.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/rose_quartz_block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/rose_quartz_from_blasting_ore.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/rose_quartz_from_block.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/rose_quartz_from_smelting_ore.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/sculk_resonator.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/slot_charm.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/soul_mirror.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/void_bag.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/boat.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/button.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/chest_boat.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/door.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/fence.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/fence_gate.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/planks.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/pressure_plate.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/sign.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/stripped_wood.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/trapdoor.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/denia/wood.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/button.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/door.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/fence.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/fence_gate.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/hyphae.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/planks.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/pressure_plate.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/sign.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/slab.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/stairs.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/stripped_hyphae.json (100%) rename common/src/generated/resources/data/wwizardry/{recipes => recipe}/wood/mycha/trapdoor.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/altars.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/brick/basalt.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/brick/basalt_bricks.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/brick/basalt_chiseled.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/brick/basalt_cut.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/brick/basalt_tiles.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/brick/mossy_basalt_bricks.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/brick/mossy_basalt_chiseled.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/brick/mossy_basalt_cut.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/brick/mossy_basalt_tiles.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/damages_snail.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/denia_logs.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/mycha_growable.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/mycha_growth.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/mycha_stems.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/rose_quartz_ores.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/wood/all.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/wood/denia.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{blocks => block}/wood/mycha.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/altar_air_modifier.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/altars.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/brick/basalt.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/brick/basalt_bricks.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/brick/basalt_chiseled.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/brick/basalt_cut.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/brick/basalt_tiles.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/brick/mossy_basalt_bricks.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/brick/mossy_basalt_chiseled.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/brick/mossy_basalt_cut.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/brick/mossy_basalt_tiles.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/denia_logs.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/glass.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/mossy_materials.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/mycha_stems.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/repairs_sculk.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/rose_quartzes.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/snail_food.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/wood/all.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/wood/denia.json (100%) rename common/src/generated/resources/data/wwizardry/tags/{items => item}/wood/mycha.json (100%) rename common/src/main/java/dev/sweetberry/wwizardry/content/datagen/{BrickType.java => BrickTypeGen.java} (97%) rename common/src/main/java/dev/sweetberry/wwizardry/content/datagen/{WoodType.java => WoodTypeGen.java} (90%) delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/duck/Duck_SignRenderer.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BlockSetType.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_WoodType.java rename {neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge => common/src/main/java/dev/sweetberry/wwizardry}/mixin/client/Mixin_BoatRenderer.java (68%) delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_SignRenderer.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_SignRenderer_HangingSignRenderer.java create mode 100644 common/src/main/resources/data/wwizardry/jukebox_song/wandering.json create mode 100644 common/src/main/resources/data/wwizardry/painting_variant/altar.json delete mode 100644 fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/client/Mixin_BoatRenderer.java delete mode 100644 fabric/src/main/resources/wwizardry_fabric.mixins.json delete mode 100644 neoforge/src/main/resources/wwizardry_neoforge.mixins.json diff --git a/build.gradle b/build.gradle index a5f32b9e..5699ccf1 100644 --- a/build.gradle +++ b/build.gradle @@ -63,10 +63,10 @@ tasks.register("generateData") { generate("lang", "assets/wwizardry/lang") generate("tags", "data") generate("archex", "staticdata/architecture_extensions") - loot("basic_block_loot.fennec", "data/wwizardry/loot_tables/blocks") - generate("bricks", "data/wwizardry/recipes") - transpile("recipes", "data/wwizardry/recipes") - transpile("loot", "data/wwizardry/loot_tables") + loot("basic_block_loot.fennec", "data/wwizardry/loot_table/blocks") + generate("bricks", "data/wwizardry/recipe") + transpile("recipes", "data/wwizardry/recipe") + transpile("loot", "data/wwizardry/loot_table") transpile("world", "data/wwizardry/worldgen") generate("blockstate", "assets/wwizardry/blockstates") // awToAt() diff --git a/common/src/generated/resources/data/c/tags/blocks/glass_blocks.json b/common/src/generated/resources/data/c/tags/block/glass_blocks.json similarity index 100% rename from common/src/generated/resources/data/c/tags/blocks/glass_blocks.json rename to common/src/generated/resources/data/c/tags/block/glass_blocks.json diff --git a/common/src/generated/resources/data/c/tags/blocks/glass_panes.json b/common/src/generated/resources/data/c/tags/block/glass_panes.json similarity index 100% rename from common/src/generated/resources/data/c/tags/blocks/glass_panes.json rename to common/src/generated/resources/data/c/tags/block/glass_panes.json diff --git a/common/src/generated/resources/data/c/tags/blocks/rose_quartz_ores.json b/common/src/generated/resources/data/c/tags/block/rose_quartz_ores.json similarity index 100% rename from common/src/generated/resources/data/c/tags/blocks/rose_quartz_ores.json rename to common/src/generated/resources/data/c/tags/block/rose_quartz_ores.json diff --git a/common/src/generated/resources/data/c/tags/items/glass_blocks.json b/common/src/generated/resources/data/c/tags/item/glass_blocks.json similarity index 100% rename from common/src/generated/resources/data/c/tags/items/glass_blocks.json rename to common/src/generated/resources/data/c/tags/item/glass_blocks.json diff --git a/common/src/generated/resources/data/c/tags/items/glass_panes.json b/common/src/generated/resources/data/c/tags/item/glass_panes.json similarity index 100% rename from common/src/generated/resources/data/c/tags/items/glass_panes.json rename to common/src/generated/resources/data/c/tags/item/glass_panes.json diff --git a/common/src/generated/resources/data/c/tags/items/rose_quartz_ores.json b/common/src/generated/resources/data/c/tags/item/rose_quartz_ores.json similarity index 100% rename from common/src/generated/resources/data/c/tags/items/rose_quartz_ores.json rename to common/src/generated/resources/data/c/tags/item/rose_quartz_ores.json diff --git a/common/src/generated/resources/data/c/tags/items/rose_quartzes.json b/common/src/generated/resources/data/c/tags/item/rose_quartzes.json similarity index 100% rename from common/src/generated/resources/data/c/tags/items/rose_quartzes.json rename to common/src/generated/resources/data/c/tags/item/rose_quartzes.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/glass.json b/common/src/generated/resources/data/forge/tags/block/glass.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/glass.json rename to common/src/generated/resources/data/forge/tags/block/glass.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/glass_panes.json b/common/src/generated/resources/data/forge/tags/block/glass_panes.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/glass_panes.json rename to common/src/generated/resources/data/forge/tags/block/glass_panes.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/ores/rose_quartz.json b/common/src/generated/resources/data/forge/tags/block/ores/rose_quartz.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/ores/rose_quartz.json rename to common/src/generated/resources/data/forge/tags/block/ores/rose_quartz.json diff --git a/common/src/generated/resources/data/forge/tags/items/glass.json b/common/src/generated/resources/data/forge/tags/item/glass.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/glass.json rename to common/src/generated/resources/data/forge/tags/item/glass.json diff --git a/common/src/generated/resources/data/forge/tags/items/glass_panes.json b/common/src/generated/resources/data/forge/tags/item/glass_panes.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/glass_panes.json rename to common/src/generated/resources/data/forge/tags/item/glass_panes.json diff --git a/common/src/generated/resources/data/forge/tags/items/ores/rose_quartz.json b/common/src/generated/resources/data/forge/tags/item/ores/rose_quartz.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/ores/rose_quartz.json rename to common/src/generated/resources/data/forge/tags/item/ores/rose_quartz.json diff --git a/common/src/generated/resources/data/forge/tags/items/rose_quartzes.json b/common/src/generated/resources/data/forge/tags/item/rose_quartzes.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/rose_quartzes.json rename to common/src/generated/resources/data/forge/tags/item/rose_quartzes.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/all_hanging_signs.json b/common/src/generated/resources/data/minecraft/tags/block/all_hanging_signs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/all_hanging_signs.json rename to common/src/generated/resources/data/minecraft/tags/block/all_hanging_signs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/ceiling_hanging_signs.json b/common/src/generated/resources/data/minecraft/tags/block/ceiling_hanging_signs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/ceiling_hanging_signs.json rename to common/src/generated/resources/data/minecraft/tags/block/ceiling_hanging_signs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/crystal_sound_blocks.json b/common/src/generated/resources/data/minecraft/tags/block/crystal_sound_blocks.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/crystal_sound_blocks.json rename to common/src/generated/resources/data/minecraft/tags/block/crystal_sound_blocks.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/fence_gates.json b/common/src/generated/resources/data/minecraft/tags/block/fence_gates.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/fence_gates.json rename to common/src/generated/resources/data/minecraft/tags/block/fence_gates.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/fences.json b/common/src/generated/resources/data/minecraft/tags/block/fences.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/fences.json rename to common/src/generated/resources/data/minecraft/tags/block/fences.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/flowers.json b/common/src/generated/resources/data/minecraft/tags/block/flowers.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/flowers.json rename to common/src/generated/resources/data/minecraft/tags/block/flowers.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/impermeable.json b/common/src/generated/resources/data/minecraft/tags/block/impermeable.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/impermeable.json rename to common/src/generated/resources/data/minecraft/tags/block/impermeable.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/leaves.json b/common/src/generated/resources/data/minecraft/tags/block/leaves.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/leaves.json rename to common/src/generated/resources/data/minecraft/tags/block/leaves.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/logs.json b/common/src/generated/resources/data/minecraft/tags/block/logs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/logs.json rename to common/src/generated/resources/data/minecraft/tags/block/logs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/logs_that_burn.json b/common/src/generated/resources/data/minecraft/tags/block/logs_that_burn.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/logs_that_burn.json rename to common/src/generated/resources/data/minecraft/tags/block/logs_that_burn.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json b/common/src/generated/resources/data/minecraft/tags/block/mineable/axe.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json rename to common/src/generated/resources/data/minecraft/tags/block/mineable/axe.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/mineable/hoe.json b/common/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/mineable/hoe.json rename to common/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json rename to common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/planks.json b/common/src/generated/resources/data/minecraft/tags/block/planks.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/planks.json rename to common/src/generated/resources/data/minecraft/tags/block/planks.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/slabs.json b/common/src/generated/resources/data/minecraft/tags/block/slabs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/slabs.json rename to common/src/generated/resources/data/minecraft/tags/block/slabs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/stairs.json b/common/src/generated/resources/data/minecraft/tags/block/stairs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/stairs.json rename to common/src/generated/resources/data/minecraft/tags/block/stairs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/standing_signs.json b/common/src/generated/resources/data/minecraft/tags/block/standing_signs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/standing_signs.json rename to common/src/generated/resources/data/minecraft/tags/block/standing_signs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/vibration_resonators.json b/common/src/generated/resources/data/minecraft/tags/block/vibration_resonators.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/vibration_resonators.json rename to common/src/generated/resources/data/minecraft/tags/block/vibration_resonators.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/wall_hanging_signs.json b/common/src/generated/resources/data/minecraft/tags/block/wall_hanging_signs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/wall_hanging_signs.json rename to common/src/generated/resources/data/minecraft/tags/block/wall_hanging_signs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/wall_signs.json b/common/src/generated/resources/data/minecraft/tags/block/wall_signs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/wall_signs.json rename to common/src/generated/resources/data/minecraft/tags/block/wall_signs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/walls.json b/common/src/generated/resources/data/minecraft/tags/block/walls.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/walls.json rename to common/src/generated/resources/data/minecraft/tags/block/walls.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/wart_blocks.json b/common/src/generated/resources/data/minecraft/tags/block/wart_blocks.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/wart_blocks.json rename to common/src/generated/resources/data/minecraft/tags/block/wart_blocks.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/wooden_buttons.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_buttons.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/wooden_buttons.json rename to common/src/generated/resources/data/minecraft/tags/block/wooden_buttons.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/wooden_doors.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_doors.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/wooden_doors.json rename to common/src/generated/resources/data/minecraft/tags/block/wooden_doors.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_pressure_plates.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json rename to common/src/generated/resources/data/minecraft/tags/block/wooden_pressure_plates.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/wooden_slabs.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_slabs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/wooden_slabs.json rename to common/src/generated/resources/data/minecraft/tags/block/wooden_slabs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/wooden_stairs.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_stairs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/wooden_stairs.json rename to common/src/generated/resources/data/minecraft/tags/block/wooden_stairs.json diff --git a/common/src/generated/resources/data/minecraft/tags/blocks/wooden_trapdoors.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_trapdoors.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/blocks/wooden_trapdoors.json rename to common/src/generated/resources/data/minecraft/tags/block/wooden_trapdoors.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/fence_gates.json b/common/src/generated/resources/data/minecraft/tags/item/fence_gates.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/fence_gates.json rename to common/src/generated/resources/data/minecraft/tags/item/fence_gates.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/fences.json b/common/src/generated/resources/data/minecraft/tags/item/fences.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/fences.json rename to common/src/generated/resources/data/minecraft/tags/item/fences.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/flowers.json b/common/src/generated/resources/data/minecraft/tags/item/flowers.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/flowers.json rename to common/src/generated/resources/data/minecraft/tags/item/flowers.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/hanging_signs.json b/common/src/generated/resources/data/minecraft/tags/item/hanging_signs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/hanging_signs.json rename to common/src/generated/resources/data/minecraft/tags/item/hanging_signs.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/leaves.json b/common/src/generated/resources/data/minecraft/tags/item/leaves.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/leaves.json rename to common/src/generated/resources/data/minecraft/tags/item/leaves.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/logs.json b/common/src/generated/resources/data/minecraft/tags/item/logs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/logs.json rename to common/src/generated/resources/data/minecraft/tags/item/logs.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/logs_that_burn.json b/common/src/generated/resources/data/minecraft/tags/item/logs_that_burn.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/logs_that_burn.json rename to common/src/generated/resources/data/minecraft/tags/item/logs_that_burn.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/music_discs.json b/common/src/generated/resources/data/minecraft/tags/item/music_discs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/music_discs.json rename to common/src/generated/resources/data/minecraft/tags/item/music_discs.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/non_flammable_wood.json b/common/src/generated/resources/data/minecraft/tags/item/non_flammable_wood.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/non_flammable_wood.json rename to common/src/generated/resources/data/minecraft/tags/item/non_flammable_wood.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/planks.json b/common/src/generated/resources/data/minecraft/tags/item/planks.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/planks.json rename to common/src/generated/resources/data/minecraft/tags/item/planks.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/signs.json b/common/src/generated/resources/data/minecraft/tags/item/signs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/signs.json rename to common/src/generated/resources/data/minecraft/tags/item/signs.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/slabs.json b/common/src/generated/resources/data/minecraft/tags/item/slabs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/slabs.json rename to common/src/generated/resources/data/minecraft/tags/item/slabs.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/small_flowers.json b/common/src/generated/resources/data/minecraft/tags/item/small_flowers.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/small_flowers.json rename to common/src/generated/resources/data/minecraft/tags/item/small_flowers.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/stairs.json b/common/src/generated/resources/data/minecraft/tags/item/stairs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/stairs.json rename to common/src/generated/resources/data/minecraft/tags/item/stairs.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/walls.json b/common/src/generated/resources/data/minecraft/tags/item/walls.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/walls.json rename to common/src/generated/resources/data/minecraft/tags/item/walls.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/wart_blocks.json b/common/src/generated/resources/data/minecraft/tags/item/wart_blocks.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/wart_blocks.json rename to common/src/generated/resources/data/minecraft/tags/item/wart_blocks.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/wooden_buttons.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_buttons.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/wooden_buttons.json rename to common/src/generated/resources/data/minecraft/tags/item/wooden_buttons.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/wooden_doors.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_doors.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/wooden_doors.json rename to common/src/generated/resources/data/minecraft/tags/item/wooden_doors.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/wooden_pressure_plates.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_pressure_plates.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/wooden_pressure_plates.json rename to common/src/generated/resources/data/minecraft/tags/item/wooden_pressure_plates.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/wooden_slabs.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_slabs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/wooden_slabs.json rename to common/src/generated/resources/data/minecraft/tags/item/wooden_slabs.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/wooden_stairs.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_stairs.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/wooden_stairs.json rename to common/src/generated/resources/data/minecraft/tags/item/wooden_stairs.json diff --git a/common/src/generated/resources/data/minecraft/tags/items/wooden_trapdoors.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_trapdoors.json similarity index 100% rename from common/src/generated/resources/data/minecraft/tags/items/wooden_trapdoors.json rename to common/src/generated/resources/data/minecraft/tags/item/wooden_trapdoors.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/altar_catalyzer.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_catalyzer.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/altar_catalyzer.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_catalyzer.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/altar_pedestal.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_pedestal.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/altar_pedestal.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_pedestal.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_brick_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_brick_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_brick_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_brick_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_brick_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_brick_wall.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_wall.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_bricks.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_bricks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_bricks.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_bricks.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_tile_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_tile_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_tile_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_tile_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_tile_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_tile_wall.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_wall.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_tiles.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tiles.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/basalt_tiles.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tiles.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/camera.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/camera.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/camera.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/camera.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/chiseled_basalt.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/chiseled_basalt.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/chiseled_basalt_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/chiseled_basalt_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/chiseled_basalt_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/chiseled_basalt_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/chiseled_basalt_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/chiseled_basalt_wall.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_wall.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/crystalline_sculk_block.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/crystalline_sculk_block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/crystalline_sculk_block.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/crystalline_sculk_block.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/cut_basalt.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/cut_basalt.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/cut_basalt_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/cut_basalt_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/cut_basalt_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/cut_basalt_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/cut_basalt_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/cut_basalt_wall.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_wall.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/deepslate_rose_quartz_ore.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/deepslate_rose_quartz_ore.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/deepslate_rose_quartz_ore.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/deepslate_rose_quartz_ore.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_button.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_button.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_button.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_button.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_door.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_door.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_door.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_door.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_fence.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_fence.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_fence_gate.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence_gate.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_fence_gate.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence_gate.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_hanging_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_hanging_sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_hanging_sign.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_hanging_sign.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_leaves.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_leaves.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_leaves.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_leaves.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_log.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_log.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_log.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_log.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_planks.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_planks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_planks.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_planks.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_pressure_plate.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_pressure_plate.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_pressure_plate.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_pressure_plate.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_sapling.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sapling.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_sapling.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sapling.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_sign.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sign.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_trapdoor.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_trapdoor.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_trapdoor.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_trapdoor.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_wall_hanging_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_hanging_sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_wall_hanging_sign.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_hanging_sign.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_wall_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_wall_sign.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_sign.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_wood.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wood.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/denia_wood.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wood.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/indigo_caeruleum.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/indigo_caeruleum.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/indigo_caeruleum.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/indigo_caeruleum.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_brick_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_brick_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_brick_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_brick_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_brick_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_brick_wall.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_wall.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_bricks.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_bricks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_bricks.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_bricks.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_tile_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_tile_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_tile_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_tile_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_tile_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_tile_wall.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_wall.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_tiles.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tiles.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_basalt_tiles.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tiles.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_chiseled_basalt.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_chiseled_basalt.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_chiseled_basalt_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_chiseled_basalt_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_chiseled_basalt_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_chiseled_basalt_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_chiseled_basalt_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_chiseled_basalt_wall.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_wall.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_cut_basalt.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_cut_basalt.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_cut_basalt_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_cut_basalt_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_cut_basalt_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_cut_basalt_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_cut_basalt_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mossy_cut_basalt_wall.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_wall.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_button.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_button.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_button.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_button.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_door.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_door.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_door.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_door.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_fence.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_fence.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_fence_gate.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence_gate.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_fence_gate.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence_gate.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_fungus.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fungus.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_fungus.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fungus.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_hanging_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hanging_sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_hanging_sign.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hanging_sign.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_hyphae.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hyphae.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_hyphae.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hyphae.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_planks.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_planks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_planks.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_planks.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_pressure_plate.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_pressure_plate.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_pressure_plate.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_pressure_plate.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_sign.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_sign.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_slab.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_slab.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_stairs.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stairs.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_stem.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stem.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_stem.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stem.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_trapdoor.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_trapdoor.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_trapdoor.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_trapdoor.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_wall_hanging_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_hanging_sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_wall_hanging_sign.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_hanging_sign.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_wall_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_wall_sign.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_sign.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_wart.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wart.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/mycha_wart.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wart.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/redstone_lantern.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/redstone_lantern.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/redstone_lantern.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/redstone_lantern.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/reinforced_glass.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/reinforced_glass.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/reinforced_glass_pane.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass_pane.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/reinforced_glass_pane.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass_pane.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/rose_quartz_block.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/rose_quartz_block.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_block.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/rose_quartz_ore.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_ore.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/rose_quartz_ore.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_ore.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/sculkflower.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculkflower.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/sculkflower.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/sculkflower.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/stripped_denia_log.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_log.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/stripped_denia_log.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_log.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/stripped_denia_wood.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_wood.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/stripped_denia_wood.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_wood.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/stripped_mycha_hyphae.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_hyphae.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/stripped_mycha_hyphae.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_hyphae.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/stripped_mycha_stem.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_stem.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/stripped_mycha_stem.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_stem.json diff --git a/common/src/generated/resources/data/wwizardry/loot_tables/blocks/wall_holder.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/wall_holder.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/loot_tables/blocks/wall_holder.json rename to common/src/generated/resources/data/wwizardry/loot_table/blocks/wall_holder.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/altar_catalyzer.json b/common/src/generated/resources/data/wwizardry/recipe/altar_catalyzer.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/altar_catalyzer.json rename to common/src/generated/resources/data/wwizardry/recipe/altar_catalyzer.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/altar_pedestal.json b/common/src/generated/resources/data/wwizardry/recipe/altar_pedestal.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/altar_pedestal.json rename to common/src/generated/resources/data/wwizardry/recipe/altar_pedestal.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_crafted/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_crafted/block.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_crafted/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/block.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/basalt_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/stiars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/stiars.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/stiars.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_crafted/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_bricks/self_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/block.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/basalt_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_crafted/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_crafted/block.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_crafted/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/block.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/brick_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/stiars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/stiars.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/stiars.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_crafted/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/basalt_tiles/self_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/brewing_charm.json b/common/src/generated/resources/data/wwizardry/recipe/brewing_charm.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/brewing_charm.json rename to common/src/generated/resources/data/wwizardry/recipe/brewing_charm.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/block.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/basalt_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/brick_crafted/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/brick_crafted/block.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/brick_crafted/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/stiars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/stiars.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/stiars.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_crafted/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/chiseled_basalt/self_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/crafting_charm.json b/common/src/generated/resources/data/wwizardry/recipe/crafting_charm.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/crafting_charm.json rename to common/src/generated/resources/data/wwizardry/recipe/crafting_charm.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/create/rose_quartz_crushed.json b/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/create/rose_quartz_crushed.json rename to common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/create/rose_quartz_crushed_deepslate.json b/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed_deepslate.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/create/rose_quartz_crushed_deepslate.json rename to common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed_deepslate.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/create/rose_quartz_polished.json b/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_polished.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/create/rose_quartz_polished.json rename to common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_polished.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk.json b/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk.json rename to common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_block.json b/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_block.json rename to common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_from_block.json b/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_from_block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/crystalline_sculk_from_block.json rename to common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_from_block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_crafted/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_crafted/block.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_crafted/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/block.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/basalt_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/stiars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/stiars.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/stiars.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_crafted/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/cut_basalt/self_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/modulo_comparator.json b/common/src/generated/resources/data/wwizardry/recipe/modulo_comparator.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/modulo_comparator.json rename to common/src/generated/resources/data/wwizardry/recipe/modulo_comparator.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/basalt_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/brick_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/brick_mossed/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/brick_mossed/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/brick_mossed/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/stiars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/stiars.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/stiars.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_crafted/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_bricks/self_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/basalt_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_crafted/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_crafted/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_crafted/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_mossed/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/brick_mossed/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_mossed/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/stiars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/stiars.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/stiars.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_crafted/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_basalt_tiles/self_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/basalt_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_crafted/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_crafted/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_crafted/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_mossed/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/brick_mossed/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_mossed/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/stiars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/stiars.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/stiars.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_crafted/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_chiseled_basalt/self_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/cut_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/cut_mossed/block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/cut_mossed/block.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/cut_mossed/block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/stiars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/stiars.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/stiars.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_crafted/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/wall.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/mossy_cut_basalt/self_cut/wall.json rename to common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/wall.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/redstone_stepper.json b/common/src/generated/resources/data/wwizardry/recipe/redstone_stepper.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/redstone_stepper.json rename to common/src/generated/resources/data/wwizardry/recipe/redstone_stepper.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass.json b/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/reinforced_glass.json rename to common/src/generated/resources/data/wwizardry/recipe/reinforced_glass.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/reinforced_glass_pane.json b/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass_pane.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/reinforced_glass_pane.json rename to common/src/generated/resources/data/wwizardry/recipe/reinforced_glass_pane.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_block.json b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/rose_quartz_block.json rename to common/src/generated/resources/data/wwizardry/recipe/rose_quartz_block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_blasting_ore.json b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_blasting_ore.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_blasting_ore.json rename to common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_blasting_ore.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_block.json b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_block.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_block.json rename to common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_block.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_smelting_ore.json b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_smelting_ore.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/rose_quartz_from_smelting_ore.json rename to common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_smelting_ore.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/sculk_resonator.json b/common/src/generated/resources/data/wwizardry/recipe/sculk_resonator.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/sculk_resonator.json rename to common/src/generated/resources/data/wwizardry/recipe/sculk_resonator.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/slot_charm.json b/common/src/generated/resources/data/wwizardry/recipe/slot_charm.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/slot_charm.json rename to common/src/generated/resources/data/wwizardry/recipe/slot_charm.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/soul_mirror.json b/common/src/generated/resources/data/wwizardry/recipe/soul_mirror.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/soul_mirror.json rename to common/src/generated/resources/data/wwizardry/recipe/soul_mirror.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/void_bag.json b/common/src/generated/resources/data/wwizardry/recipe/void_bag.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/void_bag.json rename to common/src/generated/resources/data/wwizardry/recipe/void_bag.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/boat.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/boat.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/boat.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/boat.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/button.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/button.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/button.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/button.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/chest_boat.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/chest_boat.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/chest_boat.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/chest_boat.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/door.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/door.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/door.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/door.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence_gate.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence_gate.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/fence_gate.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence_gate.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/planks.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/planks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/planks.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/planks.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/pressure_plate.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/pressure_plate.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/pressure_plate.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/pressure_plate.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/sign.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/sign.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/sign.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/slab.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/stripped_wood.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stripped_wood.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/stripped_wood.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/stripped_wood.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/trapdoor.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/trapdoor.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/trapdoor.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/trapdoor.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/denia/wood.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/wood.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/denia/wood.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/denia/wood.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/button.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/button.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/button.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/button.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/door.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/door.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/door.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/door.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence_gate.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence_gate.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/fence_gate.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence_gate.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/hyphae.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/hyphae.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/hyphae.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/hyphae.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/planks.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/planks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/planks.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/planks.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/pressure_plate.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/pressure_plate.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/pressure_plate.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/pressure_plate.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/sign.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/sign.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/sign.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/sign.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/slab.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/slab.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/slab.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/slab.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stairs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stairs.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stairs.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stripped_hyphae.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stripped_hyphae.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/stripped_hyphae.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stripped_hyphae.json diff --git a/common/src/generated/resources/data/wwizardry/recipes/wood/mycha/trapdoor.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/trapdoor.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/recipes/wood/mycha/trapdoor.json rename to common/src/generated/resources/data/wwizardry/recipe/wood/mycha/trapdoor.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/altars.json b/common/src/generated/resources/data/wwizardry/tags/block/altars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/altars.json rename to common/src/generated/resources/data/wwizardry/tags/block/altars.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt.json rename to common/src/generated/resources/data/wwizardry/tags/block/brick/basalt.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt_bricks.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_bricks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt_bricks.json rename to common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_bricks.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt_chiseled.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_chiseled.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt_chiseled.json rename to common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_chiseled.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt_cut.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_cut.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt_cut.json rename to common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_cut.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt_tiles.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_tiles.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/brick/basalt_tiles.json rename to common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_tiles.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/brick/mossy_basalt_bricks.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_bricks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/brick/mossy_basalt_bricks.json rename to common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_bricks.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/brick/mossy_basalt_chiseled.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_chiseled.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/brick/mossy_basalt_chiseled.json rename to common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_chiseled.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/brick/mossy_basalt_cut.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_cut.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/brick/mossy_basalt_cut.json rename to common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_cut.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/brick/mossy_basalt_tiles.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_tiles.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/brick/mossy_basalt_tiles.json rename to common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_tiles.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/damages_snail.json b/common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/damages_snail.json rename to common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/denia_logs.json b/common/src/generated/resources/data/wwizardry/tags/block/denia_logs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/denia_logs.json rename to common/src/generated/resources/data/wwizardry/tags/block/denia_logs.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/mycha_growable.json b/common/src/generated/resources/data/wwizardry/tags/block/mycha_growable.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/mycha_growable.json rename to common/src/generated/resources/data/wwizardry/tags/block/mycha_growable.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/mycha_growth.json b/common/src/generated/resources/data/wwizardry/tags/block/mycha_growth.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/mycha_growth.json rename to common/src/generated/resources/data/wwizardry/tags/block/mycha_growth.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/mycha_stems.json b/common/src/generated/resources/data/wwizardry/tags/block/mycha_stems.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/mycha_stems.json rename to common/src/generated/resources/data/wwizardry/tags/block/mycha_stems.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/rose_quartz_ores.json b/common/src/generated/resources/data/wwizardry/tags/block/rose_quartz_ores.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/rose_quartz_ores.json rename to common/src/generated/resources/data/wwizardry/tags/block/rose_quartz_ores.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/wood/all.json b/common/src/generated/resources/data/wwizardry/tags/block/wood/all.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/wood/all.json rename to common/src/generated/resources/data/wwizardry/tags/block/wood/all.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/wood/denia.json b/common/src/generated/resources/data/wwizardry/tags/block/wood/denia.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/wood/denia.json rename to common/src/generated/resources/data/wwizardry/tags/block/wood/denia.json diff --git a/common/src/generated/resources/data/wwizardry/tags/blocks/wood/mycha.json b/common/src/generated/resources/data/wwizardry/tags/block/wood/mycha.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/blocks/wood/mycha.json rename to common/src/generated/resources/data/wwizardry/tags/block/wood/mycha.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/altar_air_modifier.json b/common/src/generated/resources/data/wwizardry/tags/item/altar_air_modifier.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/altar_air_modifier.json rename to common/src/generated/resources/data/wwizardry/tags/item/altar_air_modifier.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/altars.json b/common/src/generated/resources/data/wwizardry/tags/item/altars.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/altars.json rename to common/src/generated/resources/data/wwizardry/tags/item/altars.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/brick/basalt.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/brick/basalt.json rename to common/src/generated/resources/data/wwizardry/tags/item/brick/basalt.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/brick/basalt_bricks.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_bricks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/brick/basalt_bricks.json rename to common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_bricks.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/brick/basalt_chiseled.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_chiseled.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/brick/basalt_chiseled.json rename to common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_chiseled.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/brick/basalt_cut.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_cut.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/brick/basalt_cut.json rename to common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_cut.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/brick/basalt_tiles.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_tiles.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/brick/basalt_tiles.json rename to common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_tiles.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/brick/mossy_basalt_bricks.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_bricks.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/brick/mossy_basalt_bricks.json rename to common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_bricks.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/brick/mossy_basalt_chiseled.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_chiseled.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/brick/mossy_basalt_chiseled.json rename to common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_chiseled.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/brick/mossy_basalt_cut.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_cut.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/brick/mossy_basalt_cut.json rename to common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_cut.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/brick/mossy_basalt_tiles.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_tiles.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/brick/mossy_basalt_tiles.json rename to common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_tiles.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/denia_logs.json b/common/src/generated/resources/data/wwizardry/tags/item/denia_logs.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/denia_logs.json rename to common/src/generated/resources/data/wwizardry/tags/item/denia_logs.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/glass.json b/common/src/generated/resources/data/wwizardry/tags/item/glass.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/glass.json rename to common/src/generated/resources/data/wwizardry/tags/item/glass.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/mossy_materials.json b/common/src/generated/resources/data/wwizardry/tags/item/mossy_materials.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/mossy_materials.json rename to common/src/generated/resources/data/wwizardry/tags/item/mossy_materials.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/mycha_stems.json b/common/src/generated/resources/data/wwizardry/tags/item/mycha_stems.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/mycha_stems.json rename to common/src/generated/resources/data/wwizardry/tags/item/mycha_stems.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/repairs_sculk.json b/common/src/generated/resources/data/wwizardry/tags/item/repairs_sculk.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/repairs_sculk.json rename to common/src/generated/resources/data/wwizardry/tags/item/repairs_sculk.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/rose_quartzes.json b/common/src/generated/resources/data/wwizardry/tags/item/rose_quartzes.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/rose_quartzes.json rename to common/src/generated/resources/data/wwizardry/tags/item/rose_quartzes.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/snail_food.json b/common/src/generated/resources/data/wwizardry/tags/item/snail_food.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/snail_food.json rename to common/src/generated/resources/data/wwizardry/tags/item/snail_food.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/wood/all.json b/common/src/generated/resources/data/wwizardry/tags/item/wood/all.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/wood/all.json rename to common/src/generated/resources/data/wwizardry/tags/item/wood/all.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/wood/denia.json b/common/src/generated/resources/data/wwizardry/tags/item/wood/denia.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/wood/denia.json rename to common/src/generated/resources/data/wwizardry/tags/item/wood/denia.json diff --git a/common/src/generated/resources/data/wwizardry/tags/items/wood/mycha.json b/common/src/generated/resources/data/wwizardry/tags/item/wood/mycha.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/tags/items/wood/mycha.json rename to common/src/generated/resources/data/wwizardry/tags/item/wood/mycha.json diff --git a/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java b/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java index 2c25ca57..80f81bab 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java @@ -2,6 +2,7 @@ import dev.sweetberry.wwizardry.content.ContentInitializer; import dev.sweetberry.wwizardry.content.block.BlockInitializer; +import net.minecraft.client.renderer.entity.BoatRenderer; import net.minecraft.resources.ResourceLocation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,7 +30,7 @@ public static void init(String platform) { } public static ResourceLocation id(String id) { - return new ResourceLocation(MODID, id); + return ResourceLocation.fromNamespaceAndPath(MODID, id); } public static boolean isModLoaded(String modid) { diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/altar/AltarRecipeView.java b/common/src/main/java/dev/sweetberry/wwizardry/api/altar/AltarRecipeView.java index 84547326..8958d13e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/altar/AltarRecipeView.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/api/altar/AltarRecipeView.java @@ -4,6 +4,7 @@ import net.minecraft.world.Container; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeInput; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -13,7 +14,7 @@ /** * A view of the altars state as it tries to craft an item * */ -public interface AltarRecipeView extends Container { +public interface AltarRecipeView extends RecipeInput { /** * Gets an item in the referenced pedestal * Returns null if there's no pedestal diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/WanderingWizardryClient.java b/common/src/main/java/dev/sweetberry/wwizardry/client/WanderingWizardryClient.java index f299c5af..34810770 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/WanderingWizardryClient.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/WanderingWizardryClient.java @@ -12,9 +12,6 @@ import java.util.Map; public class WanderingWizardryClient { - public static final Map SIGN_MATERIALS = new HashMap<>(); - public static final Map HANGING_SIGN_MATERIALS = new HashMap<>(); - public static int tickCounter = 0; public static int useItemTick = -1; public static void init() { @@ -32,17 +29,4 @@ public static ResourceLocation getBoatTextureLocation(ResourceLocation type, boo public static ModelLayerLocation getBoatLayerLocation(ResourceLocation id, boolean chest) { return new ModelLayerLocation(getBoatTextureLocation(id, chest), "main"); } - - public static ResourceLocation getSignTextureLocation(ResourceLocation type, boolean hanging) { - return type.withPrefix("entity/signs/" + (hanging ? "hanging/" : "")); - } - - public static ModelLayerLocation getSignLayerLocation(ResourceLocation id, boolean hanging) { - return new ModelLayerLocation(getSignTextureLocation(id, hanging), "main"); - } - - public static void addSignMaterial(ResourceLocation id) { - SIGN_MATERIALS.put(id, new Material(Sheets.SIGN_SHEET, getSignTextureLocation(id, false))); - HANGING_SIGN_MATERIALS.put(id, new Material(Sheets.SIGN_SHEET, getSignTextureLocation(id, true))); - } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/content/DatagenRegistryAttachment.java b/common/src/main/java/dev/sweetberry/wwizardry/client/content/DatagenRegistryAttachment.java index 49838e51..3f2ef158 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/content/DatagenRegistryAttachment.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/content/DatagenRegistryAttachment.java @@ -4,7 +4,7 @@ import dev.sweetberry.wwizardry.client.WanderingWizardryClient; import dev.sweetberry.wwizardry.content.datagen.AbstractDataGenerator; import dev.sweetberry.wwizardry.content.datagen.DatagenInitializer; -import dev.sweetberry.wwizardry.content.datagen.WoodType; +import dev.sweetberry.wwizardry.content.datagen.WoodTypeGen; import net.minecraft.client.renderer.RenderType; public class DatagenRegistryAttachment { @@ -16,12 +16,11 @@ public static void init() { } public static void checkGenerator(AbstractDataGenerator dataGenerator) { - if (dataGenerator instanceof WoodType woodType) { - RenderLayers.put(RenderType.cutout(), woodType.DOOR, woodType.TRAPDOOR, woodType.SAPLING); - WanderingWizardryClient.addSignMaterial(WanderingWizardry.id(woodType.baseName)); - if (woodType.fungus) + if (dataGenerator instanceof WoodTypeGen woodTypeGen) { + RenderLayers.put(RenderType.cutout(), woodTypeGen.DOOR, woodTypeGen.TRAPDOOR, woodTypeGen.SAPLING); + if (woodTypeGen.fungus) return; - RenderLayers.put(RenderType.cutout(), woodType.LEAVES); + RenderLayers.put(RenderType.cutout(), woodTypeGen.LEAVES); } } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java index 53d3565d..19401d27 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java @@ -80,14 +80,6 @@ public static void registerModelLayers(BiConsumer chestBoatModel); } - var signModel = SignRenderer.createSignLayer(); - var hangingSignModel = HangingSignRenderer.createHangingSignLayer(); - - for (var id : ModdedSignBlock.SIGNS) { - consumer.accept(WanderingWizardryClient.getSignLayerLocation(id, false), () -> signModel); - consumer.accept(WanderingWizardryClient.getSignLayerLocation(id, true), () -> hangingSignModel); - } - var altarModel = AltarCatalyzerModel.createLayer(); consumer.accept(AltarCatalyzerModel.LAYER_LOCATION, () -> altarModel); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarCatalyzerBlockEntityRenderer.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarCatalyzerBlockEntityRenderer.java index b35678c2..6baf9e6e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarCatalyzerBlockEntityRenderer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/blockentity/AltarCatalyzerBlockEntityRenderer.java @@ -11,6 +11,7 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.util.FastColor; public class AltarCatalyzerBlockEntityRenderer implements AltarBlockEntityRenderer { private static final double ALTAR_TOP = 16.5d / 16d; @@ -53,7 +54,7 @@ public void render(AltarCatalyzerBlockEntity entity, float tickDelta, PoseStack model.ticks = WanderingWizardryClient.tickCounter + tickDelta; model.crafting = entity.crafting; model.timeToCraft = entity.crafting ? entity.getCraftingTime(tickDelta) : 0; - model.renderToBuffer(matrices, buf, light, overlay, 1, 1, 1, entity.clampLerpTime(0, tickDelta, 0.125f, 1)); + model.renderToBuffer(matrices, buf, light, overlay, FastColor.ARGB32.colorFromFloat(entity.clampLerpTime(0, tickDelta, 0.125f, 1), 1, 1, 1)); matrices.popPose(); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java index 8dda1d8a..cf223f89 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/AltarCatalyzerModel.java @@ -60,17 +60,17 @@ public static LayerDefinition createLayer() { } @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int i, int i1, int i2) { var seconds = ticks / 20; seconds %= 4; poseStack.pushPose(); AnimationHelper.applyKeyframes(LAYER_1_FRAMES, seconds, poseStack); - layer1.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + layer1.render(poseStack, vertexConsumer, i, i1, i2); poseStack.popPose(); poseStack.pushPose(); AnimationHelper.applyKeyframes(crafting ? LAYER_2_FRAMES_FAST : LAYER_2_FRAMES, seconds, poseStack); - layer2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + layer2.render(poseStack, vertexConsumer, i, i1, i2); poseStack.popPose(); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/SnailModel.java b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/SnailModel.java index 9397e00b..076a34c2 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/SnailModel.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/render/model/SnailModel.java @@ -46,10 +46,10 @@ public static LayerDefinition createBodyLayer() { public void setupAnim(Snail entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {} @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - body.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - leftEye.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - rightEye.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - shell.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, int color) { + body.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); + leftEye.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); + rightEye.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); + shell.render(poseStack, vertexConsumer, packedLight, packedOverlay, color); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index 01966258..2391c5ee 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -40,7 +40,6 @@ public static void listenToAll(RegistryCallback listener) { CriterionInitializer.CRITERION.listen((RegistryCallback>) listener); ItemInitializer.ITEMS.listen((RegistryCallback) listener); ItemInitializer.TABS.listen((RegistryCallback) listener); - PaintingInitializer.PAINTINGS.listen((RegistryCallback) listener); RecipeInitializer.RECIPE_SERIALIZERS.listen((RegistryCallback>) listener); RecipeInitializer.RECIPES.listen((RegistryCallback>) listener); WorldgenInitializer.STRUCTURE_PROCESSORS.listen((RegistryCallback>) listener); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java index 459b9aac..6f97b2ec 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java @@ -1,5 +1,6 @@ package dev.sweetberry.wwizardry.content.block.entity; +import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.altar.AltarCraftable; import dev.sweetberry.wwizardry.api.altar.AltarRecipeView; import dev.sweetberry.wwizardry.api.net.PacketRegistry; @@ -24,11 +25,13 @@ import net.minecraft.world.level.block.SculkSpreader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Objects; public class AltarCatalyzerBlockEntity extends AltarBlockEntity { public ItemStack result = ItemStack.EMPTY; @@ -66,8 +69,12 @@ public void tryCraft(BlockState state) { .anyMatch(it -> it.heldItem.isEmpty()) ) return; + WanderingWizardry.LOGGER.info("test"); + var optional = level.getRecipeManager().getRecipeFor(RecipeInitializer.ALTAR_TYPE.get(), view, level); + WanderingWizardry.LOGGER.info("{}", optional.isPresent()); + if (optional.isPresent()) { optional.get().value().tryCraft(view, level); startCrafting(view); @@ -261,47 +268,19 @@ public int getBloom() { return bloom; } - @Override - public int getContainerSize() { - return 5; - } - @Override public boolean isEmpty() { return false; } @Override - public ItemStack getItem(int i) { - return getItemInPedestal(AltarDirection.values()[i]); - } - - @Override - public ItemStack removeItem(int i, int j) { - return null; - } - - @Override - public ItemStack removeItemNoUpdate(int i) { - return null; + public @NotNull ItemStack getItem(int i) { + return Objects.requireNonNull(getItemInPedestal(AltarDirection.values()[i])); } @Override - public void setItem(int i, ItemStack itemStack) { - setResultInPedestal(AltarDirection.values()[i], itemStack); - } - - @Override - public void setChanged() {} - - @Override - public boolean stillValid(Player player) { - return true; - } - - @Override - public void clearContent() { - + public int size() { + return 5; } } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickType.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickTypeGen.java similarity index 97% rename from common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickType.java rename to common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickTypeGen.java index b8ee3b2a..1d9197c7 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickType.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/BrickTypeGen.java @@ -17,7 +17,7 @@ import net.minecraft.world.level.material.MapColor; import org.jetbrains.annotations.NotNull; -public class BrickType extends AbstractDataGenerator { +public class BrickTypeGen extends AbstractDataGenerator { public final String baseName; public final boolean plural; @@ -30,7 +30,7 @@ public class BrickType extends AbstractDataGenerator { public final Lazy WALL; public final Lazy WALL_ITEM; - public BrickType(String baseName, boolean plural, MapColor color, SoundType sounds) { + public BrickTypeGen(String baseName, boolean plural, MapColor color, SoundType sounds) { super(); this.baseName = baseName; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/DatagenInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/DatagenInitializer.java index e602a8f6..9b68dc2f 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/DatagenInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/DatagenInitializer.java @@ -9,7 +9,6 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.MapColor; -import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -18,18 +17,18 @@ public class DatagenInitializer { public static final MapBackedPack pack = new MapBackedPack(); - public static final WoodType DENIA_WOOD = registerDataGenerator("denia_wood", new WoodType("denia", MapColor.ICE, MapColor.DEEPSLATE, SoundType.WOOD)); - public static final WoodType MYCHA_WOOD = registerDataGenerator("mycha_wood", new WoodType("mycha", MapColor.COLOR_PURPLE, MapColor.COLOR_BLUE, SoundType.NETHER_WOOD, BlockInitializer.MYCELIAL_SAND)); + public static final WoodTypeGen DENIA_WOOD = registerDataGenerator("denia_wood", new WoodTypeGen("denia", MapColor.ICE, MapColor.DEEPSLATE, SoundType.WOOD)); + public static final WoodTypeGen MYCHA_WOOD = registerDataGenerator("mycha_wood", new WoodTypeGen("mycha", MapColor.COLOR_PURPLE, MapColor.COLOR_BLUE, SoundType.NETHER_WOOD, BlockInitializer.MYCELIAL_SAND)); - public static final BrickType CHISELED_BASALT = registerDataGenerator("chiseled_basalt", new BrickType("chiseled_basalt", false, MapColor.COLOR_GRAY, SoundType.BASALT)); - public static final BrickType BASALT_BRICKS = registerDataGenerator("basalt_bricks", new BrickType("basalt_brick", true, MapColor.COLOR_GRAY, SoundType.BASALT)); - public static final BrickType CUT_BASALT = registerDataGenerator("cut_basalt", new BrickType("cut_basalt", false, MapColor.COLOR_GRAY, SoundType.BASALT)); - public static final BrickType BASALT_TILES = registerDataGenerator("basalt_tiles", new BrickType("basalt_tile", true, MapColor.COLOR_GRAY, SoundType.BASALT)); + public static final BrickTypeGen CHISELED_BASALT = registerDataGenerator("chiseled_basalt", new BrickTypeGen("chiseled_basalt", false, MapColor.COLOR_GRAY, SoundType.BASALT)); + public static final BrickTypeGen BASALT_BRICKS = registerDataGenerator("basalt_bricks", new BrickTypeGen("basalt_brick", true, MapColor.COLOR_GRAY, SoundType.BASALT)); + public static final BrickTypeGen CUT_BASALT = registerDataGenerator("cut_basalt", new BrickTypeGen("cut_basalt", false, MapColor.COLOR_GRAY, SoundType.BASALT)); + public static final BrickTypeGen BASALT_TILES = registerDataGenerator("basalt_tiles", new BrickTypeGen("basalt_tile", true, MapColor.COLOR_GRAY, SoundType.BASALT)); - public static final BrickType MOSSY_CHISELED_BASALT = registerDataGenerator("mossy_chiseled_basalt", new BrickType("mossy_chiseled_basalt", false, MapColor.COLOR_GRAY, SoundType.BASALT)); - public static final BrickType MOSSY_BASALT_BRICKS = registerDataGenerator("mossy_basalt_bricks", new BrickType("mossy_basalt_brick", true, MapColor.COLOR_GRAY, SoundType.BASALT)); - public static final BrickType MOSSY_CUT_BASALT = registerDataGenerator("mossy_cut_basalt", new BrickType("mossy_cut_basalt", false, MapColor.COLOR_GRAY, SoundType.BASALT)); - public static final BrickType MOSSY_BASALT_TILES = registerDataGenerator("mossy_basalt_tiles", new BrickType("mossy_basalt_tile", true, MapColor.COLOR_GRAY, SoundType.BASALT)); + public static final BrickTypeGen MOSSY_CHISELED_BASALT = registerDataGenerator("mossy_chiseled_basalt", new BrickTypeGen("mossy_chiseled_basalt", false, MapColor.COLOR_GRAY, SoundType.BASALT)); + public static final BrickTypeGen MOSSY_BASALT_BRICKS = registerDataGenerator("mossy_basalt_bricks", new BrickTypeGen("mossy_basalt_brick", true, MapColor.COLOR_GRAY, SoundType.BASALT)); + public static final BrickTypeGen MOSSY_CUT_BASALT = registerDataGenerator("mossy_cut_basalt", new BrickTypeGen("mossy_cut_basalt", false, MapColor.COLOR_GRAY, SoundType.BASALT)); + public static final BrickTypeGen MOSSY_BASALT_TILES = registerDataGenerator("mossy_basalt_tiles", new BrickTypeGen("mossy_basalt_tile", true, MapColor.COLOR_GRAY, SoundType.BASALT)); public static void init() {} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodType.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java similarity index 90% rename from common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodType.java rename to common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java index f60243b2..414437d0 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodType.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java @@ -8,8 +8,11 @@ import dev.sweetberry.wwizardry.content.block.nature.RootedMushroomBlock; import dev.sweetberry.wwizardry.content.block.BlockInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; +import dev.sweetberry.wwizardry.mixin.Accessor_BlockSetType; +import dev.sweetberry.wwizardry.mixin.Accessor_WoodType; import net.minecraft.core.Direction; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.HangingSignItem; @@ -18,15 +21,19 @@ import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.properties.BlockSetType; +import net.minecraft.world.level.block.state.properties.WoodType; import net.minecraft.world.level.material.MapColor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.function.Supplier; -public class WoodType extends AbstractDataGenerator { +public class WoodTypeGen extends AbstractDataGenerator { public final String baseName; + public final Lazy BLOCK_SET; + public final Lazy TYPE; + public final Lazy LOG; public final Lazy LOG_ITEM; public final Lazy STRIPPED_LOG; @@ -69,12 +76,12 @@ public class WoodType extends AbstractDataGenerator { public final Lazy BOAT_ITEM; public final Lazy BOAT_CHEST_ITEM; - public WoodType(String baseName, MapColor wood, MapColor bark, SoundType sounds) { + public WoodTypeGen(String baseName, MapColor wood, MapColor bark, SoundType sounds) { this(baseName, wood, bark, sounds, null); } - public WoodType(String baseName, MapColor wood, MapColor bark, SoundType sounds, @Nullable Supplier fungusBaseBlock) { + public WoodTypeGen(String baseName, MapColor wood, MapColor bark, SoundType sounds, @Nullable Supplier fungusBaseBlock) { super(); this.baseName = baseName; @@ -83,13 +90,14 @@ public WoodType(String baseName, MapColor wood, MapColor bark, SoundType sounds, final var blockSettings = BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_PLANKS).sound(sounds).mapColor(wood); final var nonCollidable = BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_PLANKS).sound(sounds).mapColor(wood).noCollission(); final var nonOpaque = BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_PLANKS).sound(sounds).mapColor(wood).noOcclusion(); - final var hanging = BlockBehaviour.Properties - .ofFullCopy(Blocks.OAK_HANGING_SIGN) - .sound(sounds) - .mapColor(wood); final var itemSettings = new Item.Properties(); final var singleStack = new Item.Properties().stacksTo(1); + final var typeName = WanderingWizardry.id(baseName).toString(); + + BLOCK_SET = createBlockSetType(typeName, () -> new BlockSetType(typeName, true, true, true, BlockSetType.PressurePlateSensitivity.EVERYTHING, sounds, SoundEvents.WOODEN_DOOR_CLOSE, SoundEvents.WOODEN_DOOR_OPEN, SoundEvents.WOODEN_TRAPDOOR_CLOSE, SoundEvents.WOODEN_TRAPDOOR_OPEN, SoundEvents.WOODEN_PRESSURE_PLATE_CLICK_OFF, SoundEvents.WOODEN_PRESSURE_PLATE_CLICK_ON, SoundEvents.WOODEN_BUTTON_CLICK_OFF, SoundEvents.WOODEN_BUTTON_CLICK_ON)); + TYPE = createWoodType(typeName, () -> new WoodType(typeName, BLOCK_SET.get(), sounds, SoundType.HANGING_SIGN, SoundEvents.FENCE_GATE_CLOSE, SoundEvents.FENCE_GATE_OPEN)); + final var logName = fungus ? "stem" : "log"; final var woodName = fungus ? "hyphae" : "wood"; @@ -118,34 +126,32 @@ public WoodType(String baseName, MapColor wood, MapColor bark, SoundType sounds, SLAB = BlockInitializer.registerBlock(baseName+"_slab", () -> new SlabBlock(blockSettings)); SLAB_ITEM = ItemInitializer.registerItem(baseName+"_slab", () -> new BlockItem(SLAB.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); - BUTTON = BlockInitializer.registerBlock(baseName+"_button", () -> new ButtonBlock(BlockSetType.OAK, 30, nonCollidable)); + BUTTON = BlockInitializer.registerBlock(baseName+"_button", () -> new ButtonBlock(BLOCK_SET.get(), 30, nonCollidable)); BUTTON_ITEM = ItemInitializer.registerItem(baseName+"_button", () -> new BlockItem(BUTTON.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); - PRESSURE_PLATE = BlockInitializer.registerBlock(baseName+"_pressure_plate", () -> new PressurePlateBlock(BlockSetType.OAK, nonCollidable)); + PRESSURE_PLATE = BlockInitializer.registerBlock(baseName+"_pressure_plate", () -> new PressurePlateBlock(BLOCK_SET.get(), nonCollidable)); PRESSURE_PLATE_ITEM = ItemInitializer.registerItem(baseName+"_pressure_plate", () -> new BlockItem(PRESSURE_PLATE.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); - DOOR = BlockInitializer.registerBlock(baseName+"_door", () -> new DoorBlock(BlockSetType.OAK, nonOpaque)); + DOOR = BlockInitializer.registerBlock(baseName+"_door", () -> new DoorBlock(BLOCK_SET.get(), nonOpaque)); DOOR_ITEM = ItemInitializer.registerItem(baseName+"_door", () -> new BlockItem(DOOR.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); - TRAPDOOR = BlockInitializer.registerBlock(baseName+"_trapdoor", () -> new TrapDoorBlock(BlockSetType.OAK, nonOpaque)); + TRAPDOOR = BlockInitializer.registerBlock(baseName+"_trapdoor", () -> new TrapDoorBlock(BLOCK_SET.get(), nonOpaque)); TRAPDOOR_ITEM = ItemInitializer.registerItem(baseName+"_trapdoor", () -> new BlockItem(TRAPDOOR.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); - var signId = WanderingWizardry.id(baseName); - ModdedSignBlock.SIGNS.add(signId); - SIGN = BlockInitializer.registerBlock(baseName+"_sign",() -> new ModdedStandingSignBlock(nonCollidable, signId)); - SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_sign", () -> new ModdedWallSignBlock(nonCollidable, signId)); + SIGN = BlockInitializer.registerBlock(baseName+"_sign",() -> new StandingSignBlock(TYPE.get(), nonCollidable)); + SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_sign", () -> new WallSignBlock(TYPE.get(), nonCollidable)); BlockInitializer.addSignBlocks((Lazy)(Object)SIGN, (Lazy)(Object)SIGN_WALL); SIGN_ITEM = ItemInitializer.registerItem(baseName+"_sign", () -> new SignItem(itemSettings, SIGN.get(), SIGN_WALL.get()), ItemInitializer.BLOCKS_STACKS); - HANGING_SIGN = BlockInitializer.registerBlock(baseName+"_hanging_sign", () -> new ModdedCeilingHangingSignBlock(nonCollidable, signId)); - HANGING_SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_hanging_sign", () -> new ModdedWallHangingSignBlock(nonCollidable, signId)); + HANGING_SIGN = BlockInitializer.registerBlock(baseName+"_hanging_sign", () -> new CeilingHangingSignBlock(TYPE.get(), nonCollidable)); + HANGING_SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_hanging_sign", () -> new WallHangingSignBlock(TYPE.get(), nonCollidable)); BlockInitializer.addHangingSignBlocks((Lazy)(Object)HANGING_SIGN, (Lazy)(Object)HANGING_SIGN_WALL); HANGING_SIGN_ITEM = ItemInitializer.registerItem(baseName+"_hanging_sign", () -> new HangingSignItem(HANGING_SIGN.get(), HANGING_SIGN_WALL.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); FENCE = BlockInitializer.registerBlock(baseName+"_fence", () -> new FenceBlock(blockSettings)); FENCE_ITEM = ItemInitializer.registerItem(baseName+"_fence", () -> new BlockItem(FENCE.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); - FENCE_GATE = BlockInitializer.registerBlock(baseName+"_fence_gate", () -> new FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.OAK, blockSettings)); + FENCE_GATE = BlockInitializer.registerBlock(baseName+"_fence_gate", () -> new FenceGateBlock(TYPE.get(), blockSettings)); FENCE_GATE_ITEM = ItemInitializer.registerItem(baseName+"_fence_gate", () -> new BlockItem(FENCE_GATE.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); if (!fungus) { @@ -169,6 +175,22 @@ public WoodType(String baseName, MapColor wood, MapColor bark, SoundType sounds, } } + private static Lazy createBlockSetType(String name, Supplier supplier) { + return Lazy.create(() -> { + var value = supplier.get(); + Accessor_BlockSetType.getTYPES().put(name, value); + return value; + }); + } + + private static Lazy createWoodType(String name, Supplier supplier) { + return Lazy.create(() -> { + var value = supplier.get(); + Accessor_WoodType.getTYPES().put(name, value); + return value; + }); + } + private static FungusBlock createFungusBlock(String baseName, Block base) { return new RootedMushroomBlock( BlockBehaviour.Properties diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java index f1cac042..058b9ed9 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java @@ -247,13 +247,11 @@ public class ItemInitializer { public static final Lazy MUSIC_DISC_WANDERING = registerItem( "music_disc_wandering", - () -> new RecordItem( - 10, - SoundInitializer.DISC_WANDERING.get(), + () -> new Item( new Item.Properties() .stacksTo(1) - .rarity(Rarity.RARE), - 140 + .rarity(Rarity.RARE) + .jukeboxPlayable(SoundInitializer.SONG_WANDERING) ), ITEMS_STACKS ); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java index b7eac455..8583a0ac 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java @@ -15,6 +15,7 @@ import net.minecraft.nbt.NbtUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.PlayerRespawnLogic; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; @@ -216,11 +217,6 @@ public InteractionResultHolder use(Level world, Player user, Interact return InteractionResultHolder.consume(stack); } - @Override - public int getUseDuration(ItemStack stack) { - return 30; - } - @Override public InteractionResult useOn(UseOnContext context) { BlockPos blockPos = context.getClickedPos(); @@ -260,12 +256,12 @@ public static PosAndWorld moveToSpawnPoint(MinecraftServer server, ServerPlayer var world = server.getLevel(player.getRespawnDimension()); if (world == null) return moveToWorldSpawn(server, player); - var _respawnPos = Player.findRespawnPositionAndUseSpawnBlock(world, pos, player.getRespawnAngle(), player.isRespawnForced(), true); + var _respawnPos = Accessor_ServerPlayer.invokeFindRespawnAndUseSpawnBlock(world, pos, player.getRespawnAngle(), player.isRespawnForced(), true); if (_respawnPos.isEmpty()) return moveToWorldSpawn(server, player); var respawnPos = _respawnPos.get(); - player.teleportTo(world, respawnPos.x, respawnPos.y, respawnPos.z, player.getRespawnAngle(), 0); - return new PosAndWorld(BlockPos.containing(respawnPos.x, respawnPos.y, respawnPos.z), world); + player.teleportTo(world, respawnPos.position().x, respawnPos.position().y, respawnPos.position().z, respawnPos.yaw(), 0); + return new PosAndWorld(BlockPos.containing(respawnPos.position().x, respawnPos.position().y, respawnPos.position().z), world); } private static PosAndWorld moveToWorldSpawn(MinecraftServer server, ServerPlayer player) { @@ -312,7 +308,7 @@ private static PosAndWorld moveToWorldSpawn(MinecraftServer server, ServerPlayer break; } while (blockPos.getY() + addY < world.getMaxBuildHeight() - 1); var center = blockPos.getCenter(); - player.teleportToWithTicket(center.x, blockPos.getY() + addY, center.z); + player.teleportTo(center.x, blockPos.getY() + addY, center.z); return new PosAndWorld(BlockPos.containing(center.x, blockPos.getY() + addY, center.z), world); } return new PosAndWorld(blockPos, null); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java index 438adf63..cd942aa4 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java @@ -37,12 +37,13 @@ public boolean tryCraft(AltarRecipeView view, Level world) { for (var i : bookDirs) { for (var enchant : EnchantmentHelper.getEnchantmentsForCrafting(view.getItemInPedestal(i)).entrySet()) { - if (!EnchantmentHelper.isEnchantmentCompatible(bookEnchants.keySet(), enchant.getKey().value()) && !Config.getAllowOpEnchants()) + if (!EnchantmentHelper.isEnchantmentCompatible(bookEnchants.keySet(), enchant.getKey()) && !Config.getAllowOpEnchants()) return false; - if (bookEnchants.getLevel(enchant.getKey().value()) > enchant.getIntValue()) - bookEnchants.upgrade(enchant.getKey().value(), enchant.getIntValue()); - else bookEnchants.set(enchant.getKey().value(), enchant.getIntValue()); + if (bookEnchants.getLevel(enchant.getKey()) > enchant.getIntValue()) + bookEnchants.upgrade(enchant.getKey(), enchant.getIntValue()); + else + bookEnchants.set(enchant.getKey(), enchant.getIntValue()); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java index be020721..0f62c253 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/SmithingCharmItem.java @@ -69,9 +69,9 @@ public boolean tryCraft(AltarRecipeView view, Level world) { if (maybeRecipe.isEmpty()) return false; var recipe = maybeRecipe.get().value(); - var container = new FakeContainer(templateStack, baseStack, additionStack); + var input = new SmithingRecipeInput(templateStack, baseStack, additionStack); view.keepCenter(); - view.setResultInPedestal(baseDirection, recipe.assemble(container, world.registryAccess())); + view.setResultInPedestal(baseDirection, recipe.assemble(input, world.registryAccess())); return true; } @@ -80,56 +80,4 @@ private Stream> getRecipes(RecipeManager manager) { return manager.getAllRecipesFor(RecipeType.SMITHING) .stream(); } - - private record FakeContainer(ItemStack template, ItemStack base, ItemStack material) implements Container { - @Override - public int getContainerSize() { - return 3; - } - - @Override - public boolean isEmpty() { - return false; - } - - @Override - public ItemStack getItem(int i) { - return switch (i) { - case 0 -> template; - case 1 -> base; - case 2 -> material; - default -> null; - }; - } - - @Override - public ItemStack removeItem(int i, int i1) { - return null; - } - - @Override - public ItemStack removeItemNoUpdate(int i) { - return null; - } - - @Override - public void setItem(int i, ItemStack itemStack) { - - } - - @Override - public void setChanged() { - - } - - @Override - public boolean stillValid(Player player) { - return false; - } - - @Override - public void clearContent() { - - } - } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/painting/PaintingInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/painting/PaintingInitializer.java index 3cb987ea..294771d3 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/painting/PaintingInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/painting/PaintingInitializer.java @@ -7,11 +7,4 @@ import net.minecraft.world.entity.decoration.PaintingVariant; public class PaintingInitializer { - public static RegistryContext PAINTINGS = new RegistryContext<>(BuiltInRegistries.PAINTING_VARIANT); - - public static final Lazy ALTAR_PAINTING = registerPainting("altar", 32, 32); - - public static Lazy registerPainting(String id, int width, int height) { - return PAINTINGS.register(WanderingWizardry.id(id), () -> new PaintingVariant(width, height)); - } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java index 0b34ba04..cefc04c1 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java @@ -28,9 +28,16 @@ public record AltarCatalyzationRecipe( ) implements Recipe, AltarCraftable { public static final TagKey ALTAR_AIR_MODIFIER = TagKey.create(Registries.ITEM, WanderingWizardry.id("altar_air_modifier")); + public static AltarCatalyzationRecipe create(Ingredient catalyst, List inputs, ItemStack result, boolean keepCatalyst, int bloom) { + WanderingWizardry.LOGGER.info("test"); + return new AltarCatalyzationRecipe(catalyst, inputs, result, keepCatalyst, bloom); + } + @Override public boolean matches(AltarRecipeView inventory, Level world) { + WanderingWizardry.LOGGER.info("aaaa"); if (!catalyst.test(inventory.getItemInPedestal(AltarRecipeView.AltarDirection.CENTER))) return false; + WanderingWizardry.LOGGER.info("center"); var met = new boolean[]{false, false, false, false}; var neighbors = inventory.getOuterItems(); for (var neighbor : neighbors) { @@ -45,6 +52,7 @@ public boolean matches(AltarRecipeView inventory, Level world) { } } for (var b : met) { + WanderingWizardry.LOGGER.info("{}", b); if (!b) return false; } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java index cb0e0a67..b9f87a02 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipeSerializer.java @@ -6,6 +6,8 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.Arrays; import java.util.List; + +import dev.sweetberry.wwizardry.WanderingWizardry; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; @@ -38,7 +40,7 @@ public class AltarCatalyzationRecipeSerializer implements RecipeSerializer STREAM_CODEC = StreamCodec.of( diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/sounds/SoundInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/sounds/SoundInitializer.java index 21ec39c4..328467dd 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/sounds/SoundInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/sounds/SoundInitializer.java @@ -4,12 +4,18 @@ import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.registry.RegistryContext; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.item.JukeboxSong; +import net.minecraft.world.item.JukeboxSongs; import net.minecraft.world.level.block.SoundType; public class SoundInitializer { public static final RegistryContext SOUNDS = new RegistryContext<>(BuiltInRegistries.SOUND_EVENT); public static final Lazy DISC_WANDERING = registerSound("music_disc.wandering"); + public static final ResourceKey SONG_WANDERING = song("wandering"); public static final Lazy SNAIL_PLACE = registerSound("entity.snail.place"); public static final Lazy SNAIL_BREAK = registerSound("entity.snail.break"); public static final Lazy SHELL_PLACE = registerSound("block.shell.place"); @@ -21,4 +27,8 @@ public static Lazy registerSound(String name) { var id = WanderingWizardry.id(name); return SOUNDS.register(id, () -> SoundEvent.createVariableRangeEvent(id)); } + + public static ResourceKey song(String key) { + return ResourceKey.create(Registries.JUKEBOX_SONG, WanderingWizardry.id(key)); + } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/duck/Duck_SignRenderer.java b/common/src/main/java/dev/sweetberry/wwizardry/duck/Duck_SignRenderer.java deleted file mode 100644 index 783c6ffc..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/duck/Duck_SignRenderer.java +++ /dev/null @@ -1,8 +0,0 @@ -package dev.sweetberry.wwizardry.duck; - -import net.minecraft.resources.ResourceLocation; - -public interface Duck_SignRenderer { - ResourceLocation wwizardry$getSignType(); - void wwizardry$setSignType(ResourceLocation id); -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BlockSetType.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BlockSetType.java new file mode 100644 index 00000000..f9a1a8c6 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BlockSetType.java @@ -0,0 +1,15 @@ +package dev.sweetberry.wwizardry.mixin; + +import net.minecraft.world.level.block.state.properties.BlockSetType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(BlockSetType.class) +public interface Accessor_BlockSetType { + @Accessor + static Map getTYPES() { + throw new IllegalCallerException(); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_ServerPlayer.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_ServerPlayer.java index e8a009aa..fee78ad0 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_ServerPlayer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_ServerPlayer.java @@ -1,11 +1,20 @@ package dev.sweetberry.wwizardry.mixin; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; +import java.util.Optional; + @Mixin(ServerPlayer.class) public interface Accessor_ServerPlayer { @Invoker int invokeGetCoprime(int horizontalSpawnArea); + + @Invoker + static Optional invokeFindRespawnAndUseSpawnBlock(ServerLevel $$0, BlockPos $$1, float $$2, boolean $$3, boolean $$4) { + throw new IllegalCallerException("Waaaa"); + } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_WoodType.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_WoodType.java new file mode 100644 index 00000000..e1f52f93 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_WoodType.java @@ -0,0 +1,15 @@ +package dev.sweetberry.wwizardry.mixin; + +import net.minecraft.world.level.block.state.properties.WoodType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(WoodType.class) +public interface Accessor_WoodType { + @Accessor + static Map getTYPES() { + throw new IllegalCallerException(); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_StructureTemplate.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_StructureTemplate.java index b87e8c3f..b6a85919 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_StructureTemplate.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_StructureTemplate.java @@ -6,6 +6,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.levelgen.structure.templatesystem.LiquidSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import org.spongepowered.asm.mixin.Mixin; @@ -23,6 +24,6 @@ public class Mixin_StructureTemplate { if (placementData.getProcessors().stream().allMatch( it -> ((Accessor_StructureProcessor)it).callGetType() == WorldgenInitializer.WATER_LOGGING_FIX.get() )) - placementData.setKeepLiquids(false); + placementData.setLiquidSettings(LiquidSettings.IGNORE_WATERLOGGING); } } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/mixin/client/Mixin_BoatRenderer.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BoatRenderer.java similarity index 68% rename from neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/mixin/client/Mixin_BoatRenderer.java rename to common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BoatRenderer.java index 4b6dd715..ac1df382 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/mixin/client/Mixin_BoatRenderer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BoatRenderer.java @@ -1,18 +1,14 @@ -package dev.sweetberry.wwizardry.neoforge.mixin.client; - +package dev.sweetberry.wwizardry.mixin.client; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.datafixers.util.Pair; -import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.client.WanderingWizardryClient; import dev.sweetberry.wwizardry.content.component.BoatComponent; import dev.sweetberry.wwizardry.content.component.ComponentInitializer; import net.minecraft.client.model.BoatModel; import net.minecraft.client.model.ChestBoatModel; import net.minecraft.client.model.ListModel; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.BoatRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.resources.ResourceLocation; @@ -27,14 +23,11 @@ import java.util.Map; @Mixin(BoatRenderer.class) -public abstract class Mixin_BoatRenderer { +public class Mixin_BoatRenderer { @Unique private final Map>> wwizardry$models = new HashMap<>(); - @Inject( - method = "", - at = @At("RETURN") - ) + @Inject(method = "", at = @At("RETURN")) private void wwizardry$buildCustomBoatModels(EntityRendererProvider.Context context, boolean chest, CallbackInfo ci) { for (var boat : BoatComponent.BOATS.keySet()) { var modelRoot = context.bakeLayer(WanderingWizardryClient.getBoatLayerLocation(boat, chest)); @@ -44,16 +37,13 @@ public abstract class Mixin_BoatRenderer { } @WrapOperation( - method = "render", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/renderer/entity/BoatRenderer;getModelWithLocation(Lnet/minecraft/world/entity/vehicle/Boat;)Lcom/mojang/datafixers/util/Pair;" - ) + method = "render(Lnet/minecraft/world/entity/vehicle/Boat;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", + at = @At(value = "INVOKE", target = "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;") ) - private Pair> wwizardry$useCustomBoatModel(BoatRenderer instance, Boat boat, Operation>> original) { + private V wwizardry$getBoat(Map instance, K key, Operation original, Boat boat) { var type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, boat).type; - if (type == null) - return original.call(instance, boat); - return wwizardry$models.get(type); + if (type != null) + return (V) wwizardry$models.get(type); + return instance.get(key); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_SignRenderer.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_SignRenderer.java deleted file mode 100644 index 3c49bd23..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_SignRenderer.java +++ /dev/null @@ -1,37 +0,0 @@ -package dev.sweetberry.wwizardry.mixin.client; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import dev.sweetberry.wwizardry.WanderingWizardry; -import dev.sweetberry.wwizardry.client.WanderingWizardryClient; -import dev.sweetberry.wwizardry.duck.Duck_SignRenderer; -import net.minecraft.client.renderer.blockentity.HangingSignRenderer; -import net.minecraft.client.renderer.blockentity.SignRenderer; -import net.minecraft.client.resources.model.Material; -import net.minecraft.world.level.block.state.properties.WoodType; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(SignRenderer.class) -public class Mixin_SignRenderer { - @WrapOperation( - method = "renderSign(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;IILnet/minecraft/world/level/block/state/properties/WoodType;Lnet/minecraft/client/model/Model;)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/renderer/blockentity/SignRenderer;getSignMaterial(Lnet/minecraft/world/level/block/state/properties/WoodType;)Lnet/minecraft/client/resources/model/Material;" - ) - ) - private Material wwizardry$getMaterial(SignRenderer instance, WoodType woodType, Operation original) { - var duck = (Duck_SignRenderer)instance; - var type = duck.wwizardry$getSignType(); - if (type == null) - return original.call(instance, woodType); - var material = ( - instance instanceof HangingSignRenderer - ? WanderingWizardryClient.HANGING_SIGN_MATERIALS - : WanderingWizardryClient.SIGN_MATERIALS - ).get(type); - duck.wwizardry$setSignType(null); - return material; - } -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_SignRenderer_HangingSignRenderer.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_SignRenderer_HangingSignRenderer.java deleted file mode 100644 index 819acc87..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_SignRenderer_HangingSignRenderer.java +++ /dev/null @@ -1,93 +0,0 @@ -package dev.sweetberry.wwizardry.mixin.client; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import com.mojang.blaze3d.vertex.PoseStack; -import dev.sweetberry.wwizardry.WanderingWizardry; -import dev.sweetberry.wwizardry.client.WanderingWizardryClient; -import dev.sweetberry.wwizardry.content.block.sign.ModdedSignBlock; -import dev.sweetberry.wwizardry.duck.Duck_SignRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.blockentity.HangingSignRenderer; -import net.minecraft.client.renderer.blockentity.SignRenderer; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.HashMap; -import java.util.Map; - -@Mixin({SignRenderer.class, HangingSignRenderer.class}) -public class Mixin_SignRenderer_HangingSignRenderer implements Duck_SignRenderer { - @Unique - private static final Map wwizardry$models = new HashMap<>(); - - @Unique - private static ResourceLocation wwizardry$type = null; - - @Inject(method = "", at = @At("RETURN")) - private void wwizardry$buildCustomSignModels(BlockEntityRendererProvider.Context context, CallbackInfo ci) { - var hanging = ((Object)this) instanceof HangingSignRenderer; - for (var sign : ModdedSignBlock.SIGNS) { - wwizardry$models.put(sign, hanging - ? new HangingSignRenderer.HangingSignModel( - context.bakeLayer( - WanderingWizardryClient.getSignLayerLocation( - sign, - true - ) - ) - ) - : new SignRenderer.SignModel( - context.bakeLayer( - WanderingWizardryClient.getSignLayerLocation( - sign, - false - ) - ) - ) - ); - } - } - - @Inject( - method = "render(Lnet/minecraft/world/level/block/entity/SignBlockEntity;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;II)V", - at = @At("HEAD") - ) - private void wwizardry$captureWoodType(SignBlockEntity signEntity, float $$1, PoseStack $$2, MultiBufferSource $$3, int $$4, int $$5, CallbackInfo ci) { - var block = signEntity.getBlockState().getBlock(); - if (block instanceof ModdedSignBlock moddedSign) { - wwizardry$type = moddedSign.getSignId(); - return; - } - wwizardry$type = null; - } - - @WrapOperation( - method = "render(Lnet/minecraft/world/level/block/entity/SignBlockEntity;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;II)V", - at = @At( - value = "INVOKE", - target = "java/util/Map.get(Ljava/lang/Object;)Ljava/lang/Object;" - ) - ) - private Object wwizardry$useCustomSignModel(Map instance, Object key, Operation original) { - if (wwizardry$type == null) - return original.call(instance, key); - return wwizardry$models.get(wwizardry$type); - } - - @Override - public ResourceLocation wwizardry$getSignType() { - return wwizardry$type; - } - - @Override - public void wwizardry$setSignType(ResourceLocation id) { - wwizardry$type = id; - } -} diff --git a/common/src/main/resources/data/wwizardry/jukebox_song/wandering.json b/common/src/main/resources/data/wwizardry/jukebox_song/wandering.json new file mode 100644 index 00000000..318179ee --- /dev/null +++ b/common/src/main/resources/data/wwizardry/jukebox_song/wandering.json @@ -0,0 +1,8 @@ +{ + "comparator_output": 15, + "description": { + "translate": "jukebox_song.wwizardry.wandering" + }, + "length_in_seconds": 140.0, + "sound_event": "wwizardry:music_disc.wandering" +} diff --git a/common/src/main/resources/data/wwizardry/painting_variant/altar.json b/common/src/main/resources/data/wwizardry/painting_variant/altar.json new file mode 100644 index 00000000..87f6bb8d --- /dev/null +++ b/common/src/main/resources/data/wwizardry/painting_variant/altar.json @@ -0,0 +1,5 @@ +{ + "asset_id": "wwizardry:altar", + "height": 2, + "width": 2 +} diff --git a/common/src/main/resources/wwizardry.accesswidener b/common/src/main/resources/wwizardry.accesswidener index ea883694..8092758e 100644 --- a/common/src/main/resources/wwizardry.accesswidener +++ b/common/src/main/resources/wwizardry.accesswidener @@ -3,11 +3,11 @@ accessWidener v1 named accessible class net/minecraft/world/level/block/entity/BlockEntityType$BlockEntitySupplier accessible class net/minecraft/world/item/alchemy/PotionBrewing$Mix accessible class net/minecraft/world/entity/npc/VillagerTrades$ItemsForEmeralds +accessible class net/minecraft/server/level/ServerPlayer$RespawnPosAngle accessible method net/minecraft/world/level/block/StairBlock (Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/IronBarsBlock (Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/TransparentBlock (Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V -accessible method net/minecraft/world/item/RecordItem (ILnet/minecraft/sounds/SoundEvent;Lnet/minecraft/world/item/Item$Properties;I)V accessible method net/minecraft/world/level/block/ButtonBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;ILnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/PressurePlateBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/DoorBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index 2f667664..e7c06437 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -6,10 +6,12 @@ "mixins": [ "Accessor_AxeItem", "Accessor_BlockEntityType", + "Accessor_BlockSetType", "Accessor_PlayerRespawnLogic", "Accessor_PotionBrewing", "Accessor_ServerPlayer", "Accessor_StructureProcessor", + "Accessor_WoodType", "Invoker_BlockBehaviour", "Mixin_Boat", "Mixin_DefaultAttributes", @@ -27,11 +29,10 @@ "defaultRequire": 1 }, "client": [ + "client.Mixin_BoatRenderer", "client.Mixin_ClientLevel", "client.Mixin_ItemInHandRenderer", - "client.Mixin_Model", - "client.Mixin_SignRenderer", - "client.Mixin_SignRenderer_HangingSignRenderer" + "client.Mixin_Model" ], "refmap": "wwizardry.refmap.json" } diff --git a/data/tags/c.fennec b/data/tags/c.fennec index f6d12b9f..b1be6abd 100644 --- a/data/tags/c.fennec +++ b/data/tags/c.fennec @@ -1,4 +1,4 @@ -blocks { +block { glass_blocks [ "wwizardry:reinforced_glass" ] @@ -10,7 +10,7 @@ blocks { "wwizardry:deepslate_rose_quartz_ore" ] } -items { +item { glass_blocks [ "wwizardry:reinforced_glass" ] diff --git a/data/tags/forge.fennec b/data/tags/forge.fennec index 60acd98f..4fae9206 100644 --- a/data/tags/forge.fennec +++ b/data/tags/forge.fennec @@ -1,4 +1,4 @@ -blocks { +block { glass [ "wwizardry:reinforced_glass" ] @@ -12,7 +12,7 @@ blocks { ] } } - items { + item { glass [ "wwizardry:reinforced_glass" ] diff --git a/data/tags/minecraft.fennec b/data/tags/minecraft.fennec index 1b9c6507..ceff9877 100644 --- a/data/tags/minecraft.fennec +++ b/data/tags/minecraft.fennec @@ -7,7 +7,7 @@ worldgen { } } -blocks { +block { mineable { axe [ "#wwizardry:wood/all" @@ -170,7 +170,7 @@ blocks { ] } -items { +item { music_discs [ "wwizardry:music_disc_wandering" ] diff --git a/data/tags/wwizardry.fennec b/data/tags/wwizardry.fennec index 12c16521..8d85af9e 100644 --- a/data/tags/wwizardry.fennec +++ b/data/tags/wwizardry.fennec @@ -1,4 +1,4 @@ -blocks { +block { damages_snail [ "copper_block" "exposed_copper" @@ -231,7 +231,7 @@ blocks { ] } -items { +item { snail_food [ "kelp" ] diff --git a/fabric/build.gradle b/fabric/build.gradle index ff4891f8..c4e0f41b 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -5,7 +5,7 @@ plugins { archivesBaseName = project.archives_base_name version = rootProject.version + "-fabric" -def test_compat = false +def test_compat = true repositories { maven { diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java index c6ea45c8..ad9c511e 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java @@ -21,6 +21,7 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.core.Registry; import java.util.List; diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/client/Mixin_BoatRenderer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/client/Mixin_BoatRenderer.java deleted file mode 100644 index ef38edf4..00000000 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/client/Mixin_BoatRenderer.java +++ /dev/null @@ -1,57 +0,0 @@ -package dev.sweetberry.wwizardry.fabric.mixin.client; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.datafixers.util.Pair; -import dev.sweetberry.wwizardry.client.WanderingWizardryClient; -import dev.sweetberry.wwizardry.content.component.BoatComponent; -import dev.sweetberry.wwizardry.content.component.ComponentInitializer; -import net.minecraft.client.model.BoatModel; -import net.minecraft.client.model.ChestBoatModel; -import net.minecraft.client.model.ListModel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.BoatRenderer; -import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.vehicle.Boat; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.HashMap; -import java.util.Map; - -@Mixin(BoatRenderer.class) -public abstract class Mixin_BoatRenderer { - @Unique - private final Map>> wwizardry$models = new HashMap<>(); - - @Unique - private ResourceLocation wwizardry$type = null; - - @Inject(method = "", at = @At("RETURN")) - private void wwizardry$buildCustomBoatModels(EntityRendererProvider.Context context, boolean chest, CallbackInfo ci) { - for (var boat : BoatComponent.BOATS.keySet()) { - var modelRoot = context.bakeLayer(WanderingWizardryClient.getBoatLayerLocation(boat, chest)); - var model = chest ? new ChestBoatModel(modelRoot) : new BoatModel(modelRoot); - wwizardry$models.put(boat, Pair.of(WanderingWizardryClient.getBoatTextureLocation(boat, chest), model)); - } - } - - @Inject(method = "render", at = @At("HEAD")) - private void wwizardry$captureWoodType(Boat boat, float yaw, float tickDelta, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, CallbackInfo ci) { - wwizardry$type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, boat).type; - } - - @WrapOperation(method = "render", at = @At(value = "INVOKE", target = "java/util/Map.get(Ljava/lang/Object;)Ljava/lang/Object;")) - private Object wwizardry$useCustomBoatModel(Map instance, Object key, Operation original) { - if (wwizardry$type == null) - return original.call(instance, key); - var model = wwizardry$models.get(wwizardry$type); - wwizardry$type = null; - return model; - } -} diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 12386ee8..afab0e5a 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -38,13 +38,12 @@ ] }, "mixins": [ - "wwizardry_fabric.mixins.json", "wwizardry.mixins.json" ], "depends": { "fabricloader": "*", "fabric-api": "*", - "minecraft": ">=1.20.5 <1.21" + "minecraft": "1.21.x" }, "custom": { "cardinal-components": [ diff --git a/fabric/src/main/resources/wwizardry_fabric.mixins.json b/fabric/src/main/resources/wwizardry_fabric.mixins.json deleted file mode 100644 index 332620e9..00000000 --- a/fabric/src/main/resources/wwizardry_fabric.mixins.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "required": true, - "minVersion": "0.8", - "package": "dev.sweetberry.wwizardry.fabric.mixin", - "compatibilityLevel": "JAVA_17", - "mixins": [], - "injectors": { - "defaultRequire": 1 - }, - "client": [ - "client.Mixin_BoatRenderer" - ] -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d314772b..7203811b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,19 +1,17 @@ [versions] -# The latest versions are available at https://lambdaurora.dev/tools/import_quilt.html -minecraft = "1.20.5" -fabric_loader = "0.15.10" -neoforge = "20.5.0-beta" +minecraft = "1.21" +fabric_loader = "0.15.11" +neoforge = "21.0.37-beta" mixin = "0.8.5" mixin_extras = "0.3.5" -fabric_api = "0.97.8+1.20.5" +fabric_api = "0.100.3+1.21" -terrablender = "1.20.5-3.4.0.2" -ccapi = "6.0.0-beta.2" +terrablender = "1.21-4.0.0.1" -emi = "1.1.6+1.20.6" -modmenu = "10.0.0-beta.1" +emi = "1.1.12+1.21" +modmenu = "11.0.1" [libraries] minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } @@ -38,8 +36,6 @@ fabric_loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric_l fabric_api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric_api" } -ccapi_base = { module = "dev.onyxstudios.cardinal-components-api:cardinal-components-base", version.ref = "ccapi" } -ccapi_entity = { module = "dev.onyxstudios.cardinal-components-api:cardinal-components-entity", version.ref = "ccapi" } modmenu = { module = "com.terraformersmc:modmenu", version.ref = "modmenu" } # If you have multiple similar dependencies, you can declare a dependency bundle and reference it on the build script with "libs.bundles.example". @@ -48,7 +44,7 @@ mixin = ["mixin", "mixin_extras"] include_common = ["terrablender_common"] -include_fabric = ["terrablender_fabric", "ccapi_base", "ccapi_entity"] +include_fabric = ["terrablender_fabric"] include_neoforge = ["terrablender_neoforge"] @@ -56,6 +52,7 @@ compat_fabric = ["emi_fabric", "modmenu"] [plugins] idea_ext = { id = "org.jetbrains.gradle.plugin.idea-ext", version = "1.1.8" } -loom = { id = "fabric-loom", version = "1.6-SNAPSHOT" } +loom = { id = "fabric-loom", version = "1.7-SNAPSHOT" } vanilla_gradle = { id = "org.spongepowered.gradle.vanilla", version = "0.2.1-SNAPSHOT" } neogradle = { id = "net.neoforged.gradle.userdev", version = "7.0.107" } +mod_dev_gradle = { id = "net.neoforged.moddev", version = "2.0.16-beta" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 48c0a02c..e1adfb49 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 04ac1680..63718225 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -1,38 +1,39 @@ plugins { id 'java' - alias libs.plugins.neogradle + alias libs.plugins.mod.dev.gradle id 'java-library' } -jarJar.enable() - -minecraft { - accessTransformers { - file('src/main/resources/accesstransformer.cfg') - } -} - -java.toolchain.languageVersion = JavaLanguageVersion.of(21) - -runs { - configureEach { - modSource project.sourceSets.main +neoForge { + version = libs.versions.neoforge.get() + var at = file('src/main/resources/accesstransformer.cfg') + if (at.exists()) { +// accessTransformers.add(at.absolutePath) } - - data { - programArguments.addAll '--mod', project.archives_base_name, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath() - } - - client { - systemProperty 'neoforge.enabledGameTestNamespaces', project.archives_base_name + runs { + configureEach { + systemProperty('neoforge.enabledGameTestNamespaces', "wwizardry") + ideName = "NeoForge ${it.name.capitalize()} (${project.path})" // Unify the run config names with fabric + } + client { + client() + } + data { + data() + } + server { + server() + } } - - server { - systemProperty 'neoforge.enabledGameTestNamespaces', project.archives_base_name - programArgument '--nogui' + mods { + "wwizardry" { + sourceSet sourceSets.main + } } } +java.toolchain.languageVersion = JavaLanguageVersion.of(21) + repositories { maven { name = "TerraformersMC" diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java index 635e5074..57119e36 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java @@ -9,6 +9,8 @@ import dev.sweetberry.wwizardry.neoforge.component.NeoForgeComponents; import dev.sweetberry.wwizardry.neoforge.networking.NeoForgeNetworking; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.blockentity.SignRenderer; +import net.minecraft.client.renderer.entity.BoatRenderer; import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.api.distmarker.Dist; diff --git a/neoforge/src/main/resources/META-INF/mods.toml b/neoforge/src/main/resources/META-INF/mods.toml index e67b9ec0..20207d89 100644 --- a/neoforge/src/main/resources/META-INF/mods.toml +++ b/neoforge/src/main/resources/META-INF/mods.toml @@ -13,8 +13,6 @@ authors = "Sweet Berry Collective" #optional description = '''An exploration focused magic mod''' #mandatory (Supports multiline text) [[mixins]] config = "wwizardry.mixins.json" -[[mixins]] -config = "wwizardry_neoforge.mixins.json" [[accessTransformers]] file="accesstransformer.cfg" [[dependencies.wwizardry]] #optional diff --git a/neoforge/src/main/resources/wwizardry_neoforge.mixins.json b/neoforge/src/main/resources/wwizardry_neoforge.mixins.json deleted file mode 100644 index 418e86f9..00000000 --- a/neoforge/src/main/resources/wwizardry_neoforge.mixins.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "required": true, - "minVersion": "0.8", - "package": "dev.sweetberry.wwizardry.neoforge.mixin", - "compatibilityLevel": "JAVA_17", - "mixins": [], - "injectors": { - "defaultRequire": 1 - }, - "client": [ - "client.Mixin_BoatRenderer" - ] -} From af382db5b727e20dd747be1f6e25ec9c31f216b9 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 23 Aug 2024 15:05:37 -0500 Subject: [PATCH 22/46] Fix data paths and modulo comparator --- .../wwizardry/content/block/BlockInitializer.java | 5 ++--- .../content/block/redstone/LogicGateBlock.java | 2 ++ .../adventure/altar_craft.json | 0 .../adventure/altar_place.json | 0 .../adventure/brewing_charm.json | 0 .../adventure/crafting_charm.json | 0 .../adventure/crystalline_sculk.json | 0 .../adventure/end_crystal.json | 0 .../adventure/forgotten_fields.json | 0 .../adventure/sculk_lab.json | 0 .../adventure/slot_charm.json | 0 .../adventure/soul_mirror.json | 0 .../adventure/soul_mirror_bound.json | 0 .../adventure/void_bag.json | 0 .../recipes/altar.json | 0 .../recipes/crystalline_sculk.json | 0 .../recipes/denia.json | 0 .../recipes/mycha.json | 0 .../recipes/reinforced_glass.json | 0 .../recipes/reinforced_glass_pane.json | 0 .../recipes/rose_quartz.json | 0 .../story/mine_rose_quartz.json | 0 .../sculk_lab/generic.json | 0 .../sculk_lab/kitchen_cabinet.json | 0 .../sculk_lab/linen_shelf.json | 0 .../sculk_lab/plant_box.json | 0 .../sculk_lab/portal_hidden.json | 0 .../sculk_lab/puzzle_reward.json | 0 .../{structures => structure}/sculk_lab/altar_1.nbt | Bin .../{structures => structure}/sculk_lab/altar_2.nbt | Bin .../{structures => structure}/sculk_lab/altar_3.nbt | Bin .../{structures => structure}/sculk_lab/altar_4.nbt | Bin .../{structures => structure}/sculk_lab/altar_5.nbt | Bin .../sculk_lab/brewing_stand_1.nbt | Bin .../sculk_lab/brewing_stand_2.nbt | Bin .../sculk_lab/brewing_stand_3.nbt | Bin .../sculk_lab/brewing_stand_4.nbt | Bin .../sculk_lab/hallway/corner/empty.nbt | Bin .../sculk_lab/hallway/corner/pedestal.nbt | Bin .../sculk_lab/hallway/corner/shrieker.nbt | Bin .../sculk_lab/hallway/cross.nbt | Bin .../sculk_lab/hallway/end_cap/barrel.nbt | Bin .../sculk_lab/hallway/end_cap/crimson.nbt | Bin .../sculk_lab/hallway/end_cap/pedestal.nbt | Bin .../sculk_lab/hallway/end_cap/warped.nbt | Bin .../sculk_lab/hallway/fork.nbt | Bin .../sculk_lab/hallway/stairs.nbt | Bin .../sculk_lab/hallway/straight.nbt | Bin .../sculk_lab/pot/natural_1.nbt | Bin .../sculk_lab/pot/natural_2.nbt | Bin .../sculk_lab/pot/natural_3.nbt | Bin .../sculk_lab/pot/natural_4.nbt | Bin .../sculk_lab/pot/nether_1.nbt | Bin .../sculk_lab/pot/nether_2.nbt | Bin .../sculk_lab/pot/nether_3.nbt | Bin .../sculk_lab/pot/nether_4.nbt | Bin .../sculk_lab/room/altar.nbt | Bin .../sculk_lab/room/bedroom.nbt | Bin .../sculk_lab/room/cafeteria.nbt | Bin .../sculk_lab/room/plant.nbt | Bin .../sculk_lab/room/portal.nbt | Bin .../sculk_lab/time_killer_1.nbt | Bin .../sculk_lab/time_killer_2.nbt | Bin .../sculk_lab/time_killer_3.nbt | Bin .../sculk_lab/time_killer_4.nbt | Bin 65 files changed, 4 insertions(+), 3 deletions(-) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/altar_craft.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/altar_place.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/brewing_charm.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/crafting_charm.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/crystalline_sculk.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/end_crystal.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/forgotten_fields.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/sculk_lab.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/slot_charm.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/soul_mirror.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/soul_mirror_bound.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/adventure/void_bag.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/recipes/altar.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/recipes/crystalline_sculk.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/recipes/denia.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/recipes/mycha.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/recipes/reinforced_glass.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/recipes/reinforced_glass_pane.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/recipes/rose_quartz.json (100%) rename common/src/main/resources/data/wwizardry/{advancements => advancement}/story/mine_rose_quartz.json (100%) rename common/src/main/resources/data/wwizardry/{loot_tables => loot_table}/sculk_lab/generic.json (100%) rename common/src/main/resources/data/wwizardry/{loot_tables => loot_table}/sculk_lab/kitchen_cabinet.json (100%) rename common/src/main/resources/data/wwizardry/{loot_tables => loot_table}/sculk_lab/linen_shelf.json (100%) rename common/src/main/resources/data/wwizardry/{loot_tables => loot_table}/sculk_lab/plant_box.json (100%) rename common/src/main/resources/data/wwizardry/{loot_tables => loot_table}/sculk_lab/portal_hidden.json (100%) rename common/src/main/resources/data/wwizardry/{loot_tables => loot_table}/sculk_lab/puzzle_reward.json (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/altar_1.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/altar_2.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/altar_3.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/altar_4.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/altar_5.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/brewing_stand_1.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/brewing_stand_2.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/brewing_stand_3.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/brewing_stand_4.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/corner/empty.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/corner/pedestal.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/corner/shrieker.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/cross.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/end_cap/barrel.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/end_cap/crimson.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/end_cap/pedestal.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/end_cap/warped.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/fork.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/stairs.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/hallway/straight.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/pot/natural_1.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/pot/natural_2.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/pot/natural_3.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/pot/natural_4.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/pot/nether_1.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/pot/nether_2.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/pot/nether_3.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/pot/nether_4.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/room/altar.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/room/bedroom.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/room/cafeteria.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/room/plant.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/room/portal.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/time_killer_1.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/time_killer_2.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/time_killer_3.nbt (100%) rename common/src/main/resources/data/wwizardry/{structures => structure}/sculk_lab/time_killer_4.nbt (100%) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java index c273d137..f096daa6 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java @@ -112,10 +112,9 @@ public class BlockInitializer { LogicGateBlock.SideInput.ALL, true, (state, mode, side, back) -> { - int value = side == 0 ? 0 : back % side; if (mode == ComparatorMode.SUBTRACT) - value = back - value; - return value; + return back - (side == 0 ? 0 : back % side); + return side == 0 ? back : back % side; } ) ); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java index 9dd9cb65..fd7adc73 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java @@ -1,6 +1,7 @@ package dev.sweetberry.wwizardry.content.block.redstone; import com.mojang.serialization.MapCodec; +import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.content.block.entity.LogicGateBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -76,6 +77,7 @@ private int calculateOutputSignal(Level world, BlockPos pos, BlockState state) { int back = getInputSignal(world, pos, state); int side = getAlternateSignal(world, pos, state); var mode = state.getValue(MODE); + WanderingWizardry.LOGGER.info("{}, {}, {}", back, side, mode); return function.compare(state, mode, side, back); } diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json b/common/src/main/resources/data/wwizardry/advancement/adventure/altar_craft.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/altar_craft.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/altar_craft.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/altar_place.json b/common/src/main/resources/data/wwizardry/advancement/adventure/altar_place.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/altar_place.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/altar_place.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/brewing_charm.json b/common/src/main/resources/data/wwizardry/advancement/adventure/brewing_charm.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/brewing_charm.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/brewing_charm.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/crafting_charm.json b/common/src/main/resources/data/wwizardry/advancement/adventure/crafting_charm.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/crafting_charm.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/crafting_charm.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/crystalline_sculk.json b/common/src/main/resources/data/wwizardry/advancement/adventure/crystalline_sculk.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/crystalline_sculk.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/crystalline_sculk.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/end_crystal.json b/common/src/main/resources/data/wwizardry/advancement/adventure/end_crystal.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/end_crystal.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/end_crystal.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json b/common/src/main/resources/data/wwizardry/advancement/adventure/forgotten_fields.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/forgotten_fields.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/forgotten_fields.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json b/common/src/main/resources/data/wwizardry/advancement/adventure/sculk_lab.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/sculk_lab.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/sculk_lab.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/slot_charm.json b/common/src/main/resources/data/wwizardry/advancement/adventure/slot_charm.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/slot_charm.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/slot_charm.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror.json b/common/src/main/resources/data/wwizardry/advancement/adventure/soul_mirror.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/soul_mirror.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror_bound.json b/common/src/main/resources/data/wwizardry/advancement/adventure/soul_mirror_bound.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/soul_mirror_bound.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/soul_mirror_bound.json diff --git a/common/src/main/resources/data/wwizardry/advancements/adventure/void_bag.json b/common/src/main/resources/data/wwizardry/advancement/adventure/void_bag.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/adventure/void_bag.json rename to common/src/main/resources/data/wwizardry/advancement/adventure/void_bag.json diff --git a/common/src/main/resources/data/wwizardry/advancements/recipes/altar.json b/common/src/main/resources/data/wwizardry/advancement/recipes/altar.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/recipes/altar.json rename to common/src/main/resources/data/wwizardry/advancement/recipes/altar.json diff --git a/common/src/main/resources/data/wwizardry/advancements/recipes/crystalline_sculk.json b/common/src/main/resources/data/wwizardry/advancement/recipes/crystalline_sculk.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/recipes/crystalline_sculk.json rename to common/src/main/resources/data/wwizardry/advancement/recipes/crystalline_sculk.json diff --git a/common/src/main/resources/data/wwizardry/advancements/recipes/denia.json b/common/src/main/resources/data/wwizardry/advancement/recipes/denia.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/recipes/denia.json rename to common/src/main/resources/data/wwizardry/advancement/recipes/denia.json diff --git a/common/src/main/resources/data/wwizardry/advancements/recipes/mycha.json b/common/src/main/resources/data/wwizardry/advancement/recipes/mycha.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/recipes/mycha.json rename to common/src/main/resources/data/wwizardry/advancement/recipes/mycha.json diff --git a/common/src/main/resources/data/wwizardry/advancements/recipes/reinforced_glass.json b/common/src/main/resources/data/wwizardry/advancement/recipes/reinforced_glass.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/recipes/reinforced_glass.json rename to common/src/main/resources/data/wwizardry/advancement/recipes/reinforced_glass.json diff --git a/common/src/main/resources/data/wwizardry/advancements/recipes/reinforced_glass_pane.json b/common/src/main/resources/data/wwizardry/advancement/recipes/reinforced_glass_pane.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/recipes/reinforced_glass_pane.json rename to common/src/main/resources/data/wwizardry/advancement/recipes/reinforced_glass_pane.json diff --git a/common/src/main/resources/data/wwizardry/advancements/recipes/rose_quartz.json b/common/src/main/resources/data/wwizardry/advancement/recipes/rose_quartz.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/recipes/rose_quartz.json rename to common/src/main/resources/data/wwizardry/advancement/recipes/rose_quartz.json diff --git a/common/src/main/resources/data/wwizardry/advancements/story/mine_rose_quartz.json b/common/src/main/resources/data/wwizardry/advancement/story/mine_rose_quartz.json similarity index 100% rename from common/src/main/resources/data/wwizardry/advancements/story/mine_rose_quartz.json rename to common/src/main/resources/data/wwizardry/advancement/story/mine_rose_quartz.json diff --git a/common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/generic.json b/common/src/main/resources/data/wwizardry/loot_table/sculk_lab/generic.json similarity index 100% rename from common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/generic.json rename to common/src/main/resources/data/wwizardry/loot_table/sculk_lab/generic.json diff --git a/common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/kitchen_cabinet.json b/common/src/main/resources/data/wwizardry/loot_table/sculk_lab/kitchen_cabinet.json similarity index 100% rename from common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/kitchen_cabinet.json rename to common/src/main/resources/data/wwizardry/loot_table/sculk_lab/kitchen_cabinet.json diff --git a/common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/linen_shelf.json b/common/src/main/resources/data/wwizardry/loot_table/sculk_lab/linen_shelf.json similarity index 100% rename from common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/linen_shelf.json rename to common/src/main/resources/data/wwizardry/loot_table/sculk_lab/linen_shelf.json diff --git a/common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/plant_box.json b/common/src/main/resources/data/wwizardry/loot_table/sculk_lab/plant_box.json similarity index 100% rename from common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/plant_box.json rename to common/src/main/resources/data/wwizardry/loot_table/sculk_lab/plant_box.json diff --git a/common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/portal_hidden.json b/common/src/main/resources/data/wwizardry/loot_table/sculk_lab/portal_hidden.json similarity index 100% rename from common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/portal_hidden.json rename to common/src/main/resources/data/wwizardry/loot_table/sculk_lab/portal_hidden.json diff --git a/common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/puzzle_reward.json b/common/src/main/resources/data/wwizardry/loot_table/sculk_lab/puzzle_reward.json similarity index 100% rename from common/src/main/resources/data/wwizardry/loot_tables/sculk_lab/puzzle_reward.json rename to common/src/main/resources/data/wwizardry/loot_table/sculk_lab/puzzle_reward.json diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_1.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_1.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_1.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_1.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_2.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_2.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_2.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_2.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_3.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_3.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_3.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_3.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_4.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_4.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_4.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_4.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_5.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_5.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/altar_5.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/altar_5.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/brewing_stand_1.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/brewing_stand_1.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/brewing_stand_1.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/brewing_stand_1.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/brewing_stand_2.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/brewing_stand_2.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/brewing_stand_2.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/brewing_stand_2.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/brewing_stand_3.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/brewing_stand_3.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/brewing_stand_3.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/brewing_stand_3.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/brewing_stand_4.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/brewing_stand_4.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/brewing_stand_4.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/brewing_stand_4.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/corner/empty.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/corner/empty.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/corner/empty.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/corner/empty.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/corner/pedestal.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/corner/pedestal.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/corner/pedestal.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/corner/pedestal.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/corner/shrieker.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/corner/shrieker.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/corner/shrieker.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/corner/shrieker.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/cross.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/cross.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/cross.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/cross.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/end_cap/barrel.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/end_cap/barrel.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/end_cap/barrel.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/end_cap/barrel.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/end_cap/crimson.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/end_cap/crimson.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/end_cap/crimson.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/end_cap/crimson.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/end_cap/pedestal.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/end_cap/pedestal.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/end_cap/pedestal.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/end_cap/pedestal.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/end_cap/warped.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/end_cap/warped.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/end_cap/warped.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/end_cap/warped.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/fork.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/fork.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/fork.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/fork.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/stairs.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/stairs.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/stairs.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/stairs.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/straight.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/straight.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/hallway/straight.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/hallway/straight.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/natural_1.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/natural_1.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/natural_1.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/natural_1.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/natural_2.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/natural_2.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/natural_2.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/natural_2.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/natural_3.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/natural_3.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/natural_3.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/natural_3.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/natural_4.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/natural_4.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/natural_4.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/natural_4.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/nether_1.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/nether_1.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/nether_1.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/nether_1.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/nether_2.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/nether_2.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/nether_2.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/nether_2.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/nether_3.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/nether_3.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/nether_3.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/nether_3.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/nether_4.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/nether_4.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/pot/nether_4.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/pot/nether_4.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/room/altar.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/room/altar.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/room/altar.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/room/altar.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/room/bedroom.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/room/bedroom.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/room/bedroom.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/room/bedroom.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/room/cafeteria.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/room/cafeteria.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/room/cafeteria.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/room/cafeteria.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/room/plant.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/room/plant.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/room/plant.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/room/plant.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/room/portal.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/room/portal.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/room/portal.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/room/portal.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/time_killer_1.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/time_killer_1.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/time_killer_1.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/time_killer_1.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/time_killer_2.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/time_killer_2.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/time_killer_2.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/time_killer_2.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/time_killer_3.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/time_killer_3.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/time_killer_3.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/time_killer_3.nbt diff --git a/common/src/main/resources/data/wwizardry/structures/sculk_lab/time_killer_4.nbt b/common/src/main/resources/data/wwizardry/structure/sculk_lab/time_killer_4.nbt similarity index 100% rename from common/src/main/resources/data/wwizardry/structures/sculk_lab/time_killer_4.nbt rename to common/src/main/resources/data/wwizardry/structure/sculk_lab/time_killer_4.nbt From 0c252006e50216876da89165c4828793097ea492 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 23 Aug 2024 17:43:02 -0500 Subject: [PATCH 23/46] Fix neoforge --- .../assets/wwizardry/lang/en_us.json | 2 +- .../wwizardry/WanderingWizardry.java | 2 - .../content/datagen/WoodTypeGen.java | 16 +++-- .../content/entity/EntityInitializer.java | 4 +- .../wwizardry/content/entity/Snail.java | 1 + .../content/item/SoulMirrorItem.java | 5 ++ .../wwizardry/mixin/Mixin_Boat.java | 7 ++- .../wwizardry/mixin/Mixin_ChestBoat.java | 30 +++++++++ .../src/main/resources/wwizardry.mixins.json | 3 +- data/lang/en_us.fennec | 3 +- .../wwizardry/fabric/FabricInitializer.java | 3 + .../mixin/Mixin_DefaultAttributes.java | 4 +- .../mixin/client/Mixin_BoatRenderer.java | 6 +- fabric/src/main/resources/fabric.mod.json | 3 +- .../resources/wwizardry.fabric.mixins.json | 15 +++++ neoforge/build.gradle | 10 ++- .../wwizardry/neoforge/NeoForgeEvents.java | 19 +++--- .../neoforge/NeoForgeInitializer.java | 20 ++++-- .../component/NeoForgeComponents.java | 2 +- .../neoforge/component/ProxyComponent.java | 7 ++- .../mixin/client/Mixin_BoatRenderer.java | 61 +++++++++++++++++++ .../{mods.toml => neoforge.mods.toml} | 4 +- .../resources/wwizardry.neoforge.mixins.json | 13 ++++ 23 files changed, 197 insertions(+), 43 deletions(-) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ChestBoat.java rename {common/src/main/java/dev/sweetberry/wwizardry => fabric/src/main/java/dev/sweetberry/wwizardry/fabric}/mixin/Mixin_DefaultAttributes.java (93%) rename {common/src/main/java/dev/sweetberry/wwizardry => fabric/src/main/java/dev/sweetberry/wwizardry/fabric}/mixin/client/Mixin_BoatRenderer.java (91%) create mode 100644 fabric/src/main/resources/wwizardry.fabric.mixins.json create mode 100644 neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/mixin/client/Mixin_BoatRenderer.java rename neoforge/src/main/resources/META-INF/{mods.toml => neoforge.mods.toml} (95%) create mode 100644 neoforge/src/main/resources/wwizardry.neoforge.mixins.json diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index 2b084fb5..2eccd318 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -1 +1 @@ -{"subtitles.wwizardry.snail.place":"Shell placed on snail","subtitles.wwizardry.snail.break":"Shell removed from snail","itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.snail_shell":"Snail Shell","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.music_disc_wandering.desc":"Moonkey - Wandering","item.wwizardry.snail_spawn_egg":"Snail Spawn Egg","entity.wwizardry.snail":"Snail","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file +{"jukebox_song.wwizardry.wandering":"Moonkey - Wandering","subtitles.wwizardry.snail.place":"Shell placed on snail","subtitles.wwizardry.snail.break":"Shell removed from snail","itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.snail_shell":"Snail Shell","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.snail_spawn_egg":"Snail Spawn Egg","entity.wwizardry.snail":"Snail","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java b/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java index 80f81bab..44e1dea0 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java @@ -25,8 +25,6 @@ public static void init(String platform) { init = true; WanderingWizardry.LOGGER.info("*tips altar* w'wizardry"); ContentInitializer.init(); - - BlockInitializer.registerSecondaryBlockFunctions(); } public static ResourceLocation id(String id) { diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java index 414437d0..0bda103e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java @@ -90,6 +90,14 @@ public WoodTypeGen(String baseName, MapColor wood, MapColor bark, SoundType soun final var blockSettings = BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_PLANKS).sound(sounds).mapColor(wood); final var nonCollidable = BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_PLANKS).sound(sounds).mapColor(wood).noCollission(); final var nonOpaque = BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_PLANKS).sound(sounds).mapColor(wood).noOcclusion(); + final var sign = BlockBehaviour.Properties + .ofFullCopy(Blocks.OAK_SIGN) + .sound(sounds) + .mapColor(wood); + final var hanging = BlockBehaviour.Properties + .ofFullCopy(Blocks.OAK_HANGING_SIGN) + .sound(sounds) + .mapColor(wood); final var itemSettings = new Item.Properties(); final var singleStack = new Item.Properties().stacksTo(1); @@ -138,13 +146,13 @@ public WoodTypeGen(String baseName, MapColor wood, MapColor bark, SoundType soun TRAPDOOR = BlockInitializer.registerBlock(baseName+"_trapdoor", () -> new TrapDoorBlock(BLOCK_SET.get(), nonOpaque)); TRAPDOOR_ITEM = ItemInitializer.registerItem(baseName+"_trapdoor", () -> new BlockItem(TRAPDOOR.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); - SIGN = BlockInitializer.registerBlock(baseName+"_sign",() -> new StandingSignBlock(TYPE.get(), nonCollidable)); - SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_sign", () -> new WallSignBlock(TYPE.get(), nonCollidable)); + SIGN = BlockInitializer.registerBlock(baseName+"_sign",() -> new StandingSignBlock(TYPE.get(), sign)); + SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_sign", () -> new WallSignBlock(TYPE.get(), sign)); BlockInitializer.addSignBlocks((Lazy)(Object)SIGN, (Lazy)(Object)SIGN_WALL); SIGN_ITEM = ItemInitializer.registerItem(baseName+"_sign", () -> new SignItem(itemSettings, SIGN.get(), SIGN_WALL.get()), ItemInitializer.BLOCKS_STACKS); - HANGING_SIGN = BlockInitializer.registerBlock(baseName+"_hanging_sign", () -> new CeilingHangingSignBlock(TYPE.get(), nonCollidable)); - HANGING_SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_hanging_sign", () -> new WallHangingSignBlock(TYPE.get(), nonCollidable)); + HANGING_SIGN = BlockInitializer.registerBlock(baseName+"_hanging_sign", () -> new CeilingHangingSignBlock(TYPE.get(), hanging)); + HANGING_SIGN_WALL = BlockInitializer.registerBlock(baseName+"_wall_hanging_sign", () -> new WallHangingSignBlock(TYPE.get(), hanging)); BlockInitializer.addHangingSignBlocks((Lazy)(Object)HANGING_SIGN, (Lazy)(Object)HANGING_SIGN_WALL); HANGING_SIGN_ITEM = ItemInitializer.registerItem(baseName+"_hanging_sign", () -> new HangingSignItem(HANGING_SIGN.get(), HANGING_SIGN_WALL.get(), itemSettings), ItemInitializer.BLOCKS_STACKS); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java index 30ca0460..76641d1d 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/EntityInitializer.java @@ -32,7 +32,7 @@ public class EntityInitializer { public static Lazy> registerEntity(String id, Supplier> entity, Supplier supplier) { var value = EntityInitializer.entities().register(WanderingWizardry.id(id), entity); - SUPPLIER_DATA.add(new AttributeSupplierData((Supplier>) (Object) value, supplier.get())); + SUPPLIER_DATA.add(new AttributeSupplierData((Supplier>) (Object) value, supplier)); return value; } @@ -40,5 +40,5 @@ public static RegistryContext> entities() { return (RegistryContext>) (Object) ENTITIES; } - public record AttributeSupplierData(Supplier> entity, AttributeSupplier supplier) {} + public record AttributeSupplierData(Supplier> entity, Supplier supplier) {} } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java index 39bf895e..7eebc218 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java @@ -65,6 +65,7 @@ protected void registerGoals() { } public static AttributeSupplier createAttributes() { + WanderingWizardry.LOGGER.info("god damn it"); return Mob .createMobAttributes() .add(Attributes.MOVEMENT_SPEED, 0.1) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java index 8583a0ac..9fc596df 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/SoulMirrorItem.java @@ -129,6 +129,11 @@ public UseAnim getUseAnimation(ItemStack stack) { return isFullyUsed(stack) ? UseAnim.NONE : UseAnim.CROSSBOW; } + @Override + public int getUseDuration(ItemStack stack, LivingEntity entity) { + return 30; + } + @Override public ItemStack finishUsingItem(ItemStack stack, Level world, LivingEntity user) { if (world.isClientSide || !(user instanceof ServerPlayer player)) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Boat.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Boat.java index 4b0812dd..4f2b3564 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Boat.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Boat.java @@ -2,6 +2,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.content.component.BoatComponent; import dev.sweetberry.wwizardry.content.component.ComponentInitializer; import net.minecraft.network.chat.Component; @@ -40,11 +41,11 @@ public class Mixin_Boat { private void wwizardry$getDropItem(CallbackInfoReturnable cir) { var self = (Boat)(Object)this; var type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, self).type; + WanderingWizardry.LOGGER.info("{}", type); if (type == null) return; var boat = BoatComponent.BOATS.get(type); - var chest = self instanceof ChestBoat; - cir.setReturnValue((chest ? boat.chest() : boat.boat()).get()); + cir.setReturnValue(boat.boat().get()); } @WrapOperation( @@ -54,7 +55,7 @@ public class Mixin_Boat { target = "Lnet/minecraft/world/entity/vehicle/Boat$Type;getPlanks()Lnet/minecraft/world/level/block/Block;" ) ) - private Block wwizardry$repacePlanks(Boat.Type instance, Operation original) { + private Block wwizardry$replacePlanks(Boat.Type instance, Operation original) { var self = (Boat)(Object)this; var type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, self).type; if (type == null) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ChestBoat.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ChestBoat.java new file mode 100644 index 00000000..9b3f22f7 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ChestBoat.java @@ -0,0 +1,30 @@ +package dev.sweetberry.wwizardry.mixin; + +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.content.component.BoatComponent; +import dev.sweetberry.wwizardry.content.component.ComponentInitializer; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.entity.vehicle.ChestBoat; +import net.minecraft.world.item.Item; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ChestBoat.class) +public class Mixin_ChestBoat { + @Inject( + method = "getDropItem", + at = @At("RETURN"), + cancellable = true + ) + private void wwizardry$getDropItem(CallbackInfoReturnable cir) { + var self = (Boat)(Object)this; + var type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, self).type; + WanderingWizardry.LOGGER.info("{}", type); + if (type == null) + return; + var boat = BoatComponent.BOATS.get(type); + cir.setReturnValue(boat.chest().get()); + } +} diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index e7c06437..b05d368a 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -14,7 +14,7 @@ "Accessor_WoodType", "Invoker_BlockBehaviour", "Mixin_Boat", - "Mixin_DefaultAttributes", + "Mixin_ChestBoat", "Mixin_Item", "Mixin_ItemEntity", "Mixin_MappedRegistry", @@ -29,7 +29,6 @@ "defaultRequire": 1 }, "client": [ - "client.Mixin_BoatRenderer", "client.Mixin_ClientLevel", "client.Mixin_ItemInHandRenderer", "client.Mixin_Model" diff --git a/data/lang/en_us.fennec b/data/lang/en_us.fennec index b608f034..ac56c800 100644 --- a/data/lang/en_us.fennec +++ b/data/lang/en_us.fennec @@ -1,3 +1,5 @@ +"jukebox_song.wwizardry.wandering" = "Moonkey - Wandering" + "subtitles.wwizardry" { snail { place = "Shell placed on snail" @@ -228,7 +230,6 @@ soul_mirror = "Soul Mirror" music_disc_wandering = "Music Disc" - "music_disc_wandering.desc" = "Moonkey - Wandering" snail_spawn_egg = "Snail Spawn Egg" } diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java index ad9c511e..ba3cbc4b 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java @@ -5,6 +5,7 @@ import dev.sweetberry.wwizardry.api.net.PacketRegistry; import dev.sweetberry.wwizardry.client.content.events.ClientEvents; import dev.sweetberry.wwizardry.content.ContentInitializer; +import dev.sweetberry.wwizardry.content.block.BlockInitializer; import dev.sweetberry.wwizardry.content.component.ComponentInitializer; import dev.sweetberry.wwizardry.content.events.UseBlockHandler; import dev.sweetberry.wwizardry.content.net.packet.ComponentSyncPacket; @@ -67,6 +68,8 @@ public void onInitialize() { FabricInitializer.addWanderingTradesFor(2); WanderingWizardry.init("fabric"); + + BlockInitializer.registerSecondaryBlockFunctions(); } private static void addWanderingTradesFor(int level) { diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_DefaultAttributes.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/Mixin_DefaultAttributes.java similarity index 93% rename from common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_DefaultAttributes.java rename to fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/Mixin_DefaultAttributes.java index 0a1ebab2..6eb12279 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_DefaultAttributes.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/Mixin_DefaultAttributes.java @@ -1,4 +1,4 @@ -package dev.sweetberry.wwizardry.mixin; +package dev.sweetberry.wwizardry.fabric.mixin; import dev.sweetberry.wwizardry.content.entity.EntityInitializer; import net.minecraft.world.entity.EntityType; @@ -20,7 +20,7 @@ public class Mixin_DefaultAttributes { private static void getModdedSupplier(EntityType entity, CallbackInfoReturnable cir) { for (var data : EntityInitializer.SUPPLIER_DATA) { if (data.entity().get() == entity) { - cir.setReturnValue(data.supplier()); + cir.setReturnValue(data.supplier().get()); return; } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BoatRenderer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/client/Mixin_BoatRenderer.java similarity index 91% rename from common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BoatRenderer.java rename to fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/client/Mixin_BoatRenderer.java index ac1df382..e42a8625 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BoatRenderer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/mixin/client/Mixin_BoatRenderer.java @@ -1,4 +1,4 @@ -package dev.sweetberry.wwizardry.mixin.client; +package dev.sweetberry.wwizardry.fabric.mixin.client; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; @@ -40,10 +40,10 @@ public class Mixin_BoatRenderer { method = "render(Lnet/minecraft/world/entity/vehicle/Boat;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", at = @At(value = "INVOKE", target = "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;") ) - private V wwizardry$getBoat(Map instance, K key, Operation original, Boat boat) { + private V wwizardry$getBoat(Map instance, Object key, Operation original, Boat boat) { var type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, boat).type; if (type != null) return (V) wwizardry$models.get(type); - return instance.get(key); + return original.call(instance, key); } } diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index afab0e5a..02fa86ca 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -38,7 +38,8 @@ ] }, "mixins": [ - "wwizardry.mixins.json" + "wwizardry.mixins.json", + "wwizardry.fabric.mixins.json" ], "depends": { "fabricloader": "*", diff --git a/fabric/src/main/resources/wwizardry.fabric.mixins.json b/fabric/src/main/resources/wwizardry.fabric.mixins.json new file mode 100644 index 00000000..de9293a9 --- /dev/null +++ b/fabric/src/main/resources/wwizardry.fabric.mixins.json @@ -0,0 +1,15 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "dev.sweetberry.wwizardry.fabric.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "Mixin_DefaultAttributes" + ], + "injectors": { + "defaultRequire": 1 + }, + "client": [ + "client.Mixin_BoatRenderer" + ] +} diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 63718225..6fcebc8d 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -4,11 +4,13 @@ plugins { id 'java-library' } +version = rootProject.version + "-neoforge" + neoForge { version = libs.versions.neoforge.get() var at = file('src/main/resources/accesstransformer.cfg') if (at.exists()) { -// accessTransformers.add(at.absolutePath) + accessTransformers = [at.absolutePath] } runs { configureEach { @@ -72,6 +74,7 @@ tasks.withType(JavaCompile).matching(notNeoTask).configureEach { it.options.encoding = 'UTF-8' it.options.release = 21 dependsOn ":generateData" + dependsOn processResources } tasks.withType(Javadoc).matching(notNeoTask).configureEach { @@ -82,7 +85,10 @@ processResources { from project(":common").sourceSets.main.resources inputs.property 'version', version - filesMatching('META-INF/mods.toml') { + filesMatching('META-INF/neoforge.mods.toml') { expand "version": version } } + +test.onlyIf { false } +compileTestJava.onlyIf { false } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java index 240c3d87..0517c92b 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java @@ -1,29 +1,21 @@ package dev.sweetberry.wwizardry.neoforge; import com.mojang.datafixers.util.Either; -import dev.sweetberry.wwizardry.api.net.PacketRegistry; import dev.sweetberry.wwizardry.client.WanderingWizardryClient; import dev.sweetberry.wwizardry.client.content.events.ItemTooltipHandler; import dev.sweetberry.wwizardry.content.events.UseBlockHandler; -import dev.sweetberry.wwizardry.content.net.packet.ComponentSyncPacket; -import dev.sweetberry.wwizardry.neoforge.component.NeoForgeComponents; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.client.renderer.entity.BoatRenderer; import net.minecraft.network.chat.FormattedText; import net.minecraft.world.InteractionResult; import net.minecraft.world.ItemInteractionResult; -import net.minecraft.world.entity.Entity; import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.block.TransparentBlock; import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.neoforge.client.event.ClientTickEvent; import net.neoforged.neoforge.client.event.RenderTooltipEvent; import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.event.TickEvent; -import net.neoforged.neoforge.event.entity.EntityJoinLevelEvent; import net.neoforged.neoforge.event.entity.player.UseItemOnBlockEvent; -import net.neoforged.neoforge.network.PacketDistributor; - -import java.util.ArrayList; -import java.util.List; public class NeoForgeEvents { public static void init() { @@ -43,6 +35,11 @@ public static void onTooltip(RenderTooltipEvent.GatherComponents event) { ); } + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post ev) { + WanderingWizardryClient.tickCounter++; + } + @SubscribeEvent public static void onUseOnBlock(UseItemOnBlockEvent event) { var result = UseBlockHandler.onBlockUse( diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java index 57119e36..484d953a 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java @@ -6,21 +6,23 @@ import dev.sweetberry.wwizardry.client.content.events.PackReloader; import dev.sweetberry.wwizardry.compat.terrablender.TerraBlenderInitializer; import dev.sweetberry.wwizardry.content.ContentInitializer; +import dev.sweetberry.wwizardry.content.block.BlockInitializer; +import dev.sweetberry.wwizardry.content.entity.EntityInitializer; import dev.sweetberry.wwizardry.neoforge.component.NeoForgeComponents; import dev.sweetberry.wwizardry.neoforge.networking.NeoForgeNetworking; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.blockentity.SignRenderer; -import net.minecraft.client.renderer.entity.BoatRenderer; import net.minecraft.client.renderer.item.ItemProperties; -import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.ModList; import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.client.event.ClientTickEvent; import net.neoforged.neoforge.client.event.EntityRenderersEvent; import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent; +import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; import net.neoforged.neoforge.registries.RegisterEvent; @Mod("wwizardry") @@ -28,6 +30,7 @@ public class NeoForgeInitializer { public NeoForgeInitializer(IEventBus bus, Dist dist) { bus.addListener(this::registerToRegistries); bus.addListener(this::commonSetup); + bus.addListener(this::createEntityAttributes); WanderingWizardry.modLoadedCheck = ModList.get()::isLoaded; NeoForgeEvents.init(); NeoForgeComponents.init(bus); @@ -55,11 +58,20 @@ private void commonSetup(final FMLCommonSetupEvent event) { event.enqueueWork(TerraBlenderInitializer::init); } + @SubscribeEvent + public void createEntityAttributes(EntityAttributeCreationEvent event) { + EntityInitializer.SUPPLIER_DATA.forEach(it -> { + event.put((EntityType) it.entity().get(), it.supplier().get()); + }); + } + @SubscribeEvent public void registerToRegistries(RegisterEvent event) { ContentInitializer.listenToAll(((registry, id, item) -> { event.register(registry.key(), id, item); })); + + BlockInitializer.registerSecondaryBlockFunctions(); } @SubscribeEvent diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/NeoForgeComponents.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/NeoForgeComponents.java index 2235dfa1..b9df3013 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/NeoForgeComponents.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/NeoForgeComponents.java @@ -35,7 +35,7 @@ public static > T get(ResourceLocation id, Entity entity) return (T) entity.getData(COMPONENTS.get(id)).component; } - private static Supplier>> create(String id, Supplier supplier) { + private static > Supplier>> create(String id, Supplier supplier) { Supplier>> type = ATTACHMENT_TYPES.register( id, () -> AttachmentType.serializable(() -> new ProxyComponent(supplier.get())).build() diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java index 55ae17d3..f53ab620 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/component/ProxyComponent.java @@ -1,5 +1,6 @@ package dev.sweetberry.wwizardry.neoforge.component; +import com.mojang.datafixers.util.Pair; import dev.sweetberry.wwizardry.api.component.Component; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -7,7 +8,7 @@ import net.minecraft.nbt.Tag; import net.neoforged.neoforge.common.util.INBTSerializable; -public class ProxyComponent implements INBTSerializable { +public class ProxyComponent> implements INBTSerializable { public T component; public ProxyComponent(T component) { @@ -17,11 +18,11 @@ public ProxyComponent(T component) { @Override public Tag serializeNBT(HolderLookup.Provider provider) { var tag = new CompoundTag(); - return (Tag) component.codec().encode(component, NbtOps.INSTANCE, tag).result().orElse(tag); + return component.codec().encode(component, NbtOps.INSTANCE, tag).result().orElse(tag); } @Override public void deserializeNBT(HolderLookup.Provider provider, Tag nbt) { - component = (T) component.codec().decode(NbtOps.INSTANCE, nbt).result().orElse(component); + component = component.codec().decode(NbtOps.INSTANCE, nbt).result().orElse(Pair.of(component, nbt)).getFirst(); } } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/mixin/client/Mixin_BoatRenderer.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/mixin/client/Mixin_BoatRenderer.java new file mode 100644 index 00000000..53289762 --- /dev/null +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/mixin/client/Mixin_BoatRenderer.java @@ -0,0 +1,61 @@ +package dev.sweetberry.wwizardry.neoforge.mixin.client; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mojang.datafixers.util.Pair; +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.client.WanderingWizardryClient; +import dev.sweetberry.wwizardry.content.component.BoatComponent; +import dev.sweetberry.wwizardry.content.component.ComponentInitializer; +import net.minecraft.client.model.BoatModel; +import net.minecraft.client.model.ChestBoatModel; +import net.minecraft.client.model.ListModel; +import net.minecraft.client.renderer.entity.BoatRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.vehicle.Boat; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.HashMap; +import java.util.Map; + +@Mixin(BoatRenderer.class) +public class Mixin_BoatRenderer { + @Unique + private final Map>> wwizardry$models = new HashMap<>(); + + @Inject(method = "", at = @At("RETURN")) + private void wwizardry$buildCustomBoatModels(EntityRendererProvider.Context context, boolean chest, CallbackInfo ci) { + for (var boat : BoatComponent.BOATS.keySet()) { + var modelRoot = context.bakeLayer(WanderingWizardryClient.getBoatLayerLocation(boat, chest)); + var model = chest ? new ChestBoatModel(modelRoot) : new BoatModel(modelRoot); + wwizardry$models.put(boat, Pair.of(WanderingWizardryClient.getBoatTextureLocation(boat, chest), model)); + } + } + + @WrapOperation( + method = "render(Lnet/minecraft/world/entity/vehicle/Boat;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/BoatRenderer;getModelWithLocation(Lnet/minecraft/world/entity/vehicle/Boat;)Lcom/mojang/datafixers/util/Pair;") + ) + private Pair> wwizardry$getBoat(BoatRenderer instance, Boat boat, Operation>> original) { + var type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, boat).type; + if (type != null) + return wwizardry$models.get(type); + return original.call(instance, boat); + } + + @WrapOperation( + method = "getTextureLocation(Lnet/minecraft/world/entity/vehicle/Boat;)Lnet/minecraft/resources/ResourceLocation;", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/BoatRenderer;getModelWithLocation(Lnet/minecraft/world/entity/vehicle/Boat;)Lcom/mojang/datafixers/util/Pair;") + ) + private Pair> wwizardry$getBoat2(BoatRenderer instance, Boat boat, Operation>> original) { + var type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, boat).type; + if (type != null) + return wwizardry$models.get(type); + return original.call(instance, boat); + } +} diff --git a/neoforge/src/main/resources/META-INF/mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml similarity index 95% rename from neoforge/src/main/resources/META-INF/mods.toml rename to neoforge/src/main/resources/META-INF/neoforge.mods.toml index 20207d89..984bb7e7 100644 --- a/neoforge/src/main/resources/META-INF/mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -13,6 +13,8 @@ authors = "Sweet Berry Collective" #optional description = '''An exploration focused magic mod''' #mandatory (Supports multiline text) [[mixins]] config = "wwizardry.mixins.json" +[[mixins]] +config = "wwizardry.neoforge.mixins.json" [[accessTransformers]] file="accesstransformer.cfg" [[dependencies.wwizardry]] #optional @@ -24,6 +26,6 @@ side = "BOTH" # Side this dependency is applied on - 'BOTH', 'CLIENT' or 'SERVER [[dependencies.wwizardry]] modId = "minecraft" type="required" #mandatory (Can be one of "required", "optional", "incompatible" or "discouraged") -versionRange = "[1.20.5,)" +versionRange = "[1.21,)" ordering = "NONE" side = "BOTH" diff --git a/neoforge/src/main/resources/wwizardry.neoforge.mixins.json b/neoforge/src/main/resources/wwizardry.neoforge.mixins.json new file mode 100644 index 00000000..418e86f9 --- /dev/null +++ b/neoforge/src/main/resources/wwizardry.neoforge.mixins.json @@ -0,0 +1,13 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "dev.sweetberry.wwizardry.neoforge.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [], + "injectors": { + "defaultRequire": 1 + }, + "client": [ + "client.Mixin_BoatRenderer" + ] +} From d099fec7e05f112dbb569f84b729a7fd483f6e89 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 23 Aug 2024 17:50:39 -0500 Subject: [PATCH 24/46] Alpha 3 --- gradle.properties | 2 +- neoforge/build.gradle | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index efc875fa..ee87e3df 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.daemon=false # Mod Properties version = 1.1.0 -classification = alpha.2 +classification = alpha.3 maven_group = dev.sweetberry archives_base_name = wwizardry diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 6fcebc8d..521ec04a 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -4,6 +4,7 @@ plugins { id 'java-library' } +archivesBaseName = project.archives_base_name version = rootProject.version + "-neoforge" neoForge { From 6a380dea9661006aeee559bc9d1a57d37ff181b8 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 23 Aug 2024 20:57:15 -0500 Subject: [PATCH 25/46] Armor trim materials --- .../data/minecraft/tags/item/trim_materials.json | 1 + .../maps/trimmed/texture/material_suffixes.json | 6 ++++++ .../trims/color_palettes/crystalline_sculk.png | Bin 0 -> 102 bytes .../textures/trims/color_palettes/rose_quartz.png | Bin 0 -> 99 bytes .../trim_material/crystalline_sculk.json | 9 +++++++++ .../data/wwizardry/trim_material/rose_quartz.json | 9 +++++++++ data/lang/en_us.fennec | 5 +++++ data/tags/minecraft.fennec | 5 +++++ gradle/libs.versions.toml | 10 ++++++++-- neoforge/build.gradle | 11 +++++++++++ 10 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 common/src/generated/resources/data/minecraft/tags/item/trim_materials.json create mode 100644 common/src/main/resources/assets/trimmed/trimmed/maps/trimmed/texture/material_suffixes.json create mode 100644 common/src/main/resources/assets/wwizardry/textures/trims/color_palettes/crystalline_sculk.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/trims/color_palettes/rose_quartz.png create mode 100644 common/src/main/resources/data/wwizardry/trim_material/crystalline_sculk.json create mode 100644 common/src/main/resources/data/wwizardry/trim_material/rose_quartz.json diff --git a/common/src/generated/resources/data/minecraft/tags/item/trim_materials.json b/common/src/generated/resources/data/minecraft/tags/item/trim_materials.json new file mode 100644 index 00000000..0da50d6f --- /dev/null +++ b/common/src/generated/resources/data/minecraft/tags/item/trim_materials.json @@ -0,0 +1 @@ +{"replace":false,"values":[{"required":false,"id":"wwizardry:rose_quartz"},{"required":false,"id":"wwizardry:crystalline_sculk"}]} \ No newline at end of file diff --git a/common/src/main/resources/assets/trimmed/trimmed/maps/trimmed/texture/material_suffixes.json b/common/src/main/resources/assets/trimmed/trimmed/maps/trimmed/texture/material_suffixes.json new file mode 100644 index 00000000..6e2c270f --- /dev/null +++ b/common/src/main/resources/assets/trimmed/trimmed/maps/trimmed/texture/material_suffixes.json @@ -0,0 +1,6 @@ +{ + "values": { + "wwizardry:trims/color_palettes/rose_quartz": "wwizardry_rose_quartz", + "wwizardry:trims/color_palettes/crystalline_sculk": "wwizardry_crystalline_sculk" + } +} diff --git a/common/src/main/resources/assets/wwizardry/textures/trims/color_palettes/crystalline_sculk.png b/common/src/main/resources/assets/wwizardry/textures/trims/color_palettes/crystalline_sculk.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b47633741e2f59944b87eb878a702434eb0324 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^96-#-!3HEBGrV^OQaYY4jv*Y;jEW5R{xfRcfBpZ> ziK7g^&)#8Rc=d$g*QXB*KR6UhLGRFe%ocH2m|#oc)I$ztaD0eVgLZS Cts)}; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/trims/color_palettes/rose_quartz.png b/common/src/main/resources/assets/wwizardry/textures/trims/color_palettes/rose_quartz.png new file mode 100644 index 0000000000000000000000000000000000000000..bb9ca73332416233713b453031f22837e433b570 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^96-#-!3HEBGrV^OQd*uajv*Y;$$yG}UHhNUKhN+_ z&G(59A3yi!v2XbDo`1f?y1f;LKD;_?&Bie0nYh-IGdTx=x)?lN{an^LB{Ts5n8za` literal 0 HcmV?d00001 diff --git a/common/src/main/resources/data/wwizardry/trim_material/crystalline_sculk.json b/common/src/main/resources/data/wwizardry/trim_material/crystalline_sculk.json new file mode 100644 index 00000000..89cecc4c --- /dev/null +++ b/common/src/main/resources/data/wwizardry/trim_material/crystalline_sculk.json @@ -0,0 +1,9 @@ +{ + "asset_name": "wwizardry_crystalline_sculk", + "description": { + "color": "#0a5060", + "translate": "wwizardry.trim_material.crystalline_sculk" + }, + "ingredient": "wwizardry:crystalline_sculk", + "item_model_index": 1036417063.5174 +} diff --git a/common/src/main/resources/data/wwizardry/trim_material/rose_quartz.json b/common/src/main/resources/data/wwizardry/trim_material/rose_quartz.json new file mode 100644 index 00000000..f9ec25dd --- /dev/null +++ b/common/src/main/resources/data/wwizardry/trim_material/rose_quartz.json @@ -0,0 +1,9 @@ +{ + "asset_name": "wwizardry_rose_quartz", + "description": { + "color": "#d47a94", + "translate": "wwizardry.trim_material.rose_quartz" + }, + "ingredient": "wwizardry:rose_quartz", + "item_model_index": 652681283.69607 +} diff --git a/data/lang/en_us.fennec b/data/lang/en_us.fennec index ac56c800..eb4cbdaf 100644 --- a/data/lang/en_us.fennec +++ b/data/lang/en_us.fennec @@ -7,6 +7,11 @@ } } +"wwizardry.trim_material" { + "rose_quartz" = "Rose Quartz" + "crystalling_sculk" = "Crystalline Sculk" +} + "itemGroup.wwizardry" { items = "Wandering Wizardry Items" blocks = "Wandering Wizardry Blocks" diff --git a/data/tags/minecraft.fennec b/data/tags/minecraft.fennec index ceff9877..47df810b 100644 --- a/data/tags/minecraft.fennec +++ b/data/tags/minecraft.fennec @@ -171,6 +171,11 @@ block { } item { + trim_materials [ + "wwizardry:rose_quartz" + "wwizardry:crystalline_sculk" + ] + music_discs [ "wwizardry:music_disc_wandering" ] diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7203811b..251c18cc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,6 +13,9 @@ terrablender = "1.21-4.0.0.1" emi = "1.1.12+1.21" modmenu = "11.0.1" +trimmed_fabric = "1.21-3.0.0+fabric" +trimmed_neoforge = "1.21-3.0.0+neoforge" + [libraries] minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } @@ -28,6 +31,9 @@ emi_common = { module = "dev.emi:emi-xplat-mojmap", version.ref = "emi" } emi_fabric = { module = "dev.emi:emi-fabric", version.ref = "emi" } emi_neoforge = { module = "dev.emi:emi-neoforge", version.ref = "emi" } +trimmed_neoforge = { module = "maven.modrinth:trimmed", version.ref = "trimmed_neoforge" } +trimmed_fabric = { module = "maven.modrinth:trimmed", version.ref = "trimmed_fabric" } + # Neoforge neoforge = { module = "net.neoforged:neoforge", version.ref = "neoforge" } @@ -44,9 +50,9 @@ mixin = ["mixin", "mixin_extras"] include_common = ["terrablender_common"] -include_fabric = ["terrablender_fabric"] +include_fabric = ["terrablender_fabric", "trimmed_fabric"] -include_neoforge = ["terrablender_neoforge"] +include_neoforge = ["terrablender_neoforge", "trimmed_neoforge"] compat_fabric = ["emi_fabric", "modmenu"] diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 521ec04a..1b1e2948 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -46,6 +46,17 @@ repositories { name = "Forge" url = "https://maven.minecraftforge.net/" } + exclusiveContent { + forRepository { + maven { + name = "Modrinth" + url = "https://api.modrinth.com/maven" + } + } + filter { + includeGroup "maven.modrinth" + } + } } //sourceSets.main.resources { srcDir 'src/generated/resources' } From e4371ae89989cd8e80130b9e0bea9e6f06d2b3dc Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 24 Aug 2024 21:28:29 -0500 Subject: [PATCH 26/46] Copper lens (todo: other copper lens variants) --- .../blockstates/altar_catalyzer.json | 34 +- .../wwizardry/blockstates/altar_pedestal.json | 102 +++++- .../assets/wwizardry/blockstates/camera.json | 20 +- .../blockstates/crystalline_sculk_block.json | 8 +- .../deepslate_rose_quartz_ore.json | 8 +- .../blockstates/indigo_caeruleum.json | 8 +- .../blockstates/modulo_comparator.json | 65 +++- .../wwizardry/blockstates/mycelial_sand.json | 22 +- .../wwizardry/blockstates/mycha_roots.json | 8 +- .../blockstates/redstone_lantern.json | 11 +- .../blockstates/redstone_stepper.json | 65 +++- .../blockstates/reinforced_glass.json | 8 +- .../blockstates/reinforced_glass_pane.json | 78 ++++- .../blockstates/rose_quartz_block.json | 8 +- .../blockstates/rose_quartz_ore.json | 8 +- .../blockstates/sculk_resonator.json | 20 +- .../wwizardry/blockstates/sculkflower.json | 32 +- .../wwizardry/blockstates/snail_shell.json | 20 +- .../wwizardry/blockstates/wall_holder.json | 20 +- .../blockstates/waxed_copper_lens.json | 52 ++++ .../assets/wwizardry/lang/en_us.json | 168 +++++++++- .../data/c/tags/block/glass_blocks.json | 10 +- .../data/c/tags/block/glass_panes.json | 10 +- .../data/c/tags/block/rose_quartz_ores.json | 14 +- .../data/c/tags/item/glass_blocks.json | 10 +- .../data/c/tags/item/glass_panes.json | 10 +- .../data/c/tags/item/rose_quartz_ores.json | 14 +- .../data/c/tags/item/rose_quartzes.json | 14 +- .../data/forge/tags/block/glass.json | 10 +- .../data/forge/tags/block/glass_panes.json | 10 +- .../forge/tags/block/ores/rose_quartz.json | 14 +- .../resources/data/forge/tags/item/glass.json | 10 +- .../data/forge/tags/item/glass_panes.json | 10 +- .../forge/tags/item/ores/rose_quartz.json | 14 +- .../data/forge/tags/item/rose_quartzes.json | 14 +- .../tags/block/all_hanging_signs.json | 22 +- .../tags/block/ceiling_hanging_signs.json | 14 +- .../tags/block/crystal_sound_blocks.json | 14 +- .../minecraft/tags/block/fence_gates.json | 14 +- .../data/minecraft/tags/block/fences.json | 14 +- .../data/minecraft/tags/block/flowers.json | 14 +- .../minecraft/tags/block/impermeable.json | 10 +- .../data/minecraft/tags/block/leaves.json | 10 +- .../data/minecraft/tags/block/logs.json | 10 +- .../minecraft/tags/block/logs_that_burn.json | 10 +- .../minecraft/tags/block/mineable/axe.json | 10 +- .../minecraft/tags/block/mineable/hoe.json | 14 +- .../tags/block/mineable/pickaxe.json | 42 ++- .../data/minecraft/tags/block/planks.json | 14 +- .../data/minecraft/tags/block/slabs.json | 38 ++- .../data/minecraft/tags/block/stairs.json | 30 +- .../minecraft/tags/block/standing_signs.json | 14 +- .../tags/block/vibration_resonators.json | 14 +- .../tags/block/wall_hanging_signs.json | 14 +- .../data/minecraft/tags/block/wall_signs.json | 14 +- .../data/minecraft/tags/block/walls.json | 38 ++- .../minecraft/tags/block/wart_blocks.json | 10 +- .../minecraft/tags/block/wooden_buttons.json | 14 +- .../minecraft/tags/block/wooden_doors.json | 14 +- .../tags/block/wooden_pressure_plates.json | 14 +- .../minecraft/tags/block/wooden_slabs.json | 14 +- .../minecraft/tags/block/wooden_stairs.json | 14 +- .../tags/block/wooden_trapdoors.json | 14 +- .../data/minecraft/tags/item/fence_gates.json | 14 +- .../data/minecraft/tags/item/fences.json | 14 +- .../data/minecraft/tags/item/flowers.json | 14 +- .../minecraft/tags/item/hanging_signs.json | 14 +- .../data/minecraft/tags/item/leaves.json | 10 +- .../data/minecraft/tags/item/logs.json | 10 +- .../minecraft/tags/item/logs_that_burn.json | 10 +- .../data/minecraft/tags/item/music_discs.json | 10 +- .../tags/item/non_flammable_wood.json | 10 +- .../data/minecraft/tags/item/planks.json | 14 +- .../data/minecraft/tags/item/signs.json | 14 +- .../data/minecraft/tags/item/slabs.json | 38 ++- .../minecraft/tags/item/small_flowers.json | 14 +- .../data/minecraft/tags/item/stairs.json | 30 +- .../minecraft/tags/item/trim_materials.json | 14 +- .../data/minecraft/tags/item/walls.json | 38 ++- .../data/minecraft/tags/item/wart_blocks.json | 10 +- .../minecraft/tags/item/wooden_buttons.json | 14 +- .../minecraft/tags/item/wooden_doors.json | 14 +- .../tags/item/wooden_pressure_plates.json | 14 +- .../minecraft/tags/item/wooden_slabs.json | 14 +- .../minecraft/tags/item/wooden_stairs.json | 14 +- .../minecraft/tags/item/wooden_trapdoors.json | 14 +- .../tags/painting_variant/placeable.json | 10 +- .../biome/has_structure/ancient_city.json | 10 +- .../biome/has_structure/buried_treasure.json | 10 +- .../biome/has_structure/pillager_outpost.json | 10 +- .../biome/has_structure/village_plains.json | 10 +- .../loot_table/blocks/altar_catalyzer.json | 20 +- .../loot_table/blocks/altar_pedestal.json | 20 +- .../loot_table/blocks/basalt_brick_slab.json | 36 ++- .../blocks/basalt_brick_stairs.json | 20 +- .../loot_table/blocks/basalt_brick_wall.json | 20 +- .../loot_table/blocks/basalt_bricks.json | 20 +- .../loot_table/blocks/basalt_tile_slab.json | 36 ++- .../loot_table/blocks/basalt_tile_stairs.json | 20 +- .../loot_table/blocks/basalt_tile_wall.json | 20 +- .../loot_table/blocks/basalt_tiles.json | 20 +- .../wwizardry/loot_table/blocks/camera.json | 20 +- .../loot_table/blocks/chiseled_basalt.json | 20 +- .../blocks/chiseled_basalt_slab.json | 36 ++- .../blocks/chiseled_basalt_stairs.json | 20 +- .../blocks/chiseled_basalt_wall.json | 20 +- .../blocks/crystalline_sculk_block.json | 20 +- .../loot_table/blocks/cut_basalt.json | 20 +- .../loot_table/blocks/cut_basalt_slab.json | 36 ++- .../loot_table/blocks/cut_basalt_stairs.json | 20 +- .../loot_table/blocks/cut_basalt_wall.json | 20 +- .../blocks/deepslate_rose_quartz_ore.json | 51 ++- .../loot_table/blocks/denia_button.json | 20 +- .../loot_table/blocks/denia_door.json | 29 +- .../loot_table/blocks/denia_fence.json | 20 +- .../loot_table/blocks/denia_fence_gate.json | 20 +- .../loot_table/blocks/denia_hanging_sign.json | 20 +- .../loot_table/blocks/denia_leaves.json | 140 ++++++++- .../loot_table/blocks/denia_log.json | 20 +- .../loot_table/blocks/denia_planks.json | 20 +- .../blocks/denia_pressure_plate.json | 20 +- .../loot_table/blocks/denia_sapling.json | 20 +- .../loot_table/blocks/denia_sign.json | 20 +- .../loot_table/blocks/denia_slab.json | 36 ++- .../loot_table/blocks/denia_stairs.json | 20 +- .../loot_table/blocks/denia_trapdoor.json | 20 +- .../blocks/denia_wall_hanging_sign.json | 20 +- .../loot_table/blocks/denia_wall_sign.json | 20 +- .../loot_table/blocks/denia_wood.json | 20 +- .../loot_table/blocks/indigo_caeruleum.json | 20 +- .../blocks/mossy_basalt_brick_slab.json | 36 ++- .../blocks/mossy_basalt_brick_stairs.json | 20 +- .../blocks/mossy_basalt_brick_wall.json | 20 +- .../blocks/mossy_basalt_bricks.json | 20 +- .../blocks/mossy_basalt_tile_slab.json | 36 ++- .../blocks/mossy_basalt_tile_stairs.json | 20 +- .../blocks/mossy_basalt_tile_wall.json | 20 +- .../loot_table/blocks/mossy_basalt_tiles.json | 20 +- .../blocks/mossy_chiseled_basalt.json | 20 +- .../blocks/mossy_chiseled_basalt_slab.json | 36 ++- .../blocks/mossy_chiseled_basalt_stairs.json | 20 +- .../blocks/mossy_chiseled_basalt_wall.json | 20 +- .../loot_table/blocks/mossy_cut_basalt.json | 20 +- .../blocks/mossy_cut_basalt_slab.json | 36 ++- .../blocks/mossy_cut_basalt_stairs.json | 20 +- .../blocks/mossy_cut_basalt_wall.json | 20 +- .../loot_table/blocks/mycha_button.json | 20 +- .../loot_table/blocks/mycha_door.json | 29 +- .../loot_table/blocks/mycha_fence.json | 20 +- .../loot_table/blocks/mycha_fence_gate.json | 20 +- .../loot_table/blocks/mycha_fungus.json | 20 +- .../loot_table/blocks/mycha_hanging_sign.json | 20 +- .../loot_table/blocks/mycha_hyphae.json | 20 +- .../loot_table/blocks/mycha_planks.json | 20 +- .../blocks/mycha_pressure_plate.json | 20 +- .../loot_table/blocks/mycha_sign.json | 20 +- .../loot_table/blocks/mycha_slab.json | 36 ++- .../loot_table/blocks/mycha_stairs.json | 20 +- .../loot_table/blocks/mycha_stem.json | 20 +- .../loot_table/blocks/mycha_trapdoor.json | 20 +- .../blocks/mycha_wall_hanging_sign.json | 20 +- .../loot_table/blocks/mycha_wall_sign.json | 20 +- .../loot_table/blocks/mycha_wart.json | 20 +- .../loot_table/blocks/redstone_lantern.json | 20 +- .../loot_table/blocks/reinforced_glass.json | 20 +- .../blocks/reinforced_glass_pane.json | 20 +- .../loot_table/blocks/rose_quartz_block.json | 20 +- .../loot_table/blocks/rose_quartz_ore.json | 51 ++- .../loot_table/blocks/sculkflower.json | 20 +- .../loot_table/blocks/stripped_denia_log.json | 20 +- .../blocks/stripped_denia_wood.json | 20 +- .../blocks/stripped_mycha_hyphae.json | 20 +- .../blocks/stripped_mycha_stem.json | 20 +- .../loot_table/blocks/wall_holder.json | 20 +- .../wwizardry/recipe/altar_catalyzer.json | 23 +- .../data/wwizardry/recipe/altar_pedestal.json | 23 +- .../basalt_bricks/basalt_crafted/block.json | 19 +- .../basalt_bricks/basalt_cut/block.json | 11 +- .../recipe/basalt_bricks/basalt_cut/slab.json | 11 +- .../basalt_bricks/basalt_cut/stairs.json | 11 +- .../recipe/basalt_bricks/basalt_cut/wall.json | 11 +- .../basalt_bricks/self_crafted/slab.json | 18 +- .../basalt_bricks/self_crafted/stiars.json | 20 +- .../basalt_bricks/self_crafted/wall.json | 19 +- .../recipe/basalt_bricks/self_cut/slab.json | 11 +- .../recipe/basalt_bricks/self_cut/stairs.json | 11 +- .../recipe/basalt_bricks/self_cut/wall.json | 11 +- .../recipe/basalt_tiles/basalt_cut/block.json | 11 +- .../recipe/basalt_tiles/basalt_cut/slab.json | 11 +- .../basalt_tiles/basalt_cut/stairs.json | 11 +- .../recipe/basalt_tiles/basalt_cut/wall.json | 11 +- .../basalt_tiles/brick_crafted/block.json | 19 +- .../recipe/basalt_tiles/brick_cut/block.json | 11 +- .../recipe/basalt_tiles/brick_cut/slab.json | 11 +- .../recipe/basalt_tiles/brick_cut/stairs.json | 11 +- .../recipe/basalt_tiles/brick_cut/wall.json | 11 +- .../basalt_tiles/self_crafted/slab.json | 18 +- .../basalt_tiles/self_crafted/stiars.json | 20 +- .../basalt_tiles/self_crafted/wall.json | 19 +- .../recipe/basalt_tiles/self_cut/slab.json | 11 +- .../recipe/basalt_tiles/self_cut/stairs.json | 11 +- .../recipe/basalt_tiles/self_cut/wall.json | 11 +- .../data/wwizardry/recipe/brewing_charm.json | 26 +- .../chiseled_basalt/basalt_cut/block.json | 11 +- .../chiseled_basalt/basalt_cut/slab.json | 11 +- .../chiseled_basalt/basalt_cut/stairs.json | 11 +- .../chiseled_basalt/basalt_cut/wall.json | 11 +- .../chiseled_basalt/brick_crafted/block.json | 19 +- .../chiseled_basalt/self_crafted/slab.json | 18 +- .../chiseled_basalt/self_crafted/stiars.json | 20 +- .../chiseled_basalt/self_crafted/wall.json | 19 +- .../recipe/chiseled_basalt/self_cut/slab.json | 11 +- .../chiseled_basalt/self_cut/stairs.json | 11 +- .../recipe/chiseled_basalt/self_cut/wall.json | 11 +- .../data/wwizardry/recipe/crafting_charm.json | 26 +- .../recipe/create/rose_quartz_crushed.json | 37 ++- .../create/rose_quartz_crushed_deepslate.json | 37 ++- .../recipe/create/rose_quartz_polished.json | 28 +- .../wwizardry/recipe/crystalline_sculk.json | 27 +- .../recipe/crystalline_sculk_block.json | 20 +- .../recipe/crystalline_sculk_from_block.json | 14 +- .../cut_basalt/basalt_crafted/block.json | 19 +- .../recipe/cut_basalt/basalt_cut/block.json | 11 +- .../recipe/cut_basalt/basalt_cut/slab.json | 11 +- .../recipe/cut_basalt/basalt_cut/stairs.json | 11 +- .../recipe/cut_basalt/basalt_cut/wall.json | 11 +- .../recipe/cut_basalt/self_crafted/slab.json | 18 +- .../cut_basalt/self_crafted/stiars.json | 20 +- .../recipe/cut_basalt/self_crafted/wall.json | 19 +- .../recipe/cut_basalt/self_cut/slab.json | 11 +- .../recipe/cut_basalt/self_cut/stairs.json | 11 +- .../recipe/cut_basalt/self_cut/wall.json | 11 +- .../wwizardry/recipe/modulo_comparator.json | 26 +- .../mossy_basalt_bricks/basalt_cut/block.json | 11 +- .../mossy_basalt_bricks/basalt_cut/slab.json | 11 +- .../basalt_cut/stairs.json | 11 +- .../mossy_basalt_bricks/basalt_cut/wall.json | 11 +- .../brick_mossed/block.json | 17 +- .../self_crafted/slab.json | 18 +- .../self_crafted/stiars.json | 20 +- .../self_crafted/wall.json | 19 +- .../mossy_basalt_bricks/self_cut/slab.json | 11 +- .../mossy_basalt_bricks/self_cut/stairs.json | 11 +- .../mossy_basalt_bricks/self_cut/wall.json | 11 +- .../mossy_basalt_tiles/basalt_cut/block.json | 11 +- .../mossy_basalt_tiles/basalt_cut/slab.json | 11 +- .../mossy_basalt_tiles/basalt_cut/stairs.json | 11 +- .../mossy_basalt_tiles/basalt_cut/wall.json | 11 +- .../brick_crafted/block.json | 19 +- .../mossy_basalt_tiles/brick_cut/block.json | 11 +- .../mossy_basalt_tiles/brick_cut/slab.json | 11 +- .../mossy_basalt_tiles/brick_cut/stairs.json | 11 +- .../mossy_basalt_tiles/brick_cut/wall.json | 11 +- .../brick_mossed/block.json | 17 +- .../mossy_basalt_tiles/self_crafted/slab.json | 18 +- .../self_crafted/stiars.json | 20 +- .../mossy_basalt_tiles/self_crafted/wall.json | 19 +- .../mossy_basalt_tiles/self_cut/slab.json | 11 +- .../mossy_basalt_tiles/self_cut/stairs.json | 11 +- .../mossy_basalt_tiles/self_cut/wall.json | 11 +- .../basalt_cut/block.json | 11 +- .../basalt_cut/slab.json | 11 +- .../basalt_cut/stairs.json | 11 +- .../basalt_cut/wall.json | 11 +- .../brick_crafted/block.json | 19 +- .../brick_mossed/block.json | 17 +- .../self_crafted/slab.json | 18 +- .../self_crafted/stiars.json | 20 +- .../self_crafted/wall.json | 19 +- .../mossy_chiseled_basalt/self_cut/slab.json | 11 +- .../self_cut/stairs.json | 11 +- .../mossy_chiseled_basalt/self_cut/wall.json | 11 +- .../mossy_cut_basalt/cut_mossed/block.json | 17 +- .../mossy_cut_basalt/self_crafted/slab.json | 18 +- .../mossy_cut_basalt/self_crafted/stiars.json | 20 +- .../mossy_cut_basalt/self_crafted/wall.json | 19 +- .../mossy_cut_basalt/self_cut/slab.json | 11 +- .../mossy_cut_basalt/self_cut/stairs.json | 11 +- .../mossy_cut_basalt/self_cut/wall.json | 11 +- .../wwizardry/recipe/redstone_stepper.json | 22 +- .../wwizardry/recipe/reinforced_glass.json | 23 +- .../recipe/reinforced_glass_pane.json | 19 +- .../wwizardry/recipe/rose_quartz_block.json | 20 +- .../recipe/rose_quartz_from_blasting_ore.json | 13 +- .../recipe/rose_quartz_from_block.json | 15 +- .../recipe/rose_quartz_from_smelting_ore.json | 13 +- .../wwizardry/recipe/sculk_resonator.json | 26 +- .../data/wwizardry/recipe/slot_charm.json | 27 +- .../data/wwizardry/recipe/soul_mirror.json | 26 +- .../data/wwizardry/recipe/void_bag.json | 26 +- .../wwizardry/recipe/wood/denia/boat.json | 19 +- .../wwizardry/recipe/wood/denia/button.json | 14 +- .../recipe/wood/denia/chest_boat.json | 17 +- .../wwizardry/recipe/wood/denia/door.json | 21 +- .../wwizardry/recipe/wood/denia/fence.json | 23 +- .../recipe/wood/denia/fence_gate.json | 22 +- .../wwizardry/recipe/wood/denia/planks.json | 15 +- .../recipe/wood/denia/pressure_plate.json | 18 +- .../wwizardry/recipe/wood/denia/sign.json | 24 +- .../wwizardry/recipe/wood/denia/slab.json | 19 +- .../wwizardry/recipe/wood/denia/stairs.json | 21 +- .../recipe/wood/denia/stripped_wood.json | 20 +- .../wwizardry/recipe/wood/denia/trapdoor.json | 20 +- .../wwizardry/recipe/wood/denia/wood.json | 20 +- .../wwizardry/recipe/wood/mycha/button.json | 14 +- .../wwizardry/recipe/wood/mycha/door.json | 21 +- .../wwizardry/recipe/wood/mycha/fence.json | 23 +- .../recipe/wood/mycha/fence_gate.json | 22 +- .../wwizardry/recipe/wood/mycha/hyphae.json | 20 +- .../wwizardry/recipe/wood/mycha/planks.json | 15 +- .../recipe/wood/mycha/pressure_plate.json | 18 +- .../wwizardry/recipe/wood/mycha/sign.json | 24 +- .../wwizardry/recipe/wood/mycha/slab.json | 19 +- .../wwizardry/recipe/wood/mycha/stairs.json | 21 +- .../recipe/wood/mycha/stripped_hyphae.json | 20 +- .../wwizardry/recipe/wood/mycha/trapdoor.json | 20 +- .../data/wwizardry/tags/block/altars.json | 14 +- .../wwizardry/tags/block/brick/basalt.json | 38 ++- .../tags/block/brick/basalt_bricks.json | 22 +- .../tags/block/brick/basalt_chiseled.json | 22 +- .../tags/block/brick/basalt_cut.json | 22 +- .../tags/block/brick/basalt_tiles.json | 22 +- .../tags/block/brick/mossy_basalt_bricks.json | 22 +- .../block/brick/mossy_basalt_chiseled.json | 22 +- .../tags/block/brick/mossy_basalt_cut.json | 22 +- .../tags/block/brick/mossy_basalt_tiles.json | 22 +- .../wwizardry/tags/block/damages_snail.json | 294 +++++++++++++++++- .../data/wwizardry/tags/block/denia_logs.json | 22 +- .../wwizardry/tags/block/mycha_growable.json | 14 +- .../wwizardry/tags/block/mycha_growth.json | 10 +- .../wwizardry/tags/block/mycha_stems.json | 22 +- .../tags/block/rose_quartz_ores.json | 14 +- .../data/wwizardry/tags/block/wood/all.json | 14 +- .../data/wwizardry/tags/block/wood/denia.json | 58 +++- .../data/wwizardry/tags/block/wood/mycha.json | 58 +++- .../tags/item/altar_air_modifier.json | 10 +- .../data/wwizardry/tags/item/altars.json | 14 +- .../wwizardry/tags/item/brick/basalt.json | 38 ++- .../tags/item/brick/basalt_bricks.json | 22 +- .../tags/item/brick/basalt_chiseled.json | 22 +- .../wwizardry/tags/item/brick/basalt_cut.json | 22 +- .../tags/item/brick/basalt_tiles.json | 22 +- .../tags/item/brick/mossy_basalt_bricks.json | 22 +- .../item/brick/mossy_basalt_chiseled.json | 22 +- .../tags/item/brick/mossy_basalt_cut.json | 22 +- .../tags/item/brick/mossy_basalt_tiles.json | 22 +- .../data/wwizardry/tags/item/denia_logs.json | 22 +- .../data/wwizardry/tags/item/glass.json | 14 +- .../wwizardry/tags/item/mossy_materials.json | 14 +- .../data/wwizardry/tags/item/mycha_stems.json | 22 +- .../wwizardry/tags/item/repairs_sculk.json | 10 +- .../wwizardry/tags/item/rose_quartzes.json | 14 +- .../data/wwizardry/tags/item/snail_food.json | 10 +- .../data/wwizardry/tags/item/wood/all.json | 14 +- .../data/wwizardry/tags/item/wood/denia.json | 50 ++- .../data/wwizardry/tags/item/wood/mycha.json | 50 ++- .../worldgen/biome/forgotten_fields.json | 203 +++++++++++- .../worldgen/biome/fungal_forest.json | 191 +++++++++++- .../configured_feature/cool_flower.json | 42 ++- .../configured_feature/mycha_growth.json | 29 +- .../configured_feature/mycha_spread.json | 28 +- .../configured_feature/ore/rose_quartz.json | 28 +- .../configured_feature/rare_moss_patch.json | 28 +- .../configured_feature/rare_sculk_patch.json | 13 +- .../configured_feature/tree/denia.json | 47 ++- .../configured_feature/tree/mycha.json | 84 ++++- .../worldgen/placed_feature/flower_patch.json | 26 +- .../worldgen/placed_feature/mycha_spread.json | 20 +- .../placed_feature/ore/rose_quartz.json | 28 +- .../placed_feature/ore/rose_quartz_biome.json | 28 +- .../placed_feature/rare_moss_patch.json | 33 +- .../placed_feature/rare_sculk_patch.json | 28 +- .../worldgen/placed_feature/tree/denia.json | 52 +++- .../worldgen/placed_feature/tree/mycha.json | 49 ++- .../basalt_bricks.json | 17 +- .../architecture_extensions/basalt_tiles.json | 17 +- .../chiseled_basalt.json | 17 +- .../architecture_extensions/denia.json | 22 +- .../mossy_basalt_bricks.json | 17 +- .../mossy_basalt_tiles.json | 17 +- .../mossy_chiseled_basalt.json | 17 +- .../architecture_extensions/mycha.json | 22 +- .../client/content/RenderLayers.java | 3 +- .../client/content/events/ClientEvents.java | 3 - .../wwizardry/content/ContentInitializer.java | 2 - .../content/block/BlockInitializer.java | 14 + .../wwizardry/content/block/Sculkable.java | 1 - .../block/nature/FallingDecayableBlock.java | 18 +- .../block/redstone/CopperLensBlock.java | 102 ++++++ .../redstone/WeatheringCopperLensBlock.java | 30 ++ .../sign/ModdedCeilingHangingSignBlock.java | 19 -- .../content/block/sign/ModdedSignBlock.java | 12 - .../block/sign/ModdedStandingSignBlock.java | 19 -- .../sign/ModdedWallHangingSignBlock.java | 20 -- .../block/sign/ModdedWallSignBlock.java | 19 -- .../content/datagen/DatagenInitializer.java | 9 +- .../content/datagen/WoodTypeGen.java | 1 - .../content/item/ItemInitializer.java | 9 + .../mixin/Accessor_BeaconBlockEntity.java | 14 + .../mixin/Mixin_BeaconBlockEntity.java | 83 +++++ .../Mixin_ReloadableResourceManager.java | 5 +- .../mixin/client/Mixin_BeaconRenderer.java | 44 +++ .../src/main/resources/accesstransformer.cfg | 1 + .../models/block/copper_lens/base.json | 153 +++++++++ .../copper_lens/exposed/powered/focused.json | 9 + .../exposed/powered/unfocused.json | 9 + .../exposed/unpowered/focused.json | 9 + .../exposed/unpowered/unfocused.json | 9 + .../copper_lens/normal/powered/focused.json | 9 + .../copper_lens/normal/powered/unfocused.json | 9 + .../copper_lens/normal/unpowered/focused.json | 9 + .../normal/unpowered/unfocused.json | 9 + .../copper_lens/oxidized/powered/focused.json | 9 + .../oxidized/powered/unfocused.json | 9 + .../oxidized/unpowered/focused.json | 9 + .../oxidized/unpowered/unfocused.json | 9 + .../weathered/powered/focused.json | 9 + .../weathered/powered/unfocused.json | 9 + .../weathered/unpowered/focused.json | 9 + .../weathered/unpowered/unfocused.json | 9 + .../models/item/waxed_copper_lens.json | 3 + .../textures/block/copper_lens/aperture.png | Bin 0 -> 5954 bytes .../block/copper_lens/aperture_exposed.png | Bin 0 -> 6069 bytes .../copper_lens/aperture_exposed_focused.png | Bin 0 -> 5971 bytes .../block/copper_lens/aperture_focused.png | Bin 0 -> 5967 bytes .../block/copper_lens/aperture_oxidized.png | Bin 0 -> 6097 bytes .../copper_lens/aperture_oxidized_focused.png | Bin 0 -> 5955 bytes .../block/copper_lens/aperture_weathered.png | Bin 0 -> 6112 bytes .../aperture_weathered_focused.png | Bin 0 -> 6004 bytes .../textures/block/copper_lens/end.png | Bin 0 -> 6260 bytes .../block/copper_lens/end_exposed.png | Bin 0 -> 6207 bytes .../block/copper_lens/end_weathered.png | Bin 0 -> 6228 bytes .../block/copper_lens/enx_oxidized.png | Bin 0 -> 5893 bytes .../textures/block/copper_lens/glass.png | Bin 0 -> 5886 bytes .../block/copper_lens/glass_oxidized.png | Bin 0 -> 6120 bytes .../block/copper_lens/glass_weathered.png | Bin 0 -> 6044 bytes .../block/copper_lens/lens_exposed.png | Bin 0 -> 6119 bytes .../textures/block/copper_lens/side.png | Bin 0 -> 6001 bytes .../block/copper_lens/side_exposed.png | Bin 0 -> 6112 bytes .../copper_lens/side_exposed_powered.png | Bin 0 -> 6149 bytes .../block/copper_lens/side_oxidized.png | Bin 0 -> 6134 bytes .../copper_lens/side_oxidized_powered.png | Bin 0 -> 6170 bytes .../block/copper_lens/side_powered.png | Bin 0 -> 6155 bytes .../block/copper_lens/side_weathered.png | Bin 0 -> 6128 bytes .../copper_lens/side_weathered_powered.png | Bin 0 -> 6192 bytes .../src/main/resources/wwizardry.mixins.json | 3 + data/blockstate/waxed_copper_lens.fennec | 131 ++++++++ neoforge/build.gradle | 6 +- scripts/command/archex.ts | 2 +- scripts/command/blockstate.ts | 2 +- scripts/command/brick.ts | 2 +- scripts/command/lang.ts | 2 +- scripts/command/loot.ts | 2 +- scripts/command/tags.ts | 2 +- scripts/command/transpile.ts | 2 +- 455 files changed, 8834 insertions(+), 497 deletions(-) create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/waxed_copper_lens.json create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/CopperLensBlock.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/WeatheringCopperLensBlock.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedCeilingHangingSignBlock.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedSignBlock.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedStandingSignBlock.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedWallHangingSignBlock.java delete mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedWallSignBlock.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BeaconBlockEntity.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BeaconRenderer.java rename {neoforge => common}/src/main/resources/accesstransformer.cfg (96%) create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/base.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/powered/focused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/powered/unfocused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/unpowered/focused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/unpowered/unfocused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/powered/focused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/powered/unfocused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/unpowered/focused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/unpowered/unfocused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/powered/focused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/powered/unfocused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/unpowered/focused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/unpowered/unfocused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/powered/focused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/powered/unfocused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/unpowered/focused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/unpowered/unfocused.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/waxed_copper_lens.json create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_exposed.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_exposed_focused.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_focused.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_oxidized.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_oxidized_focused.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_weathered.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_weathered_focused.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end_exposed.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end_weathered.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/enx_oxidized.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass_oxidized.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass_weathered.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/lens_exposed.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_exposed.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_exposed_powered.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_oxidized.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_oxidized_powered.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_powered.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_weathered.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_weathered_powered.png create mode 100644 data/blockstate/waxed_copper_lens.fennec diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/altar_catalyzer.json b/common/src/generated/resources/assets/wwizardry/blockstates/altar_catalyzer.json index a27c47f6..792fd014 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/altar_catalyzer.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/altar_catalyzer.json @@ -1 +1,33 @@ -{"multipart":[{"when":{"sculked":"false"},"apply":{"model":"wwizardry:block/altar_catalyzer","uvlock":true}},{"when":{"sculked":"true"},"apply":{"model":"wwizardry:block/altar_catalyzer_sculk","uvlock":true}},{"when":{"sculked":"true","sculk_below":"false"},"apply":{"model":"wwizardry:block/altar_sculk_vein","uvlock":true,"x":90}}]} \ No newline at end of file +{ + "multipart": [ + { + "when": { + "sculked": "false" + }, + "apply": { + "model": "wwizardry:block/altar_catalyzer", + "uvlock": true + } + }, + { + "when": { + "sculked": "true" + }, + "apply": { + "model": "wwizardry:block/altar_catalyzer_sculk", + "uvlock": true + } + }, + { + "when": { + "sculked": "true", + "sculk_below": "false" + }, + "apply": { + "model": "wwizardry:block/altar_sculk_vein", + "uvlock": true, + "x": 90 + } + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/altar_pedestal.json b/common/src/generated/resources/assets/wwizardry/blockstates/altar_pedestal.json index 5314c390..54530dce 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/altar_pedestal.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/altar_pedestal.json @@ -1 +1,101 @@ -{"multipart":[{"when":{"sculked":"false","facing":"north"},"apply":{"model":"wwizardry:block/altar_pedestal","uvlock":true,"y":180}},{"when":{"sculked":"true","facing":"north"},"apply":{"model":"wwizardry:block/altar_pedestal_sculk","uvlock":true,"y":180}},{"when":{"sculked":"false","facing":"south"},"apply":{"model":"wwizardry:block/altar_pedestal","uvlock":true}},{"when":{"sculked":"true","facing":"south"},"apply":{"model":"wwizardry:block/altar_pedestal_sculk","uvlock":true}},{"when":{"sculked":"false","facing":"east"},"apply":{"model":"wwizardry:block/altar_pedestal","uvlock":true,"y":270}},{"when":{"sculked":"true","facing":"east"},"apply":{"model":"wwizardry:block/altar_pedestal_sculk","uvlock":true,"y":270}},{"when":{"sculked":"false","facing":"west"},"apply":{"model":"wwizardry:block/altar_pedestal","uvlock":true,"y":90}},{"when":{"sculked":"true","facing":"west"},"apply":{"model":"wwizardry:block/altar_pedestal_sculk","uvlock":true,"y":90}},{"when":{"sculked":"true","sculk_below":"false"},"apply":{"model":"wwizardry:block/altar_sculk_vein","uvlock":true,"x":90}}]} \ No newline at end of file +{ + "multipart": [ + { + "when": { + "sculked": "false", + "facing": "north" + }, + "apply": { + "model": "wwizardry:block/altar_pedestal", + "uvlock": true, + "y": 180 + } + }, + { + "when": { + "sculked": "true", + "facing": "north" + }, + "apply": { + "model": "wwizardry:block/altar_pedestal_sculk", + "uvlock": true, + "y": 180 + } + }, + { + "when": { + "sculked": "false", + "facing": "south" + }, + "apply": { + "model": "wwizardry:block/altar_pedestal", + "uvlock": true + } + }, + { + "when": { + "sculked": "true", + "facing": "south" + }, + "apply": { + "model": "wwizardry:block/altar_pedestal_sculk", + "uvlock": true + } + }, + { + "when": { + "sculked": "false", + "facing": "east" + }, + "apply": { + "model": "wwizardry:block/altar_pedestal", + "uvlock": true, + "y": 270 + } + }, + { + "when": { + "sculked": "true", + "facing": "east" + }, + "apply": { + "model": "wwizardry:block/altar_pedestal_sculk", + "uvlock": true, + "y": 270 + } + }, + { + "when": { + "sculked": "false", + "facing": "west" + }, + "apply": { + "model": "wwizardry:block/altar_pedestal", + "uvlock": true, + "y": 90 + } + }, + { + "when": { + "sculked": "true", + "facing": "west" + }, + "apply": { + "model": "wwizardry:block/altar_pedestal_sculk", + "uvlock": true, + "y": 90 + } + }, + { + "when": { + "sculked": "true", + "sculk_below": "false" + }, + "apply": { + "model": "wwizardry:block/altar_sculk_vein", + "uvlock": true, + "x": 90 + } + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/camera.json b/common/src/generated/resources/assets/wwizardry/blockstates/camera.json index 771703f8..5dd57966 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/camera.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/camera.json @@ -1 +1,19 @@ -{"variants":{"facing=north":{"model":"wwizardry:block/camera","y":180},"facing=south":{"model":"wwizardry:block/camera"},"facing=east":{"model":"wwizardry:block/camera","y":270},"facing=west":{"model":"wwizardry:block/camera","y":90}}} \ No newline at end of file +{ + "variants": { + "facing=north": { + "model": "wwizardry:block/camera", + "y": 180 + }, + "facing=south": { + "model": "wwizardry:block/camera" + }, + "facing=east": { + "model": "wwizardry:block/camera", + "y": 270 + }, + "facing=west": { + "model": "wwizardry:block/camera", + "y": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/crystalline_sculk_block.json b/common/src/generated/resources/assets/wwizardry/blockstates/crystalline_sculk_block.json index c4e738fe..aa5bacf4 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/crystalline_sculk_block.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/crystalline_sculk_block.json @@ -1 +1,7 @@ -{"variants":{"":{"model":"wwizardry:block/crystalline_sculk_block"}}} \ No newline at end of file +{ + "variants": { + "": { + "model": "wwizardry:block/crystalline_sculk_block" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/deepslate_rose_quartz_ore.json b/common/src/generated/resources/assets/wwizardry/blockstates/deepslate_rose_quartz_ore.json index 62d67b57..a1f01f81 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/deepslate_rose_quartz_ore.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/deepslate_rose_quartz_ore.json @@ -1 +1,7 @@ -{"variants":{"":{"model":"wwizardry:block/deepslate_rose_quartz_ore"}}} \ No newline at end of file +{ + "variants": { + "": { + "model": "wwizardry:block/deepslate_rose_quartz_ore" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/indigo_caeruleum.json b/common/src/generated/resources/assets/wwizardry/blockstates/indigo_caeruleum.json index 1c09e189..a6d4389f 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/indigo_caeruleum.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/indigo_caeruleum.json @@ -1 +1,7 @@ -{"variants":{"":{"model":"wwizardry:block/indigo_caeruleum"}}} \ No newline at end of file +{ + "variants": { + "": { + "model": "wwizardry:block/indigo_caeruleum" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/modulo_comparator.json b/common/src/generated/resources/assets/wwizardry/blockstates/modulo_comparator.json index 291aa17b..c3defe67 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/modulo_comparator.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/modulo_comparator.json @@ -1 +1,64 @@ -{"variants":{"facing=north,mode=compare,powered=false":{"model":"wwizardry:block/modulo_comparator_off","y":180},"facing=north,mode=compare,powered=true":{"model":"wwizardry:block/modulo_comparator_on","y":180},"facing=north,mode=subtract,powered=false":{"model":"wwizardry:block/modulo_comparator_subtract_off","y":180},"facing=north,mode=subtract,powered=true":{"model":"wwizardry:block/modulo_comparator_subtract_on","y":180},"facing=south,mode=compare,powered=false":{"model":"wwizardry:block/modulo_comparator_off"},"facing=south,mode=compare,powered=true":{"model":"wwizardry:block/modulo_comparator_on"},"facing=south,mode=subtract,powered=false":{"model":"wwizardry:block/modulo_comparator_subtract_off"},"facing=south,mode=subtract,powered=true":{"model":"wwizardry:block/modulo_comparator_subtract_on"},"facing=east,mode=compare,powered=false":{"model":"wwizardry:block/modulo_comparator_off","y":270},"facing=east,mode=compare,powered=true":{"model":"wwizardry:block/modulo_comparator_on","y":270},"facing=east,mode=subtract,powered=false":{"model":"wwizardry:block/modulo_comparator_subtract_off","y":270},"facing=east,mode=subtract,powered=true":{"model":"wwizardry:block/modulo_comparator_subtract_on","y":270},"facing=west,mode=compare,powered=false":{"model":"wwizardry:block/modulo_comparator_off","y":90},"facing=west,mode=compare,powered=true":{"model":"wwizardry:block/modulo_comparator_on","y":90},"facing=west,mode=subtract,powered=false":{"model":"wwizardry:block/modulo_comparator_subtract_off","y":90},"facing=west,mode=subtract,powered=true":{"model":"wwizardry:block/modulo_comparator_subtract_on","y":90}}} \ No newline at end of file +{ + "variants": { + "facing=north,mode=compare,powered=false": { + "model": "wwizardry:block/modulo_comparator_off", + "y": 180 + }, + "facing=north,mode=compare,powered=true": { + "model": "wwizardry:block/modulo_comparator_on", + "y": 180 + }, + "facing=north,mode=subtract,powered=false": { + "model": "wwizardry:block/modulo_comparator_subtract_off", + "y": 180 + }, + "facing=north,mode=subtract,powered=true": { + "model": "wwizardry:block/modulo_comparator_subtract_on", + "y": 180 + }, + "facing=south,mode=compare,powered=false": { + "model": "wwizardry:block/modulo_comparator_off" + }, + "facing=south,mode=compare,powered=true": { + "model": "wwizardry:block/modulo_comparator_on" + }, + "facing=south,mode=subtract,powered=false": { + "model": "wwizardry:block/modulo_comparator_subtract_off" + }, + "facing=south,mode=subtract,powered=true": { + "model": "wwizardry:block/modulo_comparator_subtract_on" + }, + "facing=east,mode=compare,powered=false": { + "model": "wwizardry:block/modulo_comparator_off", + "y": 270 + }, + "facing=east,mode=compare,powered=true": { + "model": "wwizardry:block/modulo_comparator_on", + "y": 270 + }, + "facing=east,mode=subtract,powered=false": { + "model": "wwizardry:block/modulo_comparator_subtract_off", + "y": 270 + }, + "facing=east,mode=subtract,powered=true": { + "model": "wwizardry:block/modulo_comparator_subtract_on", + "y": 270 + }, + "facing=west,mode=compare,powered=false": { + "model": "wwizardry:block/modulo_comparator_off", + "y": 90 + }, + "facing=west,mode=compare,powered=true": { + "model": "wwizardry:block/modulo_comparator_on", + "y": 90 + }, + "facing=west,mode=subtract,powered=false": { + "model": "wwizardry:block/modulo_comparator_subtract_off", + "y": 90 + }, + "facing=west,mode=subtract,powered=true": { + "model": "wwizardry:block/modulo_comparator_subtract_on", + "y": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/mycelial_sand.json b/common/src/generated/resources/assets/wwizardry/blockstates/mycelial_sand.json index 407fcd9c..a6cc230f 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/mycelial_sand.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/mycelial_sand.json @@ -1 +1,21 @@ -{"variants":{"":[{"model":"wwizardry:block/mycelial_sand"},{"model":"wwizardry:block/mycelial_sand","y":90},{"model":"wwizardry:block/mycelial_sand","y":180},{"model":"wwizardry:block/mycelial_sand","y":270}]}} \ No newline at end of file +{ + "variants": { + "": [ + { + "model": "wwizardry:block/mycelial_sand" + }, + { + "model": "wwizardry:block/mycelial_sand", + "y": 90 + }, + { + "model": "wwizardry:block/mycelial_sand", + "y": 180 + }, + { + "model": "wwizardry:block/mycelial_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/mycha_roots.json b/common/src/generated/resources/assets/wwizardry/blockstates/mycha_roots.json index 14e4783c..c242ba5f 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/mycha_roots.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/mycha_roots.json @@ -1 +1,7 @@ -{"variants":{"":{"model":"wwizardry:block/mycha_roots"}}} \ No newline at end of file +{ + "variants": { + "": { + "model": "wwizardry:block/mycha_roots" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/redstone_lantern.json b/common/src/generated/resources/assets/wwizardry/blockstates/redstone_lantern.json index 7ca12254..399edf69 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/redstone_lantern.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/redstone_lantern.json @@ -1 +1,10 @@ -{"variants":{"lit=false":{"model":"wwizardry:block/redstone_lantern_off"},"lit=true":{"model":"wwizardry:block/redstone_lantern_on"}}} \ No newline at end of file +{ + "variants": { + "lit=false": { + "model": "wwizardry:block/redstone_lantern_off" + }, + "lit=true": { + "model": "wwizardry:block/redstone_lantern_on" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/redstone_stepper.json b/common/src/generated/resources/assets/wwizardry/blockstates/redstone_stepper.json index 392bcf8b..35078473 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/redstone_stepper.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/redstone_stepper.json @@ -1 +1,64 @@ -{"variants":{"facing=north,mode=compare,powered=false":{"model":"wwizardry:block/redstone_stepper_off","y":180},"facing=north,mode=compare,powered=true":{"model":"wwizardry:block/redstone_stepper_on","y":180},"facing=north,mode=subtract,powered=false":{"model":"wwizardry:block/redstone_stepper_off","y":180},"facing=north,mode=subtract,powered=true":{"model":"wwizardry:block/redstone_stepper_on","y":180},"facing=south,mode=compare,powered=false":{"model":"wwizardry:block/redstone_stepper_off"},"facing=south,mode=compare,powered=true":{"model":"wwizardry:block/redstone_stepper_on"},"facing=south,mode=subtract,powered=false":{"model":"wwizardry:block/redstone_stepper_off"},"facing=south,mode=subtract,powered=true":{"model":"wwizardry:block/redstone_stepper_on"},"facing=east,mode=compare,powered=false":{"model":"wwizardry:block/redstone_stepper_off","y":270},"facing=east,mode=compare,powered=true":{"model":"wwizardry:block/redstone_stepper_on","y":270},"facing=east,mode=subtract,powered=false":{"model":"wwizardry:block/redstone_stepper_off","y":270},"facing=east,mode=subtract,powered=true":{"model":"wwizardry:block/redstone_stepper_on","y":270},"facing=west,mode=compare,powered=false":{"model":"wwizardry:block/redstone_stepper_off","y":90},"facing=west,mode=compare,powered=true":{"model":"wwizardry:block/redstone_stepper_on","y":90},"facing=west,mode=subtract,powered=false":{"model":"wwizardry:block/redstone_stepper_off","y":90},"facing=west,mode=subtract,powered=true":{"model":"wwizardry:block/redstone_stepper_on","y":90}}} \ No newline at end of file +{ + "variants": { + "facing=north,mode=compare,powered=false": { + "model": "wwizardry:block/redstone_stepper_off", + "y": 180 + }, + "facing=north,mode=compare,powered=true": { + "model": "wwizardry:block/redstone_stepper_on", + "y": 180 + }, + "facing=north,mode=subtract,powered=false": { + "model": "wwizardry:block/redstone_stepper_off", + "y": 180 + }, + "facing=north,mode=subtract,powered=true": { + "model": "wwizardry:block/redstone_stepper_on", + "y": 180 + }, + "facing=south,mode=compare,powered=false": { + "model": "wwizardry:block/redstone_stepper_off" + }, + "facing=south,mode=compare,powered=true": { + "model": "wwizardry:block/redstone_stepper_on" + }, + "facing=south,mode=subtract,powered=false": { + "model": "wwizardry:block/redstone_stepper_off" + }, + "facing=south,mode=subtract,powered=true": { + "model": "wwizardry:block/redstone_stepper_on" + }, + "facing=east,mode=compare,powered=false": { + "model": "wwizardry:block/redstone_stepper_off", + "y": 270 + }, + "facing=east,mode=compare,powered=true": { + "model": "wwizardry:block/redstone_stepper_on", + "y": 270 + }, + "facing=east,mode=subtract,powered=false": { + "model": "wwizardry:block/redstone_stepper_off", + "y": 270 + }, + "facing=east,mode=subtract,powered=true": { + "model": "wwizardry:block/redstone_stepper_on", + "y": 270 + }, + "facing=west,mode=compare,powered=false": { + "model": "wwizardry:block/redstone_stepper_off", + "y": 90 + }, + "facing=west,mode=compare,powered=true": { + "model": "wwizardry:block/redstone_stepper_on", + "y": 90 + }, + "facing=west,mode=subtract,powered=false": { + "model": "wwizardry:block/redstone_stepper_off", + "y": 90 + }, + "facing=west,mode=subtract,powered=true": { + "model": "wwizardry:block/redstone_stepper_on", + "y": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/reinforced_glass.json b/common/src/generated/resources/assets/wwizardry/blockstates/reinforced_glass.json index 8e2c48f6..f6d2f874 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/reinforced_glass.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/reinforced_glass.json @@ -1 +1,7 @@ -{"variants":{"":{"model":"wwizardry:block/reinforced_glass"}}} \ No newline at end of file +{ + "variants": { + "": { + "model": "wwizardry:block/reinforced_glass" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/reinforced_glass_pane.json b/common/src/generated/resources/assets/wwizardry/blockstates/reinforced_glass_pane.json index 4c8e69ff..62b9cda9 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/reinforced_glass_pane.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/reinforced_glass_pane.json @@ -1 +1,77 @@ -{"multipart":[{"apply":{"model":"wwizardry:block/reinforced_glass_pane_post"}},{"when":{"north":"true"},"apply":{"model":"wwizardry:block/reinforced_glass_pane_side"}},{"when":{"north":"false"},"apply":{"model":"wwizardry:block/reinforced_glass_pane_noside"}},{"when":{"east":"true"},"apply":{"model":"wwizardry:block/reinforced_glass_pane_side","y":90}},{"when":{"east":"false"},"apply":{"model":"wwizardry:block/reinforced_glass_pane_noside_alt"}},{"when":{"south":"true"},"apply":{"model":"wwizardry:block/reinforced_glass_pane_side_alt"}},{"when":{"south":"false"},"apply":{"model":"wwizardry:block/reinforced_glass_pane_noside_alt","y":90}},{"when":{"west":"true"},"apply":{"model":"wwizardry:block/reinforced_glass_pane_side_alt","y":90}},{"when":{"west":"false"},"apply":{"model":"wwizardry:block/reinforced_glass_pane_noside","y":270}}]} \ No newline at end of file +{ + "multipart": [ + { + "apply": { + "model": "wwizardry:block/reinforced_glass_pane_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "wwizardry:block/reinforced_glass_pane_side" + } + }, + { + "when": { + "north": "false" + }, + "apply": { + "model": "wwizardry:block/reinforced_glass_pane_noside" + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "wwizardry:block/reinforced_glass_pane_side", + "y": 90 + } + }, + { + "when": { + "east": "false" + }, + "apply": { + "model": "wwizardry:block/reinforced_glass_pane_noside_alt" + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "wwizardry:block/reinforced_glass_pane_side_alt" + } + }, + { + "when": { + "south": "false" + }, + "apply": { + "model": "wwizardry:block/reinforced_glass_pane_noside_alt", + "y": 90 + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "wwizardry:block/reinforced_glass_pane_side_alt", + "y": 90 + } + }, + { + "when": { + "west": "false" + }, + "apply": { + "model": "wwizardry:block/reinforced_glass_pane_noside", + "y": 270 + } + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_block.json b/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_block.json index 6a86dd95..828d2a60 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_block.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_block.json @@ -1 +1,7 @@ -{"variants":{"":{"model":"wwizardry:block/rose_quartz_block"}}} \ No newline at end of file +{ + "variants": { + "": { + "model": "wwizardry:block/rose_quartz_block" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_ore.json b/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_ore.json index cc54ebca..910e68d4 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_ore.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_ore.json @@ -1 +1,7 @@ -{"variants":{"":{"model":"wwizardry:block/rose_quartz_ore"}}} \ No newline at end of file +{ + "variants": { + "": { + "model": "wwizardry:block/rose_quartz_ore" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/sculk_resonator.json b/common/src/generated/resources/assets/wwizardry/blockstates/sculk_resonator.json index 45b3d945..f1089d19 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/sculk_resonator.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/sculk_resonator.json @@ -1 +1,19 @@ -{"variants":{"facing=north":{"model":"wwizardry:block/sculk_resonator","y":180},"facing=south":{"model":"wwizardry:block/sculk_resonator"},"facing=east":{"model":"wwizardry:block/sculk_resonator","y":270},"facing=west":{"model":"wwizardry:block/sculk_resonator","y":90}}} \ No newline at end of file +{ + "variants": { + "facing=north": { + "model": "wwizardry:block/sculk_resonator", + "y": 180 + }, + "facing=south": { + "model": "wwizardry:block/sculk_resonator" + }, + "facing=east": { + "model": "wwizardry:block/sculk_resonator", + "y": 270 + }, + "facing=west": { + "model": "wwizardry:block/sculk_resonator", + "y": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/sculkflower.json b/common/src/generated/resources/assets/wwizardry/blockstates/sculkflower.json index 0f731b8f..d21edf4f 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/sculkflower.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/sculkflower.json @@ -1 +1,31 @@ -{"multipart":[{"when":{"sculked":"false"},"apply":{"model":"wwizardry:block/sculkflower"}},{"when":{"sculked":"true"},"apply":{"model":"wwizardry:block/sculkflower_sculk"}},{"when":{"sculked":"true","sculk_below":"false"},"apply":{"model":"block/sculk_vein","uvlock":true,"x":90}}]} \ No newline at end of file +{ + "multipart": [ + { + "when": { + "sculked": "false" + }, + "apply": { + "model": "wwizardry:block/sculkflower" + } + }, + { + "when": { + "sculked": "true" + }, + "apply": { + "model": "wwizardry:block/sculkflower_sculk" + } + }, + { + "when": { + "sculked": "true", + "sculk_below": "false" + }, + "apply": { + "model": "block/sculk_vein", + "uvlock": true, + "x": 90 + } + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json b/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json index 0bb42678..a0bc1b01 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json @@ -1 +1,19 @@ -{"variants":{"facing=north":{"model":"wwizardry:block/snail_shell"},"facing=south":{"model":"wwizardry:block/snail_shell","y":180},"facing=east":{"model":"wwizardry:block/snail_shell","y":90},"facing=west":{"model":"wwizardry:block/snail_shell","y":270}}} \ No newline at end of file +{ + "variants": { + "facing=north": { + "model": "wwizardry:block/snail_shell" + }, + "facing=south": { + "model": "wwizardry:block/snail_shell", + "y": 180 + }, + "facing=east": { + "model": "wwizardry:block/snail_shell", + "y": 90 + }, + "facing=west": { + "model": "wwizardry:block/snail_shell", + "y": 270 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/wall_holder.json b/common/src/generated/resources/assets/wwizardry/blockstates/wall_holder.json index d9a21800..7a87cc62 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/wall_holder.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/wall_holder.json @@ -1 +1,19 @@ -{"variants":{"facing=north":{"model":"wwizardry:block/wall_holder/base/empty"},"facing=south":{"model":"wwizardry:block/wall_holder/base/empty","y":180},"facing=east":{"model":"wwizardry:block/wall_holder/base/empty","y":90},"facing=west":{"model":"wwizardry:block/wall_holder/base/empty","y":270}}} \ No newline at end of file +{ + "variants": { + "facing=north": { + "model": "wwizardry:block/wall_holder/base/empty" + }, + "facing=south": { + "model": "wwizardry:block/wall_holder/base/empty", + "y": 180 + }, + "facing=east": { + "model": "wwizardry:block/wall_holder/base/empty", + "y": 90 + }, + "facing=west": { + "model": "wwizardry:block/wall_holder/base/empty", + "y": 270 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/waxed_copper_lens.json b/common/src/generated/resources/assets/wwizardry/blockstates/waxed_copper_lens.json new file mode 100644 index 00000000..f79ba08b --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/waxed_copper_lens.json @@ -0,0 +1,52 @@ +{ + "variants": { + "powered=false,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/normal/unpowered/focused", + "x": 90, + "y": 90 + }, + "powered=true,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/normal/powered/focused", + "x": 90, + "y": 90 + }, + "powered=false,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/normal/unpowered/unfocused", + "x": 90, + "y": 90 + }, + "powered=true,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/normal/powered/unfocused", + "x": 90, + "y": 90 + }, + "powered=false,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/normal/unpowered/focused" + }, + "powered=true,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/normal/powered/focused" + }, + "powered=false,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/normal/unpowered/unfocused" + }, + "powered=true,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/normal/powered/unfocused" + }, + "powered=false,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/normal/unpowered/focused", + "x": 90 + }, + "powered=true,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/normal/powered/focused", + "x": 90 + }, + "powered=false,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/normal/unpowered/unfocused", + "x": 90 + }, + "powered=true,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/normal/powered/unfocused", + "x": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index 2eccd318..a664a814 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -1 +1,167 @@ -{"jukebox_song.wwizardry.wandering":"Moonkey - Wandering","subtitles.wwizardry.snail.place":"Shell placed on snail","subtitles.wwizardry.snail.break":"Shell removed from snail","itemGroup.wwizardry.items":"Wandering Wizardry Items","itemGroup.wwizardry.blocks":"Wandering Wizardry Blocks","wwizardry.void_bag.generic_1":"This bag acts as a joint between dimensions,","wwizardry.void_bag.generic_2":"allowing you to store items across lifetimes.","wwizardry.void_bag.locked_1":"It is currently locked,","wwizardry.void_bag.locked_2":"meaning no item will be able to","wwizardry.void_bag.locked_3":"enter without explicit conformation.","wwizardry.void_bag.unlocked_1":"It is currently unlocked,","wwizardry.void_bag.unlocked_2":"meaning items in the bag will collect","wwizardry.void_bag.unlocked_3":"others from the outside world.","wwizardry.soul_mirror.generic_1":"Gaze into your reflection, and be","wwizardry.soul_mirror.generic_2":"transported to a land far away","wwizardry.soul_mirror.broken":"It is currently broken, blocking your reflection.","advancement.wwizardry.story.quartz.title":"We Are The Crystal Gems","advancement.wwizardry.story.quartz.description":"Mine Rose Quartz Ore to get a familiar gem","advancement.wwizardry.adventure.forgotten_fields.title":"A Strange Land...","advancement.wwizardry.adventure.forgotten_fields.description":"Enter the Forgotten Fields","advancement.wwizardry.adventure.sculk_lab.title":"A Time Gone By","advancement.wwizardry.adventure.sculk_lab.description":"Enter a Sculk Lab for the first time","advancement.wwizardry.adventure.altar.craft.title":"What's This?","advancement.wwizardry.adventure.altar.craft.description":"Craft an Altar","advancement.wwizardry.adventure.altar.place.title":"Harnessing the Warden","advancement.wwizardry.adventure.altar.place.description":"Successfully assemble an Altar","advancement.wwizardry.adventure.altar.crystal.title":"A Cool Crystal","advancement.wwizardry.adventure.altar.crystal.description":"Place an End Crystal in an Altar","advancement.wwizardry.adventure.crystalline_sculk.title":"Trash or Treasure?","advancement.wwizardry.adventure.crystalline_sculk.description":"Craft Crystalline Sculk using the Altar","advancement.wwizardry.adventure.void_bag.title":"Legally Distinct","advancement.wwizardry.adventure.void_bag.description":"Craft a Void Bag using the Altar","advancement.wwizardry.adventure.soul_mirror.title":"Looking Good!","advancement.wwizardry.adventure.soul_mirror.description":"Craft a Soul Mirror using the Altar","advancement.wwizardry.adventure.soul_mirror.bound.title":"A New Way Home","advancement.wwizardry.adventure.soul_mirror.bound.description":"Bind a Soul Mirror to a Lodestone","advancement.wwizardry.adventure.charm.slot.title":"Altering the Altar","advancement.wwizardry.adventure.charm.slot.description":"Craft a Slot Charm using the Altar","advancement.wwizardry.adventure.charm.crafting.title":"Before It Was Cool","advancement.wwizardry.adventure.charm.crafting.description":"Craft a Crafting Charm using the Altar","advancement.wwizardry.adventure.charm.brewing.title":"Magical Brewery","advancement.wwizardry.adventure.charm.brewing.description":"Craft a Brewing Charm using the Altar","block.wwizardry.rose_quartz_ore":"Rose Quartz Ore","block.wwizardry.deepslate_rose_quartz_ore":"Deepslate Rose Quartz Ore","block.wwizardry.rose_quartz_block":"Block Of Rose Quartz","block.wwizardry.crystalline_sculk_block":"Crystalline Sculk Block","block.wwizardry.reinforced_glass":"Reinforced Glass","block.wwizardry.reinforced_glass_pane":"Reinforced Glass Pane","block.wwizardry.sculk_resonator":"Resonating Sculk Shrieker","block.wwizardry.camera":"Camera","block.wwizardry.redstone_lantern":"Redstone Lantern","block.wwizardry.wall_holder":"Sconce","block.wwizardry.modulo_comparator":"Modulo Comparator","block.wwizardry.redstone_stepper":"Redstone Stepper","block.wwizardry.sculkflower":"Sculkflower","block.wwizardry.indigo_caeruleum":"Indigo Caeruleum","block.wwizardry.mycelial_sand":"Mycelial Sand","block.wwizardry.snail_shell":"Snail Shell","block.wwizardry.altar_pedestal":"Altar Pedestal","block.wwizardry.altar_catalyzer":"Altar Catalyzer","block.wwizardry.stripped_denia_log":"Stripped Denia Log","block.wwizardry.denia_log":"Denia Log","block.wwizardry.stripped_denia_wood":"Stripped Denia Wood","block.wwizardry.denia_wood":"Denia Wood","block.wwizardry.denia_planks":"Denia Planks","block.wwizardry.denia_stairs":"Denia Stairs","block.wwizardry.denia_slab":"Denia Slab","block.wwizardry.denia_button":"Denia Button","block.wwizardry.denia_pressure_plate":"Denia Pressure Plate","block.wwizardry.denia_door":"Denia Door","block.wwizardry.denia_trapdoor":"Denia Trapdoor","block.wwizardry.denia_sign":"Denia Sign","block.wwizardry.denia_hanging_sign":"Denia Hanging Sign","block.wwizardry.denia_fence":"Denia Fence","block.wwizardry.denia_fence_gate":"Denia Fence Gate","block.wwizardry.denia_leaves":"Denia Leaves","block.wwizardry.denia_sapling":"Denia Sapling","block.wwizardry.denia_boat":"Denia Boat","block.wwizardry.denia_chest_boat":"Denia Boat With Chest","block.wwizardry.stripped_mycha_stem":"Stripped Mycha Stem","block.wwizardry.mycha_stem":"Mycha Stem","block.wwizardry.stripped_mycha_hyphae":"Stripped Mycha Hyphae","block.wwizardry.mycha_hyphae":"Mycha Hyphae","block.wwizardry.mycha_planks":"Mycha Planks","block.wwizardry.mycha_stairs":"Mycha Stairs","block.wwizardry.mycha_slab":"Mycha Slab","block.wwizardry.mycha_button":"Mycha Button","block.wwizardry.mycha_pressure_plate":"Mycha Pressure Plate","block.wwizardry.mycha_door":"Mycha Door","block.wwizardry.mycha_trapdoor":"Mycha Trapdoor","block.wwizardry.mycha_sign":"Mycha Sign","block.wwizardry.mycha_hanging_sign":"Mycha Hanging Sign","block.wwizardry.mycha_fence":"Mycha Fence","block.wwizardry.mycha_fence_gate":"Mycha Fence Gate","block.wwizardry.mycha_wart":"Mycha Wart","block.wwizardry.mycha_fungus":"Mycha Fungus","block.wwizardry.chiseled_basalt":"Chiseled Basalt","block.wwizardry.chiseled_basalt_stairs":"Chiseled Basalt Stairs","block.wwizardry.chiseled_basalt_slab":"Chiseled Basalt Slab","block.wwizardry.chiseled_basalt_wall":"Chiseled Basalt Wall","block.wwizardry.cut_basalt":"Cut Basalt","block.wwizardry.cut_basalt_stairs":"Cut Basalt Stairs","block.wwizardry.cut_basalt_slab":"Cut Basalt Slab","block.wwizardry.cut_basalt_wall":"Cut Basalt Wall","block.wwizardry.basalt_bricks":"Basalt Bricks","block.wwizardry.basalt_brick_stairs":"Basalt Brick Stairs","block.wwizardry.basalt_brick_slab":"Basalt Brick Slab","block.wwizardry.basalt_brick_wall":"Basalt Brick Wall","block.wwizardry.basalt_tiles":"Basalt Tiles","block.wwizardry.basalt_tile_stairs":"Basalt Tile Stairs","block.wwizardry.basalt_tile_slab":"Basalt Tile Slab","block.wwizardry.basalt_tile_wall":"Basalt Tile Wall","block.wwizardry.mossy_chiseled_basalt":"Mossy Chiseled Basalt","block.wwizardry.mossy_chiseled_basalt_stairs":"Mossy Chiseled Basalt Stairs","block.wwizardry.mossy_chiseled_basalt_slab":"Mossy Chiseled Basalt Slab","block.wwizardry.mossy_chiseled_basalt_wall":"Mossy Chiseled Basalt Wall","block.wwizardry.mossy_cut_basalt":"Mossy Cut Basalt","block.wwizardry.mossy_cut_basalt_stairs":"Mossy Cut Basalt Stairs","block.wwizardry.mossy_cut_basalt_slab":"Mossy Cut Basalt Slab","block.wwizardry.mossy_cut_basalt_wall":"Mossy Cut Basalt Wall","block.wwizardry.mossy_basalt_bricks":"Mossy Basalt Bricks","block.wwizardry.mossy_basalt_brick_stairs":"Mossy Basalt Brick Stairs","block.wwizardry.mossy_basalt_brick_slab":"Mossy Basalt Brick Slab","block.wwizardry.mossy_basalt_brick_wall":"Mossy Basalt Brick Wall","block.wwizardry.mossy_basalt_tiles":"Mossy Basalt Tiles","block.wwizardry.mossy_basalt_tile_stairs":"Mossy Basalt Tile Stairs","block.wwizardry.mossy_basalt_tile_slab":"Mossy Basalt Tile Slab","block.wwizardry.mossy_basalt_tile_wall":"Mossy Basalt Tile Wall","item.wwizardry.void_bag":"Void Bag","item.wwizardry.crystalline_sculk":"Crystalline Sculk","item.wwizardry.rose_quartz":"Rose Quartz","item.wwizardry.denia_boat":"Denia Boat","item.wwizardry.denia_chest_boat":"Denia Boat with Chest","item.wwizardry.slot_charm":"Slot Charm","item.wwizardry.crafting_charm":"Crafting Charm","item.wwizardry.brewing_charm":"Brewing Charm","item.wwizardry.smithing_charm":"Smithing Charm","item.wwizardry.anvil_charm":"Anvil Charm","item.wwizardry.soul_mirror":"Soul Mirror","item.wwizardry.music_disc_wandering":"Music Disc","item.wwizardry.snail_spawn_egg":"Snail Spawn Egg","entity.wwizardry.snail":"Snail","boat.wwizardry.denia":"Denia Boat","boat.wwizardry.denia_chest":"Denia Boat with Chest","painting.wwizardry.altar.title":"Altar","painting.wwizardry.altar.author":"Sweet Berry Collective","wwizardry.badge.developer":"Developer for the Sweet Berry Collective","wwizardry.badge.artist":"Worked on art for Wandering Wizardry","wwizardry.badge.contributor":"Contributed code to Wandering Wizardry","emi.category.wwizardry.altar_catalyzation":"Altar Catalyzation","emi.category.wwizardry.altar_shapeless":"Altar Shapeless Crafting","emi.category.wwizardry.altar_brewing":"Altar Brewing","wwizardry.catalyst":"Catalyst","aurorasdeco.wood_type.wwizardry.denia":"Denia","aurorasdeco.wood_type.wwizardry.mycha":"Mycha","architecture_extensions.grouped_block.denia":"Denia","architecture_extensions.grouped_block.mycha":"Mycha","architecture_extensions.grouped_block.basalt_bricks":"Basalt Bricks","architecture_extensions.grouped_block.basalt_tiles":"Basalt Tiles","architecture_extensions.grouped_block.chiseled_basalt":"Chiseled Basalt","architecture_extensions.grouped_block.mossy_basalt_bricks":"Mossy Basalt Bricks","architecture_extensions.grouped_block.mossy_basalt_tiles":"Mossy Basalt Tiles","architecture_extensions.grouped_block.mossy_chiseled_basalt":"Mossy Chiseled Basalt"} \ No newline at end of file +{ + "jukebox_song.wwizardry.wandering": "Moonkey - Wandering", + "subtitles.wwizardry.snail.place": "Shell placed on snail", + "subtitles.wwizardry.snail.break": "Shell removed from snail", + "wwizardry.trim_material.rose_quartz": "Rose Quartz", + "wwizardry.trim_material.crystalling_sculk": "Crystalline Sculk", + "itemGroup.wwizardry.items": "Wandering Wizardry Items", + "itemGroup.wwizardry.blocks": "Wandering Wizardry Blocks", + "wwizardry.void_bag.generic_1": "This bag acts as a joint between dimensions,", + "wwizardry.void_bag.generic_2": "allowing you to store items across lifetimes.", + "wwizardry.void_bag.locked_1": "It is currently locked,", + "wwizardry.void_bag.locked_2": "meaning no item will be able to", + "wwizardry.void_bag.locked_3": "enter without explicit conformation.", + "wwizardry.void_bag.unlocked_1": "It is currently unlocked,", + "wwizardry.void_bag.unlocked_2": "meaning items in the bag will collect", + "wwizardry.void_bag.unlocked_3": "others from the outside world.", + "wwizardry.soul_mirror.generic_1": "Gaze into your reflection, and be", + "wwizardry.soul_mirror.generic_2": "transported to a land far away", + "wwizardry.soul_mirror.broken": "It is currently broken, blocking your reflection.", + "advancement.wwizardry.story.quartz.title": "We Are The Crystal Gems", + "advancement.wwizardry.story.quartz.description": "Mine Rose Quartz Ore to get a familiar gem", + "advancement.wwizardry.adventure.forgotten_fields.title": "A Strange Land...", + "advancement.wwizardry.adventure.forgotten_fields.description": "Enter the Forgotten Fields", + "advancement.wwizardry.adventure.sculk_lab.title": "A Time Gone By", + "advancement.wwizardry.adventure.sculk_lab.description": "Enter a Sculk Lab for the first time", + "advancement.wwizardry.adventure.altar.craft.title": "What's This?", + "advancement.wwizardry.adventure.altar.craft.description": "Craft an Altar", + "advancement.wwizardry.adventure.altar.place.title": "Harnessing the Warden", + "advancement.wwizardry.adventure.altar.place.description": "Successfully assemble an Altar", + "advancement.wwizardry.adventure.altar.crystal.title": "A Cool Crystal", + "advancement.wwizardry.adventure.altar.crystal.description": "Place an End Crystal in an Altar", + "advancement.wwizardry.adventure.crystalline_sculk.title": "Trash or Treasure?", + "advancement.wwizardry.adventure.crystalline_sculk.description": "Craft Crystalline Sculk using the Altar", + "advancement.wwizardry.adventure.void_bag.title": "Legally Distinct", + "advancement.wwizardry.adventure.void_bag.description": "Craft a Void Bag using the Altar", + "advancement.wwizardry.adventure.soul_mirror.title": "Looking Good!", + "advancement.wwizardry.adventure.soul_mirror.description": "Craft a Soul Mirror using the Altar", + "advancement.wwizardry.adventure.soul_mirror.bound.title": "A New Way Home", + "advancement.wwizardry.adventure.soul_mirror.bound.description": "Bind a Soul Mirror to a Lodestone", + "advancement.wwizardry.adventure.charm.slot.title": "Altering the Altar", + "advancement.wwizardry.adventure.charm.slot.description": "Craft a Slot Charm using the Altar", + "advancement.wwizardry.adventure.charm.crafting.title": "Before It Was Cool", + "advancement.wwizardry.adventure.charm.crafting.description": "Craft a Crafting Charm using the Altar", + "advancement.wwizardry.adventure.charm.brewing.title": "Magical Brewery", + "advancement.wwizardry.adventure.charm.brewing.description": "Craft a Brewing Charm using the Altar", + "block.wwizardry.rose_quartz_ore": "Rose Quartz Ore", + "block.wwizardry.deepslate_rose_quartz_ore": "Deepslate Rose Quartz Ore", + "block.wwizardry.rose_quartz_block": "Block Of Rose Quartz", + "block.wwizardry.crystalline_sculk_block": "Crystalline Sculk Block", + "block.wwizardry.reinforced_glass": "Reinforced Glass", + "block.wwizardry.reinforced_glass_pane": "Reinforced Glass Pane", + "block.wwizardry.sculk_resonator": "Resonating Sculk Shrieker", + "block.wwizardry.camera": "Camera", + "block.wwizardry.redstone_lantern": "Redstone Lantern", + "block.wwizardry.wall_holder": "Sconce", + "block.wwizardry.modulo_comparator": "Modulo Comparator", + "block.wwizardry.redstone_stepper": "Redstone Stepper", + "block.wwizardry.sculkflower": "Sculkflower", + "block.wwizardry.indigo_caeruleum": "Indigo Caeruleum", + "block.wwizardry.mycelial_sand": "Mycelial Sand", + "block.wwizardry.snail_shell": "Snail Shell", + "block.wwizardry.altar_pedestal": "Altar Pedestal", + "block.wwizardry.altar_catalyzer": "Altar Catalyzer", + "block.wwizardry.stripped_denia_log": "Stripped Denia Log", + "block.wwizardry.denia_log": "Denia Log", + "block.wwizardry.stripped_denia_wood": "Stripped Denia Wood", + "block.wwizardry.denia_wood": "Denia Wood", + "block.wwizardry.denia_planks": "Denia Planks", + "block.wwizardry.denia_stairs": "Denia Stairs", + "block.wwizardry.denia_slab": "Denia Slab", + "block.wwizardry.denia_button": "Denia Button", + "block.wwizardry.denia_pressure_plate": "Denia Pressure Plate", + "block.wwizardry.denia_door": "Denia Door", + "block.wwizardry.denia_trapdoor": "Denia Trapdoor", + "block.wwizardry.denia_sign": "Denia Sign", + "block.wwizardry.denia_hanging_sign": "Denia Hanging Sign", + "block.wwizardry.denia_fence": "Denia Fence", + "block.wwizardry.denia_fence_gate": "Denia Fence Gate", + "block.wwizardry.denia_leaves": "Denia Leaves", + "block.wwizardry.denia_sapling": "Denia Sapling", + "block.wwizardry.denia_boat": "Denia Boat", + "block.wwizardry.denia_chest_boat": "Denia Boat With Chest", + "block.wwizardry.stripped_mycha_stem": "Stripped Mycha Stem", + "block.wwizardry.mycha_stem": "Mycha Stem", + "block.wwizardry.stripped_mycha_hyphae": "Stripped Mycha Hyphae", + "block.wwizardry.mycha_hyphae": "Mycha Hyphae", + "block.wwizardry.mycha_planks": "Mycha Planks", + "block.wwizardry.mycha_stairs": "Mycha Stairs", + "block.wwizardry.mycha_slab": "Mycha Slab", + "block.wwizardry.mycha_button": "Mycha Button", + "block.wwizardry.mycha_pressure_plate": "Mycha Pressure Plate", + "block.wwizardry.mycha_door": "Mycha Door", + "block.wwizardry.mycha_trapdoor": "Mycha Trapdoor", + "block.wwizardry.mycha_sign": "Mycha Sign", + "block.wwizardry.mycha_hanging_sign": "Mycha Hanging Sign", + "block.wwizardry.mycha_fence": "Mycha Fence", + "block.wwizardry.mycha_fence_gate": "Mycha Fence Gate", + "block.wwizardry.mycha_wart": "Mycha Wart", + "block.wwizardry.mycha_fungus": "Mycha Fungus", + "block.wwizardry.chiseled_basalt": "Chiseled Basalt", + "block.wwizardry.chiseled_basalt_stairs": "Chiseled Basalt Stairs", + "block.wwizardry.chiseled_basalt_slab": "Chiseled Basalt Slab", + "block.wwizardry.chiseled_basalt_wall": "Chiseled Basalt Wall", + "block.wwizardry.cut_basalt": "Cut Basalt", + "block.wwizardry.cut_basalt_stairs": "Cut Basalt Stairs", + "block.wwizardry.cut_basalt_slab": "Cut Basalt Slab", + "block.wwizardry.cut_basalt_wall": "Cut Basalt Wall", + "block.wwizardry.basalt_bricks": "Basalt Bricks", + "block.wwizardry.basalt_brick_stairs": "Basalt Brick Stairs", + "block.wwizardry.basalt_brick_slab": "Basalt Brick Slab", + "block.wwizardry.basalt_brick_wall": "Basalt Brick Wall", + "block.wwizardry.basalt_tiles": "Basalt Tiles", + "block.wwizardry.basalt_tile_stairs": "Basalt Tile Stairs", + "block.wwizardry.basalt_tile_slab": "Basalt Tile Slab", + "block.wwizardry.basalt_tile_wall": "Basalt Tile Wall", + "block.wwizardry.mossy_chiseled_basalt": "Mossy Chiseled Basalt", + "block.wwizardry.mossy_chiseled_basalt_stairs": "Mossy Chiseled Basalt Stairs", + "block.wwizardry.mossy_chiseled_basalt_slab": "Mossy Chiseled Basalt Slab", + "block.wwizardry.mossy_chiseled_basalt_wall": "Mossy Chiseled Basalt Wall", + "block.wwizardry.mossy_cut_basalt": "Mossy Cut Basalt", + "block.wwizardry.mossy_cut_basalt_stairs": "Mossy Cut Basalt Stairs", + "block.wwizardry.mossy_cut_basalt_slab": "Mossy Cut Basalt Slab", + "block.wwizardry.mossy_cut_basalt_wall": "Mossy Cut Basalt Wall", + "block.wwizardry.mossy_basalt_bricks": "Mossy Basalt Bricks", + "block.wwizardry.mossy_basalt_brick_stairs": "Mossy Basalt Brick Stairs", + "block.wwizardry.mossy_basalt_brick_slab": "Mossy Basalt Brick Slab", + "block.wwizardry.mossy_basalt_brick_wall": "Mossy Basalt Brick Wall", + "block.wwizardry.mossy_basalt_tiles": "Mossy Basalt Tiles", + "block.wwizardry.mossy_basalt_tile_stairs": "Mossy Basalt Tile Stairs", + "block.wwizardry.mossy_basalt_tile_slab": "Mossy Basalt Tile Slab", + "block.wwizardry.mossy_basalt_tile_wall": "Mossy Basalt Tile Wall", + "item.wwizardry.void_bag": "Void Bag", + "item.wwizardry.crystalline_sculk": "Crystalline Sculk", + "item.wwizardry.rose_quartz": "Rose Quartz", + "item.wwizardry.denia_boat": "Denia Boat", + "item.wwizardry.denia_chest_boat": "Denia Boat with Chest", + "item.wwizardry.slot_charm": "Slot Charm", + "item.wwizardry.crafting_charm": "Crafting Charm", + "item.wwizardry.brewing_charm": "Brewing Charm", + "item.wwizardry.smithing_charm": "Smithing Charm", + "item.wwizardry.anvil_charm": "Anvil Charm", + "item.wwizardry.soul_mirror": "Soul Mirror", + "item.wwizardry.music_disc_wandering": "Music Disc", + "item.wwizardry.snail_spawn_egg": "Snail Spawn Egg", + "entity.wwizardry.snail": "Snail", + "boat.wwizardry.denia": "Denia Boat", + "boat.wwizardry.denia_chest": "Denia Boat with Chest", + "painting.wwizardry.altar.title": "Altar", + "painting.wwizardry.altar.author": "Sweet Berry Collective", + "wwizardry.badge.developer": "Developer for the Sweet Berry Collective", + "wwizardry.badge.artist": "Worked on art for Wandering Wizardry", + "wwizardry.badge.contributor": "Contributed code to Wandering Wizardry", + "emi.category.wwizardry.altar_catalyzation": "Altar Catalyzation", + "emi.category.wwizardry.altar_shapeless": "Altar Shapeless Crafting", + "emi.category.wwizardry.altar_brewing": "Altar Brewing", + "wwizardry.catalyst": "Catalyst", + "aurorasdeco.wood_type.wwizardry.denia": "Denia", + "aurorasdeco.wood_type.wwizardry.mycha": "Mycha", + "architecture_extensions.grouped_block.denia": "Denia", + "architecture_extensions.grouped_block.mycha": "Mycha", + "architecture_extensions.grouped_block.basalt_bricks": "Basalt Bricks", + "architecture_extensions.grouped_block.basalt_tiles": "Basalt Tiles", + "architecture_extensions.grouped_block.chiseled_basalt": "Chiseled Basalt", + "architecture_extensions.grouped_block.mossy_basalt_bricks": "Mossy Basalt Bricks", + "architecture_extensions.grouped_block.mossy_basalt_tiles": "Mossy Basalt Tiles", + "architecture_extensions.grouped_block.mossy_chiseled_basalt": "Mossy Chiseled Basalt" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/c/tags/block/glass_blocks.json b/common/src/generated/resources/data/c/tags/block/glass_blocks.json index 31db7131..e9e4db76 100644 --- a/common/src/generated/resources/data/c/tags/block/glass_blocks.json +++ b/common/src/generated/resources/data/c/tags/block/glass_blocks.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:reinforced_glass"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:reinforced_glass" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/c/tags/block/glass_panes.json b/common/src/generated/resources/data/c/tags/block/glass_panes.json index b071bb3c..222f1639 100644 --- a/common/src/generated/resources/data/c/tags/block/glass_panes.json +++ b/common/src/generated/resources/data/c/tags/block/glass_panes.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:reinforced_glass_pane"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:reinforced_glass_pane" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/c/tags/block/rose_quartz_ores.json b/common/src/generated/resources/data/c/tags/block/rose_quartz_ores.json index b5e086d4..9cbf016c 100644 --- a/common/src/generated/resources/data/c/tags/block/rose_quartz_ores.json +++ b/common/src/generated/resources/data/c/tags/block/rose_quartz_ores.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:rose_quartz_ore"},{"required":false,"id":"wwizardry:deepslate_rose_quartz_ore"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:rose_quartz_ore" + }, + { + "required": false, + "id": "wwizardry:deepslate_rose_quartz_ore" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/c/tags/item/glass_blocks.json b/common/src/generated/resources/data/c/tags/item/glass_blocks.json index 31db7131..e9e4db76 100644 --- a/common/src/generated/resources/data/c/tags/item/glass_blocks.json +++ b/common/src/generated/resources/data/c/tags/item/glass_blocks.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:reinforced_glass"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:reinforced_glass" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/c/tags/item/glass_panes.json b/common/src/generated/resources/data/c/tags/item/glass_panes.json index b071bb3c..222f1639 100644 --- a/common/src/generated/resources/data/c/tags/item/glass_panes.json +++ b/common/src/generated/resources/data/c/tags/item/glass_panes.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:reinforced_glass_pane"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:reinforced_glass_pane" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/c/tags/item/rose_quartz_ores.json b/common/src/generated/resources/data/c/tags/item/rose_quartz_ores.json index b5e086d4..9cbf016c 100644 --- a/common/src/generated/resources/data/c/tags/item/rose_quartz_ores.json +++ b/common/src/generated/resources/data/c/tags/item/rose_quartz_ores.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:rose_quartz_ore"},{"required":false,"id":"wwizardry:deepslate_rose_quartz_ore"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:rose_quartz_ore" + }, + { + "required": false, + "id": "wwizardry:deepslate_rose_quartz_ore" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/c/tags/item/rose_quartzes.json b/common/src/generated/resources/data/c/tags/item/rose_quartzes.json index 5a23dc63..a8ed0f5f 100644 --- a/common/src/generated/resources/data/c/tags/item/rose_quartzes.json +++ b/common/src/generated/resources/data/c/tags/item/rose_quartzes.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:rose_quartz"},{"required":false,"id":"create:rose_quartz"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:rose_quartz" + }, + { + "required": false, + "id": "create:rose_quartz" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/block/glass.json b/common/src/generated/resources/data/forge/tags/block/glass.json index 31db7131..e9e4db76 100644 --- a/common/src/generated/resources/data/forge/tags/block/glass.json +++ b/common/src/generated/resources/data/forge/tags/block/glass.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:reinforced_glass"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:reinforced_glass" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/block/glass_panes.json b/common/src/generated/resources/data/forge/tags/block/glass_panes.json index b071bb3c..222f1639 100644 --- a/common/src/generated/resources/data/forge/tags/block/glass_panes.json +++ b/common/src/generated/resources/data/forge/tags/block/glass_panes.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:reinforced_glass_pane"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:reinforced_glass_pane" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/block/ores/rose_quartz.json b/common/src/generated/resources/data/forge/tags/block/ores/rose_quartz.json index b5e086d4..9cbf016c 100644 --- a/common/src/generated/resources/data/forge/tags/block/ores/rose_quartz.json +++ b/common/src/generated/resources/data/forge/tags/block/ores/rose_quartz.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:rose_quartz_ore"},{"required":false,"id":"wwizardry:deepslate_rose_quartz_ore"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:rose_quartz_ore" + }, + { + "required": false, + "id": "wwizardry:deepslate_rose_quartz_ore" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/item/glass.json b/common/src/generated/resources/data/forge/tags/item/glass.json index 31db7131..e9e4db76 100644 --- a/common/src/generated/resources/data/forge/tags/item/glass.json +++ b/common/src/generated/resources/data/forge/tags/item/glass.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:reinforced_glass"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:reinforced_glass" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/item/glass_panes.json b/common/src/generated/resources/data/forge/tags/item/glass_panes.json index b071bb3c..222f1639 100644 --- a/common/src/generated/resources/data/forge/tags/item/glass_panes.json +++ b/common/src/generated/resources/data/forge/tags/item/glass_panes.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:reinforced_glass_pane"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:reinforced_glass_pane" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/item/ores/rose_quartz.json b/common/src/generated/resources/data/forge/tags/item/ores/rose_quartz.json index b5e086d4..9cbf016c 100644 --- a/common/src/generated/resources/data/forge/tags/item/ores/rose_quartz.json +++ b/common/src/generated/resources/data/forge/tags/item/ores/rose_quartz.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:rose_quartz_ore"},{"required":false,"id":"wwizardry:deepslate_rose_quartz_ore"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:rose_quartz_ore" + }, + { + "required": false, + "id": "wwizardry:deepslate_rose_quartz_ore" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/item/rose_quartzes.json b/common/src/generated/resources/data/forge/tags/item/rose_quartzes.json index 5a23dc63..a8ed0f5f 100644 --- a/common/src/generated/resources/data/forge/tags/item/rose_quartzes.json +++ b/common/src/generated/resources/data/forge/tags/item/rose_quartzes.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:rose_quartz"},{"required":false,"id":"create:rose_quartz"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:rose_quartz" + }, + { + "required": false, + "id": "create:rose_quartz" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/all_hanging_signs.json b/common/src/generated/resources/data/minecraft/tags/block/all_hanging_signs.json index 92d17e57..cd22ce4e 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/all_hanging_signs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/all_hanging_signs.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_hanging_sign"},{"required":false,"id":"wwizardry:denia_wall_hanging_sign"},{"required":false,"id":"wwizardry:mycha_hanging_sign"},{"required":false,"id":"wwizardry:mycha_wall_hanging_sign"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:denia_wall_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_wall_hanging_sign" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/ceiling_hanging_signs.json b/common/src/generated/resources/data/minecraft/tags/block/ceiling_hanging_signs.json index 88d16e59..8a4500f3 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/ceiling_hanging_signs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/ceiling_hanging_signs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_hanging_sign"},{"required":false,"id":"wwizardry:mycha_hanging_sign"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_hanging_sign" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/crystal_sound_blocks.json b/common/src/generated/resources/data/minecraft/tags/block/crystal_sound_blocks.json index 52b19826..2f5c3d67 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/crystal_sound_blocks.json +++ b/common/src/generated/resources/data/minecraft/tags/block/crystal_sound_blocks.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:crystalline_sculk_block"},{"required":false,"id":"wwizardry:rose_quartz_block"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:crystalline_sculk_block" + }, + { + "required": false, + "id": "wwizardry:rose_quartz_block" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/fence_gates.json b/common/src/generated/resources/data/minecraft/tags/block/fence_gates.json index 74d20409..1da4c876 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/fence_gates.json +++ b/common/src/generated/resources/data/minecraft/tags/block/fence_gates.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_fence_gate"},{"required":false,"id":"wwizardry:mycha_fence_gate"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_fence_gate" + }, + { + "required": false, + "id": "wwizardry:mycha_fence_gate" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/fences.json b/common/src/generated/resources/data/minecraft/tags/block/fences.json index f80bfcf6..f63ee665 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/fences.json +++ b/common/src/generated/resources/data/minecraft/tags/block/fences.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_fence"},{"required":false,"id":"wwizardry:mycha_fence"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_fence" + }, + { + "required": false, + "id": "wwizardry:mycha_fence" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/flowers.json b/common/src/generated/resources/data/minecraft/tags/block/flowers.json index 0c22f788..410639fb 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/flowers.json +++ b/common/src/generated/resources/data/minecraft/tags/block/flowers.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:sculkflower"},{"required":false,"id":"wwizardry:indigo_caeruleum"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:sculkflower" + }, + { + "required": false, + "id": "wwizardry:indigo_caeruleum" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/impermeable.json b/common/src/generated/resources/data/minecraft/tags/block/impermeable.json index 31db7131..e9e4db76 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/impermeable.json +++ b/common/src/generated/resources/data/minecraft/tags/block/impermeable.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:reinforced_glass"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:reinforced_glass" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/leaves.json b/common/src/generated/resources/data/minecraft/tags/block/leaves.json index 8eeb6f1a..530a950d 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/leaves.json +++ b/common/src/generated/resources/data/minecraft/tags/block/leaves.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_leaves"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_leaves" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/logs.json b/common/src/generated/resources/data/minecraft/tags/block/logs.json index 36070670..db829b3d 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/logs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/logs.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:mycha_stems"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:mycha_stems" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/logs_that_burn.json b/common/src/generated/resources/data/minecraft/tags/block/logs_that_burn.json index 784b3dbb..29e71b3e 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/logs_that_burn.json +++ b/common/src/generated/resources/data/minecraft/tags/block/logs_that_burn.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:denia_logs"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:denia_logs" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/mineable/axe.json b/common/src/generated/resources/data/minecraft/tags/block/mineable/axe.json index 4ed0c66c..89d6aaf9 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/mineable/axe.json +++ b/common/src/generated/resources/data/minecraft/tags/block/mineable/axe.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:wood/all"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:wood/all" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json b/common/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json index 335410aa..72cf8d1d 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json +++ b/common/src/generated/resources/data/minecraft/tags/block/mineable/hoe.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_leaves"},{"required":false,"id":"wwizardry:mycha_wart"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_leaves" + }, + { + "required": false, + "id": "wwizardry:mycha_wart" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index a6d17b44..386d4aaf 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -1 +1,41 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:brick/basalt"},{"required":false,"id":"#wwizardry:altars"},{"required":false,"id":"wwizardry:camera"},{"required":false,"id":"wwizardry:reinforced_glass"},{"required":false,"id":"wwizardry:reinforced_glass_pane"},{"required":false,"id":"wwizardry:crystalline_sculk_block"},{"required":false,"id":"wwizardry:rose_quartz_ore"},{"required":false,"id":"wwizardry:deepslate_rose_quartz_ore"},{"required":false,"id":"wwizardry:rose_quartz_block"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:brick/basalt" + }, + { + "required": false, + "id": "#wwizardry:altars" + }, + { + "required": false, + "id": "wwizardry:camera" + }, + { + "required": false, + "id": "wwizardry:reinforced_glass" + }, + { + "required": false, + "id": "wwizardry:reinforced_glass_pane" + }, + { + "required": false, + "id": "wwizardry:crystalline_sculk_block" + }, + { + "required": false, + "id": "wwizardry:rose_quartz_ore" + }, + { + "required": false, + "id": "wwizardry:deepslate_rose_quartz_ore" + }, + { + "required": false, + "id": "wwizardry:rose_quartz_block" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/planks.json b/common/src/generated/resources/data/minecraft/tags/block/planks.json index 92afc5df..7932090b 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/planks.json +++ b/common/src/generated/resources/data/minecraft/tags/block/planks.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_planks"},{"required":false,"id":"wwizardry:mycha_planks"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_planks" + }, + { + "required": false, + "id": "wwizardry:mycha_planks" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/slabs.json b/common/src/generated/resources/data/minecraft/tags/block/slabs.json index 19516434..cd2aa7f0 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/slabs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/slabs.json @@ -1 +1,37 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_slab"},{"required":false,"id":"wwizardry:mycha_slab"},{"required":false,"id":"wwizardry:basalt_brick_slab"},{"required":false,"id":"wwizardry:basalt_tile_slab"},{"required":false,"id":"wwizardry:chiseled_basalt_slab"},{"required":false,"id":"wwizardry:mossy_basalt_brick_slab"},{"required":false,"id":"wwizardry:mossy_basalt_tile_slab"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_slab"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_slab" + }, + { + "required": false, + "id": "wwizardry:mycha_slab" + }, + { + "required": false, + "id": "wwizardry:basalt_brick_slab" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_slab" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_slab" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/stairs.json b/common/src/generated/resources/data/minecraft/tags/block/stairs.json index 72a172e8..7217d782 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/stairs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/stairs.json @@ -1 +1,29 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:basalt_brick_stairs"},{"required":false,"id":"wwizardry:basalt_tile_stairs"},{"required":false,"id":"wwizardry:chiseled_basalt_stairs"},{"required":false,"id":"wwizardry:mossy_basalt_brick_stairs"},{"required":false,"id":"wwizardry:mossy_basalt_tile_stairs"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_stairs"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:basalt_brick_stairs" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_stairs" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_stairs" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/standing_signs.json b/common/src/generated/resources/data/minecraft/tags/block/standing_signs.json index f2c5b51e..d072aa87 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/standing_signs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/standing_signs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_sign"},{"required":false,"id":"wwizardry:mycha_sign"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_sign" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/vibration_resonators.json b/common/src/generated/resources/data/minecraft/tags/block/vibration_resonators.json index 52b19826..2f5c3d67 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/vibration_resonators.json +++ b/common/src/generated/resources/data/minecraft/tags/block/vibration_resonators.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:crystalline_sculk_block"},{"required":false,"id":"wwizardry:rose_quartz_block"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:crystalline_sculk_block" + }, + { + "required": false, + "id": "wwizardry:rose_quartz_block" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/wall_hanging_signs.json b/common/src/generated/resources/data/minecraft/tags/block/wall_hanging_signs.json index c560b4d4..8c0951a1 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/wall_hanging_signs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/wall_hanging_signs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_wall_hanging_sign"},{"required":false,"id":"wwizardry:mycha_wall_hanging_sign"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_wall_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_wall_hanging_sign" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/wall_signs.json b/common/src/generated/resources/data/minecraft/tags/block/wall_signs.json index 1a16b02c..ea293f01 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/wall_signs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/wall_signs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_wall_sign"},{"required":false,"id":"wwizardry:mycha_wall_sign"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_wall_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_wall_sign" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/walls.json b/common/src/generated/resources/data/minecraft/tags/block/walls.json index 9ccc8281..15871d5b 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/walls.json +++ b/common/src/generated/resources/data/minecraft/tags/block/walls.json @@ -1 +1,37 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:basalt_brick_wall"},{"required":false,"id":"wwizardry:basalt_tile_wall"},{"required":false,"id":"wwizardry:chiseled_basalt_wall"},{"required":false,"id":"wwizardry:cut_basalt_wall"},{"required":false,"id":"wwizardry:mossy_basalt_brick_wall"},{"required":false,"id":"wwizardry:mossy_basalt_tile_wall"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_wall"},{"required":false,"id":"wwizardry:mossy_cut_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:basalt_brick_wall" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_wall" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_wall" + }, + { + "required": false, + "id": "wwizardry:cut_basalt_wall" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_wall" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_wall" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_wall" + }, + { + "required": false, + "id": "wwizardry:mossy_cut_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/wart_blocks.json b/common/src/generated/resources/data/minecraft/tags/block/wart_blocks.json index 3367d981..5189bb1e 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/wart_blocks.json +++ b/common/src/generated/resources/data/minecraft/tags/block/wart_blocks.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mycha_wart"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mycha_wart" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/wooden_buttons.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_buttons.json index 6d46e92f..98f8b80b 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/wooden_buttons.json +++ b/common/src/generated/resources/data/minecraft/tags/block/wooden_buttons.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_button"},{"required":false,"id":"wwizardry:mycha_button"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_button" + }, + { + "required": false, + "id": "wwizardry:mycha_button" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/wooden_doors.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_doors.json index 6f3a96d3..bb08dbac 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/wooden_doors.json +++ b/common/src/generated/resources/data/minecraft/tags/block/wooden_doors.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_door"},{"required":false,"id":"wwizardry:mycha_door"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_door" + }, + { + "required": false, + "id": "wwizardry:mycha_door" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/wooden_pressure_plates.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_pressure_plates.json index 0324bdd1..e33e0138 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/wooden_pressure_plates.json +++ b/common/src/generated/resources/data/minecraft/tags/block/wooden_pressure_plates.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_pressure_plate"},{"required":false,"id":"wwizardry:mycha_pressure_plate"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_pressure_plate" + }, + { + "required": false, + "id": "wwizardry:mycha_pressure_plate" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/wooden_slabs.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_slabs.json index c23b9ad0..892cf247 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/wooden_slabs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/wooden_slabs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_slab"},{"required":false,"id":"wwizardry:mycha_slab"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_slab" + }, + { + "required": false, + "id": "wwizardry:mycha_slab" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/wooden_stairs.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_stairs.json index 0075e01a..d865c424 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/wooden_stairs.json +++ b/common/src/generated/resources/data/minecraft/tags/block/wooden_stairs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_stairs"},{"required":false,"id":"wwizardry:mycha_stairs"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_stairs" + }, + { + "required": false, + "id": "wwizardry:mycha_stairs" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/wooden_trapdoors.json b/common/src/generated/resources/data/minecraft/tags/block/wooden_trapdoors.json index 1babd712..12b681a0 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/wooden_trapdoors.json +++ b/common/src/generated/resources/data/minecraft/tags/block/wooden_trapdoors.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_trapdoor"},{"required":false,"id":"wwizardry:mycha_trapdoor"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_trapdoor" + }, + { + "required": false, + "id": "wwizardry:mycha_trapdoor" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/fence_gates.json b/common/src/generated/resources/data/minecraft/tags/item/fence_gates.json index 74d20409..1da4c876 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/fence_gates.json +++ b/common/src/generated/resources/data/minecraft/tags/item/fence_gates.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_fence_gate"},{"required":false,"id":"wwizardry:mycha_fence_gate"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_fence_gate" + }, + { + "required": false, + "id": "wwizardry:mycha_fence_gate" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/fences.json b/common/src/generated/resources/data/minecraft/tags/item/fences.json index f80bfcf6..f63ee665 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/fences.json +++ b/common/src/generated/resources/data/minecraft/tags/item/fences.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_fence"},{"required":false,"id":"wwizardry:mycha_fence"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_fence" + }, + { + "required": false, + "id": "wwizardry:mycha_fence" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/flowers.json b/common/src/generated/resources/data/minecraft/tags/item/flowers.json index 0c22f788..410639fb 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/flowers.json +++ b/common/src/generated/resources/data/minecraft/tags/item/flowers.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:sculkflower"},{"required":false,"id":"wwizardry:indigo_caeruleum"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:sculkflower" + }, + { + "required": false, + "id": "wwizardry:indigo_caeruleum" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/hanging_signs.json b/common/src/generated/resources/data/minecraft/tags/item/hanging_signs.json index 88d16e59..8a4500f3 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/hanging_signs.json +++ b/common/src/generated/resources/data/minecraft/tags/item/hanging_signs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_hanging_sign"},{"required":false,"id":"wwizardry:mycha_hanging_sign"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_hanging_sign" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/leaves.json b/common/src/generated/resources/data/minecraft/tags/item/leaves.json index 8eeb6f1a..530a950d 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/leaves.json +++ b/common/src/generated/resources/data/minecraft/tags/item/leaves.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_leaves"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_leaves" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/logs.json b/common/src/generated/resources/data/minecraft/tags/item/logs.json index 36070670..db829b3d 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/logs.json +++ b/common/src/generated/resources/data/minecraft/tags/item/logs.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:mycha_stems"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:mycha_stems" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/logs_that_burn.json b/common/src/generated/resources/data/minecraft/tags/item/logs_that_burn.json index 784b3dbb..29e71b3e 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/logs_that_burn.json +++ b/common/src/generated/resources/data/minecraft/tags/item/logs_that_burn.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:denia_logs"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:denia_logs" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/music_discs.json b/common/src/generated/resources/data/minecraft/tags/item/music_discs.json index 873bf2e2..d7c00625 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/music_discs.json +++ b/common/src/generated/resources/data/minecraft/tags/item/music_discs.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:music_disc_wandering"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:music_disc_wandering" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/non_flammable_wood.json b/common/src/generated/resources/data/minecraft/tags/item/non_flammable_wood.json index 5eb33f11..c16e88d4 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/non_flammable_wood.json +++ b/common/src/generated/resources/data/minecraft/tags/item/non_flammable_wood.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:wood/mycha"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:wood/mycha" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/planks.json b/common/src/generated/resources/data/minecraft/tags/item/planks.json index 92afc5df..7932090b 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/planks.json +++ b/common/src/generated/resources/data/minecraft/tags/item/planks.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_planks"},{"required":false,"id":"wwizardry:mycha_planks"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_planks" + }, + { + "required": false, + "id": "wwizardry:mycha_planks" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/signs.json b/common/src/generated/resources/data/minecraft/tags/item/signs.json index f2c5b51e..d072aa87 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/signs.json +++ b/common/src/generated/resources/data/minecraft/tags/item/signs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_sign"},{"required":false,"id":"wwizardry:mycha_sign"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_sign" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/slabs.json b/common/src/generated/resources/data/minecraft/tags/item/slabs.json index 19516434..cd2aa7f0 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/slabs.json +++ b/common/src/generated/resources/data/minecraft/tags/item/slabs.json @@ -1 +1,37 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_slab"},{"required":false,"id":"wwizardry:mycha_slab"},{"required":false,"id":"wwizardry:basalt_brick_slab"},{"required":false,"id":"wwizardry:basalt_tile_slab"},{"required":false,"id":"wwizardry:chiseled_basalt_slab"},{"required":false,"id":"wwizardry:mossy_basalt_brick_slab"},{"required":false,"id":"wwizardry:mossy_basalt_tile_slab"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_slab"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_slab" + }, + { + "required": false, + "id": "wwizardry:mycha_slab" + }, + { + "required": false, + "id": "wwizardry:basalt_brick_slab" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_slab" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_slab" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/small_flowers.json b/common/src/generated/resources/data/minecraft/tags/item/small_flowers.json index 0c22f788..410639fb 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/small_flowers.json +++ b/common/src/generated/resources/data/minecraft/tags/item/small_flowers.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:sculkflower"},{"required":false,"id":"wwizardry:indigo_caeruleum"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:sculkflower" + }, + { + "required": false, + "id": "wwizardry:indigo_caeruleum" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/stairs.json b/common/src/generated/resources/data/minecraft/tags/item/stairs.json index 72a172e8..7217d782 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/stairs.json +++ b/common/src/generated/resources/data/minecraft/tags/item/stairs.json @@ -1 +1,29 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:basalt_brick_stairs"},{"required":false,"id":"wwizardry:basalt_tile_stairs"},{"required":false,"id":"wwizardry:chiseled_basalt_stairs"},{"required":false,"id":"wwizardry:mossy_basalt_brick_stairs"},{"required":false,"id":"wwizardry:mossy_basalt_tile_stairs"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_stairs"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:basalt_brick_stairs" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_stairs" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_stairs" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/trim_materials.json b/common/src/generated/resources/data/minecraft/tags/item/trim_materials.json index 0da50d6f..771efdcc 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/trim_materials.json +++ b/common/src/generated/resources/data/minecraft/tags/item/trim_materials.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:rose_quartz"},{"required":false,"id":"wwizardry:crystalline_sculk"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:rose_quartz" + }, + { + "required": false, + "id": "wwizardry:crystalline_sculk" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/walls.json b/common/src/generated/resources/data/minecraft/tags/item/walls.json index 9ccc8281..15871d5b 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/walls.json +++ b/common/src/generated/resources/data/minecraft/tags/item/walls.json @@ -1 +1,37 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:basalt_brick_wall"},{"required":false,"id":"wwizardry:basalt_tile_wall"},{"required":false,"id":"wwizardry:chiseled_basalt_wall"},{"required":false,"id":"wwizardry:cut_basalt_wall"},{"required":false,"id":"wwizardry:mossy_basalt_brick_wall"},{"required":false,"id":"wwizardry:mossy_basalt_tile_wall"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_wall"},{"required":false,"id":"wwizardry:mossy_cut_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:basalt_brick_wall" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_wall" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_wall" + }, + { + "required": false, + "id": "wwizardry:cut_basalt_wall" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_wall" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_wall" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_wall" + }, + { + "required": false, + "id": "wwizardry:mossy_cut_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/wart_blocks.json b/common/src/generated/resources/data/minecraft/tags/item/wart_blocks.json index 3367d981..5189bb1e 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/wart_blocks.json +++ b/common/src/generated/resources/data/minecraft/tags/item/wart_blocks.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mycha_wart"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mycha_wart" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/wooden_buttons.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_buttons.json index 6d46e92f..98f8b80b 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/wooden_buttons.json +++ b/common/src/generated/resources/data/minecraft/tags/item/wooden_buttons.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_button"},{"required":false,"id":"wwizardry:mycha_button"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_button" + }, + { + "required": false, + "id": "wwizardry:mycha_button" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/wooden_doors.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_doors.json index 6f3a96d3..bb08dbac 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/wooden_doors.json +++ b/common/src/generated/resources/data/minecraft/tags/item/wooden_doors.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_door"},{"required":false,"id":"wwizardry:mycha_door"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_door" + }, + { + "required": false, + "id": "wwizardry:mycha_door" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/wooden_pressure_plates.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_pressure_plates.json index 0324bdd1..e33e0138 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/wooden_pressure_plates.json +++ b/common/src/generated/resources/data/minecraft/tags/item/wooden_pressure_plates.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_pressure_plate"},{"required":false,"id":"wwizardry:mycha_pressure_plate"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_pressure_plate" + }, + { + "required": false, + "id": "wwizardry:mycha_pressure_plate" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/wooden_slabs.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_slabs.json index c23b9ad0..892cf247 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/wooden_slabs.json +++ b/common/src/generated/resources/data/minecraft/tags/item/wooden_slabs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_slab"},{"required":false,"id":"wwizardry:mycha_slab"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_slab" + }, + { + "required": false, + "id": "wwizardry:mycha_slab" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/wooden_stairs.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_stairs.json index 0075e01a..d865c424 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/wooden_stairs.json +++ b/common/src/generated/resources/data/minecraft/tags/item/wooden_stairs.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_stairs"},{"required":false,"id":"wwizardry:mycha_stairs"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_stairs" + }, + { + "required": false, + "id": "wwizardry:mycha_stairs" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/item/wooden_trapdoors.json b/common/src/generated/resources/data/minecraft/tags/item/wooden_trapdoors.json index 1babd712..12b681a0 100644 --- a/common/src/generated/resources/data/minecraft/tags/item/wooden_trapdoors.json +++ b/common/src/generated/resources/data/minecraft/tags/item/wooden_trapdoors.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_trapdoor"},{"required":false,"id":"wwizardry:mycha_trapdoor"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_trapdoor" + }, + { + "required": false, + "id": "wwizardry:mycha_trapdoor" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/painting_variant/placeable.json b/common/src/generated/resources/data/minecraft/tags/painting_variant/placeable.json index afea7014..9f37ff21 100644 --- a/common/src/generated/resources/data/minecraft/tags/painting_variant/placeable.json +++ b/common/src/generated/resources/data/minecraft/tags/painting_variant/placeable.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:altar"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:altar" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/ancient_city.json b/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/ancient_city.json index f7371049..c279d90a 100644 --- a/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/ancient_city.json +++ b/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/ancient_city.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:forgotten_fields"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:forgotten_fields" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/buried_treasure.json b/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/buried_treasure.json index f7371049..c279d90a 100644 --- a/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/buried_treasure.json +++ b/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/buried_treasure.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:forgotten_fields"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:forgotten_fields" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/pillager_outpost.json b/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/pillager_outpost.json index f7371049..c279d90a 100644 --- a/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/pillager_outpost.json +++ b/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/pillager_outpost.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:forgotten_fields"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:forgotten_fields" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/village_plains.json b/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/village_plains.json index f7371049..c279d90a 100644 --- a/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/village_plains.json +++ b/common/src/generated/resources/data/minecraft/tags/worldgen/biome/has_structure/village_plains.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:forgotten_fields"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:forgotten_fields" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_catalyzer.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_catalyzer.json index 70dea35c..343fb84f 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_catalyzer.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_catalyzer.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:altar_catalyzer"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:altar_catalyzer" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_pedestal.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_pedestal.json index 97fb5a24..97495a90 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_pedestal.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/altar_pedestal.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:altar_pedestal"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:altar_pedestal" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_slab.json index 00f31138..26031e2f 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:basalt_brick_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:basalt_brick_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/basalt_brick_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:basalt_brick_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:basalt_brick_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/basalt_brick_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_stairs.json index 84429d5b..012a77b5 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:basalt_brick_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:basalt_brick_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_wall.json index 6485d2cc..147ee531 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_wall.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_brick_wall.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:basalt_brick_wall"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:basalt_brick_wall" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_bricks.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_bricks.json index ecdf141b..cab7cfb7 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_bricks.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_bricks.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:basalt_bricks"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:basalt_bricks" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_slab.json index 17e92f5a..ab71a77d 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:basalt_tile_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:basalt_tile_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/basalt_tile_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:basalt_tile_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:basalt_tile_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/basalt_tile_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_stairs.json index b8817438..16fcf3ca 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:basalt_tile_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:basalt_tile_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_wall.json index c1579b93..f2bcaa18 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_wall.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tile_wall.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:basalt_tile_wall"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:basalt_tile_wall" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tiles.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tiles.json index af3474c2..63aa9739 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tiles.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/basalt_tiles.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:basalt_tiles"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:basalt_tiles" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/camera.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/camera.json index 5ac8f5a5..9d4abc96 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/camera.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/camera.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:camera"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:camera" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt.json index d682c985..07d05e12 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:chiseled_basalt"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:chiseled_basalt" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_slab.json index 68d0b9c2..ba4b4a74 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:chiseled_basalt_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:chiseled_basalt_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/chiseled_basalt_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:chiseled_basalt_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:chiseled_basalt_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/chiseled_basalt_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_stairs.json index 6bbd8e73..d5ad1594 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:chiseled_basalt_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:chiseled_basalt_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_wall.json index 471df8f1..f5b173bf 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_wall.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/chiseled_basalt_wall.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:chiseled_basalt_wall"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:chiseled_basalt_wall" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/crystalline_sculk_block.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/crystalline_sculk_block.json index e388a4e5..71fd5999 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/crystalline_sculk_block.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/crystalline_sculk_block.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:crystalline_sculk_block"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:crystalline_sculk_block" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt.json index 54860b22..18d26f98 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:cut_basalt"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:cut_basalt" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_slab.json index 6430ad21..04bf9151 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:cut_basalt_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:cut_basalt_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/cut_basalt_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:cut_basalt_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:cut_basalt_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/cut_basalt_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_stairs.json index 33b5725d..60d28f07 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:cut_basalt_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:cut_basalt_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_wall.json index c97e4f8b..3efa00d7 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_wall.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/cut_basalt_wall.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:cut_basalt_wall"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:cut_basalt_wall" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/deepslate_rose_quartz_ore.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/deepslate_rose_quartz_ore.json index a9aaf10f..397356fa 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/deepslate_rose_quartz_ore.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/deepslate_rose_quartz_ore.json @@ -1 +1,50 @@ -{"type":"block","random_sequence":"wwizardry:blocks/deepslate_rose_quartz_ore","pools":[{"rolls":1,"bonus_rolls":0,"entries":[{"type":"alternatives","children":[{"type":"item","name":"wwizardry:deepslate_rose_quartz_ore","conditions":[{"condition":"match_tool","predicate":{"enchantments":[{"enchantment":"silk_touch","levels":{"min":1}}]}}]},{"type":"item","name":"wwizardry:rose_quartz","functions":[{"function":"apply_bonus","formula":"ore_drops","enchantment":"fortune"},{"function":"explosion_decay"}]}]}]}]} \ No newline at end of file +{ + "type": "block", + "random_sequence": "wwizardry:blocks/deepslate_rose_quartz_ore", + "pools": [ + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "alternatives", + "children": [ + { + "type": "item", + "name": "wwizardry:deepslate_rose_quartz_ore", + "conditions": [ + { + "condition": "match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + }, + { + "type": "item", + "name": "wwizardry:rose_quartz", + "functions": [ + { + "function": "apply_bonus", + "formula": "ore_drops", + "enchantment": "fortune" + }, + { + "function": "explosion_decay" + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_button.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_button.json index 6b9f2fe6..2ee44da1 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_button.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_button.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_button"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_button" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_door.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_door.json index 5adb374a..89ab9cf2 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_door.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_door.json @@ -1 +1,28 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_door","conditions":[{"block":"wwizardry:denia_door","condition":"block_state_property","properties":{"half":"lower"}}]}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_door", + "conditions": [ + { + "block": "wwizardry:denia_door", + "condition": "block_state_property", + "properties": { + "half": "lower" + } + } + ] + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence.json index cb944870..6d74ede1 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_fence"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_fence" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence_gate.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence_gate.json index 6defdc12..e432f175 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence_gate.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_fence_gate.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_fence_gate"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_fence_gate" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_hanging_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_hanging_sign.json index 4a7806ac..ec7213fa 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_hanging_sign.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_hanging_sign.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_hanging_sign"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_hanging_sign" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_leaves.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_leaves.json index 481e8097..b8487837 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_leaves.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_leaves.json @@ -1 +1,139 @@ -{"type":"block","random_sequence":"wwizardry:blocks/denia_leaves","pools":[{"rolls":1,"bonus_rolls":0,"entries":[{"type":"alternatives","children":[{"type":"item","name":"wwizardry:denia_leaves","conditions":[{"condition":"any_of","terms":[{"condition":"match_tool","predicate":{"items":["shears"]}},{"condition":"match_tool","predicate":{"enchantments":[{"enchantment":"silk_touch","levels":{"min":1}}]}}]}]},{"type":"item","name":"wwizardry:denia_sapling","conditions":[{"condition":"survives_explosion"},{"condition":"table_bonus","chances":[0.05,0.0625,0.083333336,0.1],"enchantment":"fortune"}]}]}]},{"rolls":1,"bonus_rolls":0,"entries":[{"type":"item","name":"stick","conditions":[{"condition":"survives_explosion"},{"condition":"table_bonus","chances":[0.02,0.022222223,0.025,0.033333335,0.1],"enchantment":"fortune"}],"functions":[{"function":"set_count","add":false,"count":{"type":"uniform","max":2,"min":1}},{"function":"explosion_decay"}]}],"conditions":[{"condition":"inverted","term":{"condition":"any_of","terms":[{"condition":"match_tool","predicate":{"items":["shears"]}},{"condition":"match_tool","predicate":{"enchantments":[{"enchantment":"silk_touch","levels":{"min":1}}]}}]}}]}]} \ No newline at end of file +{ + "type": "block", + "random_sequence": "wwizardry:blocks/denia_leaves", + "pools": [ + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "alternatives", + "children": [ + { + "type": "item", + "name": "wwizardry:denia_leaves", + "conditions": [ + { + "condition": "any_of", + "terms": [ + { + "condition": "match_tool", + "predicate": { + "items": [ + "shears" + ] + } + }, + { + "condition": "match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ] + }, + { + "type": "item", + "name": "wwizardry:denia_sapling", + "conditions": [ + { + "condition": "survives_explosion" + }, + { + "condition": "table_bonus", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ], + "enchantment": "fortune" + } + ] + } + ] + } + ] + }, + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "name": "stick", + "conditions": [ + { + "condition": "survives_explosion" + }, + { + "condition": "table_bonus", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ], + "enchantment": "fortune" + } + ], + "functions": [ + { + "function": "set_count", + "add": false, + "count": { + "type": "uniform", + "max": 2, + "min": 1 + } + }, + { + "function": "explosion_decay" + } + ] + } + ], + "conditions": [ + { + "condition": "inverted", + "term": { + "condition": "any_of", + "terms": [ + { + "condition": "match_tool", + "predicate": { + "items": [ + "shears" + ] + } + }, + { + "condition": "match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_log.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_log.json index 668599bd..5281b966 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_log.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_log.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_log"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_log" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_planks.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_planks.json index b683cb6a..cfba538f 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_planks.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_planks.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_planks"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_planks" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_pressure_plate.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_pressure_plate.json index 19f76e2c..e4cdf624 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_pressure_plate.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_pressure_plate.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_pressure_plate"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_pressure_plate" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sapling.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sapling.json index 9f6e7481..a6f1a1ee 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sapling.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sapling.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_sapling"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_sapling" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sign.json index 3d67b69d..1490ceed 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sign.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_sign.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_sign"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_sign" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_slab.json index 09ae39ff..f3db382a 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:denia_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:denia_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/denia_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:denia_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:denia_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/denia_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_stairs.json index fe5b64de..b1d4226b 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_trapdoor.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_trapdoor.json index 886e0a35..74d4e779 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_trapdoor.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_trapdoor.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_trapdoor"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_trapdoor" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_hanging_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_hanging_sign.json index 4a7806ac..ec7213fa 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_hanging_sign.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_hanging_sign.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_hanging_sign"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_hanging_sign" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_sign.json index 3d67b69d..1490ceed 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_sign.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wall_sign.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_sign"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_sign" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wood.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wood.json index 5f0b1283..a7545814 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wood.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/denia_wood.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:denia_wood"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:denia_wood" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/indigo_caeruleum.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/indigo_caeruleum.json index b5d1fac7..c91b4014 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/indigo_caeruleum.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/indigo_caeruleum.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:indigo_caeruleum"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:indigo_caeruleum" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_slab.json index d2bcdbbf..5d62fdc2 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:mossy_basalt_brick_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:mossy_basalt_brick_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/mossy_basalt_brick_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:mossy_basalt_brick_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:mossy_basalt_brick_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/mossy_basalt_brick_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_stairs.json index 3dc6538c..f45dd8fb 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_basalt_brick_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_basalt_brick_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_wall.json index dcbf9c29..d467a91d 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_wall.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_brick_wall.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_basalt_brick_wall"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_basalt_brick_wall" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_bricks.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_bricks.json index 0b6ba8f4..40ca37d8 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_bricks.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_bricks.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_basalt_bricks"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_basalt_bricks" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_slab.json index 13de66d4..0de0c18f 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:mossy_basalt_tile_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:mossy_basalt_tile_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/mossy_basalt_tile_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:mossy_basalt_tile_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:mossy_basalt_tile_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/mossy_basalt_tile_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_stairs.json index f10d766e..69ff34c3 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_basalt_tile_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_basalt_tile_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_wall.json index 9ae36284..c1a98f69 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_wall.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tile_wall.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_basalt_tile_wall"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_basalt_tile_wall" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tiles.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tiles.json index 5cbfc0b2..4c5e1c53 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tiles.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_basalt_tiles.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_basalt_tiles"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_basalt_tiles" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt.json index c3b68a3a..c726ea49 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_chiseled_basalt"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_chiseled_basalt" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_slab.json index c054410d..695dbe68 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:mossy_chiseled_basalt_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:mossy_chiseled_basalt_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/mossy_chiseled_basalt_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:mossy_chiseled_basalt_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:mossy_chiseled_basalt_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/mossy_chiseled_basalt_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_stairs.json index eff0a044..d131c47f 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_chiseled_basalt_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_chiseled_basalt_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_wall.json index ffa8d022..0cba0a1e 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_wall.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_chiseled_basalt_wall.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_chiseled_basalt_wall"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_chiseled_basalt_wall" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt.json index 4ebfe05e..66e3f6a7 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_cut_basalt"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_cut_basalt" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_slab.json index a2394136..c75222db 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:mossy_cut_basalt_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:mossy_cut_basalt_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/mossy_cut_basalt_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:mossy_cut_basalt_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:mossy_cut_basalt_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/mossy_cut_basalt_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_stairs.json index 9a2eaa48..9c651f3e 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_cut_basalt_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_cut_basalt_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_wall.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_wall.json index 68b0e39c..ab58ab24 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_wall.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mossy_cut_basalt_wall.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mossy_cut_basalt_wall"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mossy_cut_basalt_wall" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_button.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_button.json index 35a1371a..9029f875 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_button.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_button.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_button"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_button" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_door.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_door.json index ef1d3861..6d5d5c03 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_door.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_door.json @@ -1 +1,28 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_door","conditions":[{"block":"wwizardry:mycha_door","condition":"block_state_property","properties":{"half":"lower"}}]}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_door", + "conditions": [ + { + "block": "wwizardry:mycha_door", + "condition": "block_state_property", + "properties": { + "half": "lower" + } + } + ] + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence.json index a7c3b71e..b7c5516c 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_fence"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_fence" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence_gate.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence_gate.json index e92a821e..ddfb4f89 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence_gate.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fence_gate.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_fence_gate"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_fence_gate" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fungus.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fungus.json index abe09953..7f92ce64 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fungus.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_fungus.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_fungus"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_fungus" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hanging_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hanging_sign.json index abc886fb..d9f03def 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hanging_sign.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hanging_sign.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_hanging_sign"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_hanging_sign" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hyphae.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hyphae.json index 0b7f5961..7cfee6e0 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hyphae.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_hyphae.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_hyphae"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_hyphae" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_planks.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_planks.json index d3fa44c4..fa6f42c7 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_planks.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_planks.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_planks"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_planks" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_pressure_plate.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_pressure_plate.json index b59b6e56..6d85e0ad 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_pressure_plate.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_pressure_plate.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_pressure_plate"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_pressure_plate" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_sign.json index 6e860330..899ece6c 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_sign.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_sign.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_sign"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_sign" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_slab.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_slab.json index 6fd34cff..06129379 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_slab.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_slab.json @@ -1 +1,35 @@ -{"type":"block","pools":[{"bonus_rolls":0,"entries":[{"type":"item","functions":[{"add":false,"conditions":[{"block":"wwizardry:mycha_slab","condition":"block_state_property","properties":{"type":"double"}}],"count":2,"function":"set_count"},{"function":"explosion_decay"}],"name":"wwizardry:mycha_slab"}],"rolls":1}],"random_sequence":"wwizardry:blocks/mycha_slab"} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "bonus_rolls": 0, + "entries": [ + { + "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wwizardry:mycha_slab", + "condition": "block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], + "name": "wwizardry:mycha_slab" + } + ], + "rolls": 1 + } + ], + "random_sequence": "wwizardry:blocks/mycha_slab" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stairs.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stairs.json index 2aefe7a3..99c4c12b 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stairs.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stairs.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_stairs"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_stairs" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stem.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stem.json index 0e8298ac..961ad32b 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stem.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_stem.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_stem"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_stem" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_trapdoor.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_trapdoor.json index fff926c3..30339423 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_trapdoor.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_trapdoor.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_trapdoor"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_trapdoor" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_hanging_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_hanging_sign.json index abc886fb..d9f03def 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_hanging_sign.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_hanging_sign.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_hanging_sign"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_hanging_sign" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_sign.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_sign.json index 6e860330..899ece6c 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_sign.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wall_sign.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_sign"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_sign" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wart.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wart.json index cd470556..3a4de311 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wart.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/mycha_wart.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:mycha_wart"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:mycha_wart" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/redstone_lantern.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/redstone_lantern.json index 323dc545..6355c03e 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/redstone_lantern.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/redstone_lantern.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:redstone_lantern"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:redstone_lantern" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass.json index f06ff3c0..2d32cd3c 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:reinforced_glass"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:reinforced_glass" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass_pane.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass_pane.json index 695a09be..0510280d 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass_pane.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/reinforced_glass_pane.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:reinforced_glass_pane"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:reinforced_glass_pane" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_block.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_block.json index 4f6d79a1..7cdf983e 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_block.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_block.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:rose_quartz_block"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:rose_quartz_block" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_ore.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_ore.json index 36b90f2c..b2a1c2db 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_ore.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_ore.json @@ -1 +1,50 @@ -{"type":"block","random_sequence":"wwizardry:blocks/rose_quartz_ore","pools":[{"rolls":1,"bonus_rolls":0,"entries":[{"type":"alternatives","children":[{"type":"item","name":"wwizardry:rose_quartz_ore","conditions":[{"condition":"match_tool","predicate":{"enchantments":[{"enchantment":"silk_touch","levels":{"min":1}}]}}]},{"type":"item","name":"wwizardry:rose_quartz","functions":[{"function":"apply_bonus","formula":"ore_drops","enchantment":"fortune"},{"function":"explosion_decay"}]}]}]}]} \ No newline at end of file +{ + "type": "block", + "random_sequence": "wwizardry:blocks/rose_quartz_ore", + "pools": [ + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "alternatives", + "children": [ + { + "type": "item", + "name": "wwizardry:rose_quartz_ore", + "conditions": [ + { + "condition": "match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + }, + { + "type": "item", + "name": "wwizardry:rose_quartz", + "functions": [ + { + "function": "apply_bonus", + "formula": "ore_drops", + "enchantment": "fortune" + }, + { + "function": "explosion_decay" + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculkflower.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculkflower.json index 979c40c8..6bf85360 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculkflower.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculkflower.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:sculkflower"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:sculkflower" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_log.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_log.json index 5ddaaa26..15cc1545 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_log.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_log.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:stripped_denia_log"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:stripped_denia_log" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_wood.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_wood.json index bd0fbb0f..a4daa65f 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_wood.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_denia_wood.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:stripped_denia_wood"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:stripped_denia_wood" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_hyphae.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_hyphae.json index b41a99c0..f6844354 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_hyphae.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_hyphae.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:stripped_mycha_hyphae"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:stripped_mycha_hyphae" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_stem.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_stem.json index a8d95e0f..32037875 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_stem.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/stripped_mycha_stem.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:stripped_mycha_stem"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:stripped_mycha_stem" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/wall_holder.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/wall_holder.json index 26e50150..7b0e6fb0 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/wall_holder.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/wall_holder.json @@ -1 +1,19 @@ -{"type":"block","pools":[{"rolls":1,"entries":[{"type":"item","name":"wwizardry:wall_holder"}],"conditions":[{"condition":"survives_explosion"}]}]} \ No newline at end of file +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:wall_holder" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/altar_catalyzer.json b/common/src/generated/resources/data/wwizardry/recipe/altar_catalyzer.json index 52c0cb2c..0635ea1c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/altar_catalyzer.json +++ b/common/src/generated/resources/data/wwizardry/recipe/altar_catalyzer.json @@ -1 +1,22 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"polished_basalt"},"M":{"item":"sculk_catalyst"}},"pattern":["#","M","#"],"result":{"count":1,"id":"wwizardry:altar_catalyzer"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "polished_basalt" + }, + "M": { + "item": "sculk_catalyst" + } + }, + "pattern": [ + "#", + "M", + "#" + ], + "result": { + "count": 1, + "id": "wwizardry:altar_catalyzer" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/altar_pedestal.json b/common/src/generated/resources/data/wwizardry/recipe/altar_pedestal.json index 8fba95cf..98772b95 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/altar_pedestal.json +++ b/common/src/generated/resources/data/wwizardry/recipe/altar_pedestal.json @@ -1 +1,22 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"polished_basalt"},"M":{"item":"crying_obsidian"}},"pattern":["#","M","#"],"result":{"count":1,"id":"wwizardry:altar_pedestal"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "polished_basalt" + }, + "M": { + "item": "crying_obsidian" + } + }, + "pattern": [ + "#", + "M", + "#" + ], + "result": { + "count": 1, + "id": "wwizardry:altar_pedestal" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_crafted/block.json index 21c60805..86ec0d4d 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_crafted/block.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["##","##"],"result":{"id":"wwizardry:basalt_bricks","count":4}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:cut_basalt" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "id": "wwizardry:basalt_bricks", + "count": 4 + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/block.json index af85b6b6..6506aa34 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/block.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_bricks"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:basalt_bricks" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/slab.json index 292ead6f..ce61569c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_brick_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:basalt_brick_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/stairs.json index 11a0533b..bdae95eb 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_brick_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:basalt_brick_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/wall.json index b8cdad8c..dfaa9b21 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/basalt_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_brick_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:basalt_brick_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/slab.json index a8eadf81..51055313 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/slab.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:basalt_brick_slab"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:basalt_bricks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:basalt_brick_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/stiars.json index 21368260..7abd4166 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/stiars.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:basalt_brick_stairs"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:basalt_bricks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:basalt_brick_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/wall.json index 3ad655d6..aa60e3e1 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_crafted/wall.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:basalt_brick_wall"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:basalt_bricks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:basalt_brick_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/slab.json index 80b4be91..af6a8d90 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_brick_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:basalt_bricks" + }, + "result": { + "id": "wwizardry:basalt_brick_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/stairs.json index 62fadf48..0f0273a4 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_brick_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:basalt_bricks" + }, + "result": { + "id": "wwizardry:basalt_brick_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/wall.json index 8018dcf5..64d6177c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_bricks/self_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_brick_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:basalt_bricks" + }, + "result": { + "id": "wwizardry:basalt_brick_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/block.json index 9c294aa9..9873d74f 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/block.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_tiles"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:basalt_tiles" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/slab.json index 0dd15248..edccc465 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_tile_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:basalt_tile_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/stairs.json index 54b34653..a5f594f7 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_tile_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:basalt_tile_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/wall.json index 3c863aaa..4f4019b2 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/basalt_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:basalt_tile_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:basalt_tile_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_crafted/block.json index c851644b..bb61370d 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_crafted/block.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_bricks"}},"pattern":["##","##"],"result":{"id":"wwizardry:basalt_tiles","count":4}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:basalt_bricks" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "id": "wwizardry:basalt_tiles", + "count": 4 + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/block.json index 93e67386..14bad1b2 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/block.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_tiles"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:basalt_bricks" + }, + "result": { + "id": "wwizardry:basalt_tiles" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/slab.json index 45677120..5e4c3c66 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_tile_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:basalt_bricks" + }, + "result": { + "id": "wwizardry:basalt_tile_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/stairs.json index 16b420f6..55e81165 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_tile_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:basalt_bricks" + }, + "result": { + "id": "wwizardry:basalt_tile_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/wall.json index 83fb66a1..92807ebb 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/brick_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_bricks"},"result":{"id":"wwizardry:basalt_tile_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:basalt_bricks" + }, + "result": { + "id": "wwizardry:basalt_tile_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/slab.json index af13169e..0244740c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/slab.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_tiles"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:basalt_tile_slab"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:basalt_tiles" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:basalt_tile_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/stiars.json index 73167fe9..0aae1c95 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/stiars.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_tiles"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:basalt_tile_stairs"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:basalt_tiles" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:basalt_tile_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/wall.json index 91fa2a39..233057bf 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_crafted/wall.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:basalt_tiles"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:basalt_tile_wall"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:basalt_tiles" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:basalt_tile_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/slab.json index 3bfc990c..300588cf 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:basalt_tiles"},"result":{"id":"wwizardry:basalt_tile_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:basalt_tiles" + }, + "result": { + "id": "wwizardry:basalt_tile_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/stairs.json index 638312cb..72f04e4a 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_tiles"},"result":{"id":"wwizardry:basalt_tile_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:basalt_tiles" + }, + "result": { + "id": "wwizardry:basalt_tile_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/wall.json index acd4e5ad..919d70b3 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/basalt_tiles/self_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:basalt_tiles"},"result":{"id":"wwizardry:basalt_tile_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:basalt_tiles" + }, + "result": { + "id": "wwizardry:basalt_tile_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/brewing_charm.json b/common/src/generated/resources/data/wwizardry/recipe/brewing_charm.json index 8dee9dd3..458a6e27 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/brewing_charm.json +++ b/common/src/generated/resources/data/wwizardry/recipe/brewing_charm.json @@ -1 +1,25 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":5,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"blaze_powder"},{"item":"blaze_powder"}],"catalyst":{"item":"brewing_stand"},"result":{"id":"wwizardry:brewing_charm"}} \ No newline at end of file +{ + "type": "wwizardry:altar_catalyzation", + "keepCatalyst": false, + "bloom": 5, + "inputs": [ + { + "item": "wwizardry:crystalline_sculk" + }, + { + "item": "gold_ingot" + }, + { + "item": "blaze_powder" + }, + { + "item": "blaze_powder" + } + ], + "catalyst": { + "item": "brewing_stand" + }, + "result": { + "id": "wwizardry:brewing_charm" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/block.json index a1580200..2a67900e 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/block.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:chiseled_basalt"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:chiseled_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/slab.json index 562a8f1d..4293a6dc 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:chiseled_basalt_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:chiseled_basalt_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/stairs.json index 4f56fc96..41608ab3 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:chiseled_basalt_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:chiseled_basalt_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/wall.json index a63fb396..445c73c8 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/basalt_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:chiseled_basalt_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:chiseled_basalt_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/brick_crafted/block.json index a0041877..bea075e6 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/brick_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/brick_crafted/block.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt_slab"}},"pattern":["#","#"],"result":{"id":"wwizardry:chiseled_basalt","count":1}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:cut_basalt_slab" + } + }, + "pattern": [ + "#", + "#" + ], + "result": { + "id": "wwizardry:chiseled_basalt", + "count": 1 + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/slab.json index e5bef202..f5ee8b0e 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/slab.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:chiseled_basalt"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:chiseled_basalt_slab"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:chiseled_basalt" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:chiseled_basalt_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/stiars.json index 4932d92e..3a77b5fd 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/stiars.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:chiseled_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:chiseled_basalt_stairs"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:chiseled_basalt" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:chiseled_basalt_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/wall.json index 40831ccf..3f924fba 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_crafted/wall.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:chiseled_basalt"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:chiseled_basalt_wall"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:chiseled_basalt" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:chiseled_basalt_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/slab.json index 64e6e67a..88a0146d 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:chiseled_basalt"},"result":{"id":"wwizardry:chiseled_basalt_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:chiseled_basalt" + }, + "result": { + "id": "wwizardry:chiseled_basalt_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/stairs.json index df2fa286..df6b1478 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:chiseled_basalt"},"result":{"id":"wwizardry:chiseled_basalt_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:chiseled_basalt" + }, + "result": { + "id": "wwizardry:chiseled_basalt_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/wall.json index 6466f5e3..69b16d1e 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/chiseled_basalt/self_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:chiseled_basalt"},"result":{"id":"wwizardry:chiseled_basalt_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:chiseled_basalt" + }, + "result": { + "id": "wwizardry:chiseled_basalt_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/crafting_charm.json b/common/src/generated/resources/data/wwizardry/recipe/crafting_charm.json index 10cb6af7..f07c5d53 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/crafting_charm.json +++ b/common/src/generated/resources/data/wwizardry/recipe/crafting_charm.json @@ -1 +1,25 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":5,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"blaze_powder"},{"item":"blaze_powder"}],"catalyst":{"item":"crafting_table"},"result":{"id":"wwizardry:crafting_charm"}} \ No newline at end of file +{ + "type": "wwizardry:altar_catalyzation", + "keepCatalyst": false, + "bloom": 5, + "inputs": [ + { + "item": "wwizardry:crystalline_sculk" + }, + { + "item": "gold_ingot" + }, + { + "item": "blaze_powder" + }, + { + "item": "blaze_powder" + } + ], + "catalyst": { + "item": "crafting_table" + }, + "result": { + "id": "wwizardry:crafting_charm" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed.json b/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed.json index be1a0dbb..36e07baa 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed.json +++ b/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed.json @@ -1 +1,36 @@ -{"type":"create:crushing","processingTime":150,"ingrediends":[{"item":"wwizardry:rose_quartz_ore"}],"results":[{"item":"create:polished_rose_quartz"},{"item":"create:polished_rose_quartz","chance":0.25},{"item":"create:polished_rose_quartz","chance":0.125}],"fabric:load_conditions":[{"condition":"fabric:all_mods_loaded","values":["create"]}],"neoforge:conditions":[{"type":"neoforge:mod_loaded","modid":"create"}]} \ No newline at end of file +{ + "type": "create:crushing", + "processingTime": 150, + "ingrediends": [ + { + "item": "wwizardry:rose_quartz_ore" + } + ], + "results": [ + { + "item": "create:polished_rose_quartz" + }, + { + "item": "create:polished_rose_quartz", + "chance": 0.25 + }, + { + "item": "create:polished_rose_quartz", + "chance": 0.125 + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "create" + ] + } + ], + "neoforge:conditions": [ + { + "type": "neoforge:mod_loaded", + "modid": "create" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed_deepslate.json b/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed_deepslate.json index fdaf2cbd..dc239600 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed_deepslate.json +++ b/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_crushed_deepslate.json @@ -1 +1,36 @@ -{"type":"create:crushing","processingTime":150,"ingrediends":[{"item":"wwizardry:deepslate_rose_quartz_ore"}],"results":[{"item":"create:polished_rose_quartz"},{"item":"create:polished_rose_quartz","chance":0.25},{"item":"create:polished_rose_quartz","chance":0.125}],"fabric:load_conditions":[{"condition":"fabric:all_mods_loaded","values":["create"]}],"neoforge:conditions":[{"type":"neoforge:mod_loaded","modid":"create"}]} \ No newline at end of file +{ + "type": "create:crushing", + "processingTime": 150, + "ingrediends": [ + { + "item": "wwizardry:deepslate_rose_quartz_ore" + } + ], + "results": [ + { + "item": "create:polished_rose_quartz" + }, + { + "item": "create:polished_rose_quartz", + "chance": 0.25 + }, + { + "item": "create:polished_rose_quartz", + "chance": 0.125 + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "create" + ] + } + ], + "neoforge:conditions": [ + { + "type": "neoforge:mod_loaded", + "modid": "create" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_polished.json b/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_polished.json index dc2416c4..9d3c64c0 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_polished.json +++ b/common/src/generated/resources/data/wwizardry/recipe/create/rose_quartz_polished.json @@ -1 +1,27 @@ -{"type":"create:sandpaper_polishing","ingrediends":[{"item":"wwizardry:rose_quartz"}],"results":[{"item":"create:polished_rose_quartz"}],"fabric:load_conditions":[{"condition":"fabric:all_mods_loaded","values":["create"]}],"neoforge:conditions":[{"type":"neoforge:mod_loaded","modid":"create"}]} \ No newline at end of file +{ + "type": "create:sandpaper_polishing", + "ingrediends": [ + { + "item": "wwizardry:rose_quartz" + } + ], + "results": [ + { + "item": "create:polished_rose_quartz" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "create" + ] + } + ], + "neoforge:conditions": [ + { + "type": "neoforge:mod_loaded", + "modid": "create" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk.json b/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk.json index 35570eb3..a840a72f 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk.json +++ b/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk.json @@ -1 +1,26 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":10,"inputs":[{"item":"sculk"},{"item":"redstone"},{"item":"crying_obsidian"},{"item":"lapis_lazuli"}],"catalyst":{"item":"amethyst_shard"},"result":{"count":16,"id":"wwizardry:crystalline_sculk"}} \ No newline at end of file +{ + "type": "wwizardry:altar_catalyzation", + "keepCatalyst": false, + "bloom": 10, + "inputs": [ + { + "item": "sculk" + }, + { + "item": "redstone" + }, + { + "item": "crying_obsidian" + }, + { + "item": "lapis_lazuli" + } + ], + "catalyst": { + "item": "amethyst_shard" + }, + "result": { + "count": 16, + "id": "wwizardry:crystalline_sculk" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_block.json b/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_block.json index fb6f731d..965de181 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_block.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"S":{"item":"wwizardry:crystalline_sculk"}},"pattern":["SSS","SSS","SSS"],"result":{"count":1,"id":"wwizardry:crystalline_sculk_block"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "S": { + "item": "wwizardry:crystalline_sculk" + } + }, + "pattern": [ + "SSS", + "SSS", + "SSS" + ], + "result": { + "count": 1, + "id": "wwizardry:crystalline_sculk_block" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_from_block.json b/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_from_block.json index ec9f2a60..d41f5d2e 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_from_block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/crystalline_sculk_from_block.json @@ -1 +1,13 @@ -{"type":"crafting_shapeless","category":"misc","ingredients":[{"item":"wwizardry:crystalline_sculk_block"}],"result":{"count":9,"id":"wwizardry:crystalline_sculk"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "wwizardry:crystalline_sculk_block" + } + ], + "result": { + "count": 9, + "id": "wwizardry:crystalline_sculk" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_crafted/block.json index deb3e9c2..769e5cd8 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_crafted/block.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"smooth_basalt"}},"pattern":["##","##"],"result":{"id":"wwizardry:cut_basalt","count":4}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "smooth_basalt" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "id": "wwizardry:cut_basalt", + "count": 4 + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/block.json index 39a7a321..afaaa956 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/block.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"smooth_basalt"},"result":{"id":"wwizardry:cut_basalt"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "smooth_basalt" + }, + "result": { + "id": "wwizardry:cut_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/slab.json index 59676a9b..2fd85690 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"smooth_basalt"},"result":{"id":"wwizardry:cut_basalt_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "smooth_basalt" + }, + "result": { + "id": "wwizardry:cut_basalt_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/stairs.json index e9b80291..473abb3a 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"smooth_basalt"},"result":{"id":"wwizardry:cut_basalt_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "smooth_basalt" + }, + "result": { + "id": "wwizardry:cut_basalt_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/wall.json index a171c4c5..396f715c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/basalt_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"smooth_basalt"},"result":{"id":"wwizardry:cut_basalt_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "smooth_basalt" + }, + "result": { + "id": "wwizardry:cut_basalt_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/slab.json index 72bac894..48d59857 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/slab.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:cut_basalt_slab"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:cut_basalt" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:cut_basalt_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/stiars.json index 4a28cad7..17fb33d5 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/stiars.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:cut_basalt_stairs"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:cut_basalt" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:cut_basalt_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/wall.json index 724f12bd..76a010ba 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_crafted/wall.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:cut_basalt"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:cut_basalt_wall"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:cut_basalt" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:cut_basalt_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/slab.json index e3d0a70a..043c8d1a 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:cut_basalt_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:cut_basalt_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/stairs.json index ae290b37..308dc07b 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:cut_basalt_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:cut_basalt_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/wall.json index ab4c7232..8fc9f2e8 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/cut_basalt/self_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:cut_basalt"},"result":{"id":"wwizardry:cut_basalt_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:cut_basalt" + }, + "result": { + "id": "wwizardry:cut_basalt_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/modulo_comparator.json b/common/src/generated/resources/data/wwizardry/recipe/modulo_comparator.json index 92473c1a..4851d611 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/modulo_comparator.json +++ b/common/src/generated/resources/data/wwizardry/recipe/modulo_comparator.json @@ -1 +1,25 @@ -{"type":"crafting_shaped","category":"redstone","show_notification":true,"key":{"R":{"item":"redstone_torch"},"S":{"item":"stone"},"Q":{"tag":"wwizardry:rose_quartzes"}},"pattern":[" R ","RQR","SSS"],"result":{"count":1,"id":"wwizardry:modulo_comparator"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "show_notification": true, + "key": { + "R": { + "item": "redstone_torch" + }, + "S": { + "item": "stone" + }, + "Q": { + "tag": "wwizardry:rose_quartzes" + } + }, + "pattern": [ + " R ", + "RQR", + "SSS" + ], + "result": { + "count": 1, + "id": "wwizardry:modulo_comparator" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/block.json index 7991ce92..4cfd8342 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/block.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_bricks"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_basalt_bricks" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/slab.json index 7248e50b..53f8ad6e 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_brick_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_basalt_brick_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/stairs.json index 805f399e..d90de97c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_brick_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_basalt_brick_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/wall.json index 688589cf..5679ee27 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/basalt_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_brick_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_basalt_brick_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/brick_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/brick_mossed/block.json index 86617020..99245cc7 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/brick_mossed/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/brick_mossed/block.json @@ -1 +1,16 @@ -{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:basalt_bricks"},{"tag":"wwizardry:mossy_materials"}],"result":{"id":"wwizardry:mossy_basalt_bricks"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "building", + "show_notification": true, + "ingredients": [ + { + "item": "wwizardry:basalt_bricks" + }, + { + "tag": "wwizardry:mossy_materials" + } + ], + "result": { + "id": "wwizardry:mossy_basalt_bricks" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/slab.json index 30a428f2..44be7950 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/slab.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mossy_basalt_brick_slab"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_basalt_bricks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:mossy_basalt_brick_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/stiars.json index 2bf14092..8884ab6f 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/stiars.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mossy_basalt_brick_stairs"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_basalt_bricks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:mossy_basalt_brick_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/wall.json index 6f7fc431..f6e61b25 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_crafted/wall.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:mossy_basalt_brick_wall"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_basalt_bricks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:mossy_basalt_brick_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/slab.json index 50250937..a6890237 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_brick_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:mossy_basalt_bricks" + }, + "result": { + "id": "wwizardry:mossy_basalt_brick_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/stairs.json index 7778831f..2dce953c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_brick_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_basalt_bricks" + }, + "result": { + "id": "wwizardry:mossy_basalt_brick_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/wall.json index 9c874c16..bc05555a 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_bricks/self_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_brick_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_basalt_bricks" + }, + "result": { + "id": "wwizardry:mossy_basalt_brick_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/block.json index d72b4968..04fdbde5 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/block.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_tiles"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_basalt_tiles" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/slab.json index 2ff0d20a..6f0bf62f 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_tile_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_basalt_tile_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/stairs.json index 3047e826..f43b3880 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_tile_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_basalt_tile_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/wall.json index e65d0920..aa3a84e3 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/basalt_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_basalt_tile_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_basalt_tile_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_crafted/block.json index ab51994c..8b99118a 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_crafted/block.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_bricks"}},"pattern":["##","##"],"result":{"id":"wwizardry:mossy_basalt_tiles","count":4}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_basalt_bricks" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "id": "wwizardry:mossy_basalt_tiles", + "count": 4 + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/block.json index 7d93b142..d81ab8d3 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/block.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_tiles"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_basalt_bricks" + }, + "result": { + "id": "wwizardry:mossy_basalt_tiles" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/slab.json index 44d457fd..c5e8d89b 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_tile_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:mossy_basalt_bricks" + }, + "result": { + "id": "wwizardry:mossy_basalt_tile_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/stairs.json index 2faac04c..536b3c1a 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_tile_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_basalt_bricks" + }, + "result": { + "id": "wwizardry:mossy_basalt_tile_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/wall.json index 26906378..e615c46a 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_bricks"},"result":{"id":"wwizardry:mossy_basalt_tile_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_basalt_bricks" + }, + "result": { + "id": "wwizardry:mossy_basalt_tile_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_mossed/block.json index 0647076f..d9ab2386 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_mossed/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/brick_mossed/block.json @@ -1 +1,16 @@ -{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:basalt_tiles"},{"tag":"wwizardry:mossy_materials"}],"result":{"id":"wwizardry:mossy_basalt_tiles"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "building", + "show_notification": true, + "ingredients": [ + { + "item": "wwizardry:basalt_tiles" + }, + { + "tag": "wwizardry:mossy_materials" + } + ], + "result": { + "id": "wwizardry:mossy_basalt_tiles" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/slab.json index eeecdd52..9625725f 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/slab.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_tiles"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mossy_basalt_tile_slab"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_basalt_tiles" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:mossy_basalt_tile_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/stiars.json index 36eefeb4..2cef8d45 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/stiars.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_tiles"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mossy_basalt_tile_stairs"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_basalt_tiles" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:mossy_basalt_tile_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/wall.json index b68e329e..bdc96303 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_crafted/wall.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_basalt_tiles"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:mossy_basalt_tile_wall"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_basalt_tiles" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:mossy_basalt_tile_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/slab.json index 097ebe04..efe6b437 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_basalt_tiles"},"result":{"id":"wwizardry:mossy_basalt_tile_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:mossy_basalt_tiles" + }, + "result": { + "id": "wwizardry:mossy_basalt_tile_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/stairs.json index 082fea5b..aeb1f4e8 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_tiles"},"result":{"id":"wwizardry:mossy_basalt_tile_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_basalt_tiles" + }, + "result": { + "id": "wwizardry:mossy_basalt_tile_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/wall.json index da690eb2..0bffaba6 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_basalt_tiles/self_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_basalt_tiles"},"result":{"id":"wwizardry:mossy_basalt_tile_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_basalt_tiles" + }, + "result": { + "id": "wwizardry:mossy_basalt_tile_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/block.json index d691d133..3169cb2c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/block.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_chiseled_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/slab.json index c7405e11..607a79da 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_chiseled_basalt_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/stairs.json index fe34c896..37fea8d0 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_chiseled_basalt_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/wall.json index 8cfa6780..04412201 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/basalt_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_chiseled_basalt_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_crafted/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_crafted/block.json index 4b5df8a1..028916ff 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_crafted/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_crafted/block.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt_slab"}},"pattern":["#","#"],"result":{"id":"wwizardry:mossy_chiseled_basalt","count":1}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_cut_basalt_slab" + } + }, + "pattern": [ + "#", + "#" + ], + "result": { + "id": "wwizardry:mossy_chiseled_basalt", + "count": 1 + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_mossed/block.json index b84733a2..4d2ed290 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_mossed/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/brick_mossed/block.json @@ -1 +1,16 @@ -{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:chiseled_basalt"},{"tag":"wwizardry:mossy_materials"}],"result":{"id":"wwizardry:mossy_chiseled_basalt"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "building", + "show_notification": true, + "ingredients": [ + { + "item": "wwizardry:chiseled_basalt" + }, + { + "tag": "wwizardry:mossy_materials" + } + ], + "result": { + "id": "wwizardry:mossy_chiseled_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/slab.json index 765764a1..0cd70fe4 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/slab.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_chiseled_basalt"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mossy_chiseled_basalt_slab"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_chiseled_basalt" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:mossy_chiseled_basalt_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/stiars.json index f07f5d00..d06ace1d 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/stiars.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_chiseled_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mossy_chiseled_basalt_stairs"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_chiseled_basalt" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:mossy_chiseled_basalt_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/wall.json index 293b8bd7..6781717c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_crafted/wall.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_chiseled_basalt"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:mossy_chiseled_basalt_wall"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_chiseled_basalt" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:mossy_chiseled_basalt_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/slab.json index 65dc706c..7e158603 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_chiseled_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_slab"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:mossy_chiseled_basalt" + }, + "result": { + "id": "wwizardry:mossy_chiseled_basalt_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/stairs.json index f8be1333..3e990e8f 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_chiseled_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_stairs"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_chiseled_basalt" + }, + "result": { + "id": "wwizardry:mossy_chiseled_basalt_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/wall.json index 0fa5255a..1e903d1b 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_chiseled_basalt/self_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_chiseled_basalt"},"result":{"id":"wwizardry:mossy_chiseled_basalt_wall"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_chiseled_basalt" + }, + "result": { + "id": "wwizardry:mossy_chiseled_basalt_wall" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/cut_mossed/block.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/cut_mossed/block.json index 7b935436..dc44a2d8 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/cut_mossed/block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/cut_mossed/block.json @@ -1 +1,16 @@ -{"type":"crafting_shapeless","category":"building","show_notification":true,"ingredients":[{"item":"wwizardry:cut_basalt"},{"tag":"wwizardry:mossy_materials"}],"result":{"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "building", + "show_notification": true, + "ingredients": [ + { + "item": "wwizardry:cut_basalt" + }, + { + "tag": "wwizardry:mossy_materials" + } + ], + "result": { + "id": "wwizardry:mossy_cut_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/slab.json index a4899953..586bdc7a 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/slab.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_cut_basalt" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:mossy_cut_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/stiars.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/stiars.json index e2d173ea..0573b89e 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/stiars.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/stiars.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_cut_basalt" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:mossy_cut_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/wall.json index ca3f1812..ad09a47c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_crafted/wall.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"#":{"item":"wwizardry:mossy_cut_basalt"}},"pattern":["###","###"],"result":{"count":6,"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mossy_cut_basalt" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:mossy_cut_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/slab.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/slab.json index c7f35a41..1d2403c8 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/slab.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":2,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 2, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_cut_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/stairs.json index 44637e47..120c4915 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/stairs.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_cut_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/wall.json b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/wall.json index 44637e47..120c4915 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/wall.json +++ b/common/src/generated/resources/data/wwizardry/recipe/mossy_cut_basalt/self_cut/wall.json @@ -1 +1,10 @@ -{"type":"stonecutting","count":1,"ingredient":{"item":"wwizardry:mossy_cut_basalt"},"result":{"id":"wwizardry:mossy_cut_basalt"}} \ No newline at end of file +{ + "type": "stonecutting", + "count": 1, + "ingredient": { + "item": "wwizardry:mossy_cut_basalt" + }, + "result": { + "id": "wwizardry:mossy_cut_basalt" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/redstone_stepper.json b/common/src/generated/resources/data/wwizardry/recipe/redstone_stepper.json index 4f77a1e8..e9e6e09e 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/redstone_stepper.json +++ b/common/src/generated/resources/data/wwizardry/recipe/redstone_stepper.json @@ -1 +1,21 @@ -{"type":"crafting_shaped","category":"redstone","show_notification":true,"key":{"R":{"item":"redstone"},"S":{"item":"stone"}},"pattern":["RRR","SSS"],"result":{"count":1,"id":"wwizardry:redstone_stepper"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "show_notification": true, + "key": { + "R": { + "item": "redstone" + }, + "S": { + "item": "stone" + } + }, + "pattern": [ + "RRR", + "SSS" + ], + "result": { + "count": 1, + "id": "wwizardry:redstone_stepper" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass.json b/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass.json index bdb195c1..de1143ba 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass.json +++ b/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass.json @@ -1 +1,22 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"G":{"item":"glass"},"B":{"item":"iron_bars"}},"pattern":["GGG","GBG","GGG"],"result":{"count":8,"id":"wwizardry:reinforced_glass"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "G": { + "item": "glass" + }, + "B": { + "item": "iron_bars" + } + }, + "pattern": [ + "GGG", + "GBG", + "GGG" + ], + "result": { + "count": 8, + "id": "wwizardry:reinforced_glass" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass_pane.json b/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass_pane.json index 4201e734..7ad1e87d 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass_pane.json +++ b/common/src/generated/resources/data/wwizardry/recipe/reinforced_glass_pane.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"G":{"item":"wwizardry:reinforced_glass"}},"pattern":["GGG","GGG"],"result":{"count":16,"id":"wwizardry:reinforced_glass_pane"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "G": { + "item": "wwizardry:reinforced_glass" + } + }, + "pattern": [ + "GGG", + "GGG" + ], + "result": { + "count": 16, + "id": "wwizardry:reinforced_glass_pane" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_block.json b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_block.json index ed291104..afaa3f49 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_block.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","show_notification":true,"key":{"R":{"item":"wwizardry:rose_quartz"}},"pattern":["RRR","RRR","RRR"],"result":{"count":1,"id":"wwizardry:rose_quartz_block"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "R": { + "item": "wwizardry:rose_quartz" + } + }, + "pattern": [ + "RRR", + "RRR", + "RRR" + ], + "result": { + "count": 1, + "id": "wwizardry:rose_quartz_block" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_blasting_ore.json b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_blasting_ore.json index cbc26410..d60b5bd3 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_blasting_ore.json +++ b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_blasting_ore.json @@ -1 +1,12 @@ -{"type":"blasting","group":"rose_quartz","cooking_time":100,"experience":1,"ingredient":{"tag":"wwizardry:rose_quartz_ores"},"result":{"id":"wwizardry:rose_quartz"}} \ No newline at end of file +{ + "type": "blasting", + "group": "rose_quartz", + "cooking_time": 100, + "experience": 1, + "ingredient": { + "tag": "wwizardry:rose_quartz_ores" + }, + "result": { + "id": "wwizardry:rose_quartz" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_block.json b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_block.json index 35d7ffe0..ee2d11cd 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_block.json +++ b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_block.json @@ -1 +1,14 @@ -{"type":"crafting_shapeless","category":"misc","show_notification":true,"ingredients":[{"item":"wwizardry:rose_quartz_block"}],"result":{"count":9,"id":"wwizardry:rose_quartz"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "misc", + "show_notification": true, + "ingredients": [ + { + "item": "wwizardry:rose_quartz_block" + } + ], + "result": { + "count": 9, + "id": "wwizardry:rose_quartz" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_smelting_ore.json b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_smelting_ore.json index 7efea702..d05f4db2 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_smelting_ore.json +++ b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_from_smelting_ore.json @@ -1 +1,12 @@ -{"type":"smelting","group":"rose_quartz","cooking_time":200,"experience":1,"ingredient":{"tag":"wwizardry:rose_quartz_ores"},"result":{"id":"wwizardry:rose_quartz"}} \ No newline at end of file +{ + "type": "smelting", + "group": "rose_quartz", + "cooking_time": 200, + "experience": 1, + "ingredient": { + "tag": "wwizardry:rose_quartz_ores" + }, + "result": { + "id": "wwizardry:rose_quartz" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/sculk_resonator.json b/common/src/generated/resources/data/wwizardry/recipe/sculk_resonator.json index ce6addf3..8066b0af 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/sculk_resonator.json +++ b/common/src/generated/resources/data/wwizardry/recipe/sculk_resonator.json @@ -1 +1,25 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":10,"inputs":[{"item":"amethyst_shard"},{"item":"amethyst_shard"},{"item":"redstone"},{"item":"wwizardry:crystalline_sculk"}],"catalyst":{"item":"sculk_shrieker"},"result":{"id":"wwizardry:sculk_resonator"}} \ No newline at end of file +{ + "type": "wwizardry:altar_catalyzation", + "keepCatalyst": false, + "bloom": 10, + "inputs": [ + { + "item": "amethyst_shard" + }, + { + "item": "amethyst_shard" + }, + { + "item": "redstone" + }, + { + "item": "wwizardry:crystalline_sculk" + } + ], + "catalyst": { + "item": "sculk_shrieker" + }, + "result": { + "id": "wwizardry:sculk_resonator" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/slot_charm.json b/common/src/generated/resources/data/wwizardry/recipe/slot_charm.json index f13dd812..a4a8b802 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/slot_charm.json +++ b/common/src/generated/resources/data/wwizardry/recipe/slot_charm.json @@ -1 +1,26 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":5,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"blaze_powder"},{"item":"blaze_powder"}],"catalyst":{"item":"chest"},"result":{"count":4,"id":"wwizardry:slot_charm"}} \ No newline at end of file +{ + "type": "wwizardry:altar_catalyzation", + "keepCatalyst": false, + "bloom": 5, + "inputs": [ + { + "item": "wwizardry:crystalline_sculk" + }, + { + "item": "gold_ingot" + }, + { + "item": "blaze_powder" + }, + { + "item": "blaze_powder" + } + ], + "catalyst": { + "item": "chest" + }, + "result": { + "count": 4, + "id": "wwizardry:slot_charm" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/soul_mirror.json b/common/src/generated/resources/data/wwizardry/recipe/soul_mirror.json index 45c978d8..ce111052 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/soul_mirror.json +++ b/common/src/generated/resources/data/wwizardry/recipe/soul_mirror.json @@ -1 +1,25 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":15,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"tag":"wwizardry:glass"},{"item":"diamond"}],"catalyst":{"item":"lapis_lazuli"},"result":{"id":"wwizardry:soul_mirror"}} \ No newline at end of file +{ + "type": "wwizardry:altar_catalyzation", + "keepCatalyst": false, + "bloom": 15, + "inputs": [ + { + "item": "wwizardry:crystalline_sculk" + }, + { + "item": "gold_ingot" + }, + { + "tag": "wwizardry:glass" + }, + { + "item": "diamond" + } + ], + "catalyst": { + "item": "lapis_lazuli" + }, + "result": { + "id": "wwizardry:soul_mirror" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/void_bag.json b/common/src/generated/resources/data/wwizardry/recipe/void_bag.json index f7294561..8d53ef55 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/void_bag.json +++ b/common/src/generated/resources/data/wwizardry/recipe/void_bag.json @@ -1 +1,25 @@ -{"type":"wwizardry:altar_catalyzation","keepCatalyst":false,"bloom":15,"inputs":[{"item":"wwizardry:crystalline_sculk"},{"item":"gold_ingot"},{"item":"ender_eye"},{"item":"obsidian"}],"catalyst":{"item":"bundle"},"result":{"id":"wwizardry:void_bag"}} \ No newline at end of file +{ + "type": "wwizardry:altar_catalyzation", + "keepCatalyst": false, + "bloom": 15, + "inputs": [ + { + "item": "wwizardry:crystalline_sculk" + }, + { + "item": "gold_ingot" + }, + { + "item": "ender_eye" + }, + { + "item": "obsidian" + } + ], + "catalyst": { + "item": "bundle" + }, + "result": { + "id": "wwizardry:void_bag" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/boat.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/boat.json index 7f0064e0..df48c5ca 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/boat.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/boat.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"misc","group":"boat","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["# #","###"],"result":{"id":"wwizardry:denia_boat"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "misc", + "group": "boat", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_planks" + } + }, + "pattern": [ + "# #", + "###" + ], + "result": { + "id": "wwizardry:denia_boat" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/button.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/button.json index fd4e4bb2..17f31d6a 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/button.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/button.json @@ -1 +1,13 @@ -{"type":"crafting_shapeless","category":"redstone","group":"wooden_button","ingredients":[{"item":"wwizardry:denia_planks"}],"result":{"id":"wwizardry:denia_button"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "redstone", + "group": "wooden_button", + "ingredients": [ + { + "item": "wwizardry:denia_planks" + } + ], + "result": { + "id": "wwizardry:denia_button" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/chest_boat.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/chest_boat.json index b330f050..809edb57 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/chest_boat.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/chest_boat.json @@ -1 +1,16 @@ -{"type":"crafting_shapeless","category":"misc","group":"chest_boat","ingredients":[{"item":"chest"},{"item":"wwizardry:denia_boat"}],"result":{"id":"wwizardry:denia_chest_boat"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "misc", + "group": "chest_boat", + "ingredients": [ + { + "item": "chest" + }, + { + "item": "wwizardry:denia_boat" + } + ], + "result": { + "id": "wwizardry:denia_chest_boat" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/door.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/door.json index 24bc5714..936f16f3 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/door.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/door.json @@ -1 +1,20 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_door","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["##","##","##"],"result":{"count":2,"id":"wwizardry:denia_door"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "group": "wooden_door", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_planks" + } + }, + "pattern": [ + "##", + "##", + "##" + ], + "result": { + "count": 2, + "id": "wwizardry:denia_door" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence.json index 4783e003..c0a1a23f 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence.json @@ -1 +1,22 @@ -{"type":"crafting_shaped","category":"misc","group":"wooden_fence","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"},"S":{"item":"stick"}},"pattern":["#S#","#S#"],"result":{"count":3,"id":"wwizardry:denia_fence"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "misc", + "group": "wooden_fence", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_planks" + }, + "S": { + "item": "stick" + } + }, + "pattern": [ + "#S#", + "#S#" + ], + "result": { + "count": 3, + "id": "wwizardry:denia_fence" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence_gate.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence_gate.json index 495dc158..71c81ac6 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence_gate.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/fence_gate.json @@ -1 +1,21 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_fence_gate","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"},"S":{"item":"stick"}},"pattern":["S#S","S#S"],"result":{"id":"wwizardry:denia_fence_gate"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "group": "wooden_fence_gate", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_planks" + }, + "S": { + "item": "stick" + } + }, + "pattern": [ + "S#S", + "S#S" + ], + "result": { + "id": "wwizardry:denia_fence_gate" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/planks.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/planks.json index 25bfff0a..8f450db5 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/planks.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/planks.json @@ -1 +1,14 @@ -{"type":"crafting_shapeless","category":"building","group":"planks","ingredients":[{"tag":"wwizardry:denia_logs"}],"result":{"count":4,"id":"wwizardry:denia_planks"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "building", + "group": "planks", + "ingredients": [ + { + "tag": "wwizardry:denia_logs" + } + ], + "result": { + "count": 4, + "id": "wwizardry:denia_planks" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/pressure_plate.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/pressure_plate.json index 880f4a26..b15915e6 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/pressure_plate.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/pressure_plate.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_pressure_plate","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["##"],"result":{"id":"wwizardry:denia_pressure_plate"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "group": "wooden_pressure_plate", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_planks" + } + }, + "pattern": [ + "##" + ], + "result": { + "id": "wwizardry:denia_pressure_plate" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/sign.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/sign.json index 82cba9c0..d35e8b37 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/sign.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/sign.json @@ -1 +1,23 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_sign","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"},"S":{"item":"stick"}},"pattern":["###","###"," S "],"result":{"count":3,"id":"wwizardry:denia_sign"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "wooden_sign", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_planks" + }, + "S": { + "item": "stick" + } + }, + "pattern": [ + "###", + "###", + " S " + ], + "result": { + "count": 3, + "id": "wwizardry:denia_sign" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/slab.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/slab.json index 65b72768..12059423 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/slab.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_slab","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:denia_slab"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "wooden_slab", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_planks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:denia_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stairs.json index 19d55776..7b47a618 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stairs.json @@ -1 +1,20 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_stairs","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:denia_stairs"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "wooden_stairs", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_planks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:denia_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stripped_wood.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stripped_wood.json index 5618ca82..73fd77b8 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stripped_wood.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/stripped_wood.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","group":"stripped_bark","show_notification":true,"key":{"#":{"item":"wwizardry:stripped_denia_log"}},"pattern":["##","##"],"result":{"count":3,"id":"wwizardry:stripped_denia_wood"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "stripped_bark", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:stripped_denia_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "wwizardry:stripped_denia_wood" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/trapdoor.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/trapdoor.json index c47fde31..e6af9cb6 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/trapdoor.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/trapdoor.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_trapdoor","show_notification":true,"key":{"#":{"item":"wwizardry:denia_planks"}},"pattern":["###","###"],"result":{"count":2,"id":"wwizardry:denia_trapdoor"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "group": "wooden_trapdoor", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_planks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 2, + "id": "wwizardry:denia_trapdoor" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/wood.json b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/wood.json index 401bbfc6..c7cc41d2 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/denia/wood.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/denia/wood.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","group":"bark","show_notification":true,"key":{"#":{"item":"wwizardry:denia_log"}},"pattern":["##","##"],"result":{"count":3,"id":"wwizardry:denia_wood"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "bark", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:denia_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "wwizardry:denia_wood" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/button.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/button.json index 426b59cd..7f30f8f7 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/button.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/button.json @@ -1 +1,13 @@ -{"type":"crafting_shapeless","category":"redstone","group":"wooden_button","ingredients":[{"item":"wwizardry:mycha_planks"}],"result":{"id":"wwizardry:mycha_button"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "redstone", + "group": "wooden_button", + "ingredients": [ + { + "item": "wwizardry:mycha_planks" + } + ], + "result": { + "id": "wwizardry:mycha_button" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/door.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/door.json index fd04b8cf..b013469f 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/door.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/door.json @@ -1 +1,20 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_door","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["##","##","##"],"result":{"count":2,"id":"wwizardry:mycha_door"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "group": "wooden_door", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mycha_planks" + } + }, + "pattern": [ + "##", + "##", + "##" + ], + "result": { + "count": 2, + "id": "wwizardry:mycha_door" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence.json index 006afbcf..5d5d5982 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence.json @@ -1 +1,22 @@ -{"type":"crafting_shaped","category":"misc","group":"wooden_fence","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"},"S":{"item":"stick"}},"pattern":["#S#","#S#"],"result":{"count":3,"id":"wwizardry:mycha_fence"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "misc", + "group": "wooden_fence", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mycha_planks" + }, + "S": { + "item": "stick" + } + }, + "pattern": [ + "#S#", + "#S#" + ], + "result": { + "count": 3, + "id": "wwizardry:mycha_fence" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence_gate.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence_gate.json index ee74eef4..62df5cf0 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence_gate.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/fence_gate.json @@ -1 +1,21 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_fence_gate","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"},"S":{"item":"stick"}},"pattern":["S#S","S#S"],"result":{"id":"wwizardry:mycha_fence_gate"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "group": "wooden_fence_gate", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mycha_planks" + }, + "S": { + "item": "stick" + } + }, + "pattern": [ + "S#S", + "S#S" + ], + "result": { + "id": "wwizardry:mycha_fence_gate" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/hyphae.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/hyphae.json index f6e08689..9da71357 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/hyphae.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/hyphae.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","group":"bark","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_stem"}},"pattern":["##","##"],"result":{"count":3,"id":"wwizardry:mycha_hyphae"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "bark", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mycha_stem" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "wwizardry:mycha_hyphae" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/planks.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/planks.json index a668889e..4c78fa9e 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/planks.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/planks.json @@ -1 +1,14 @@ -{"type":"crafting_shapeless","category":"building","group":"planks","ingredients":[{"tag":"wwizardry:mycha_stems"}],"result":{"count":4,"id":"wwizardry:mycha_planks"}} \ No newline at end of file +{ + "type": "crafting_shapeless", + "category": "building", + "group": "planks", + "ingredients": [ + { + "tag": "wwizardry:mycha_stems" + } + ], + "result": { + "count": 4, + "id": "wwizardry:mycha_planks" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/pressure_plate.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/pressure_plate.json index f096d5b3..55fe74ec 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/pressure_plate.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/pressure_plate.json @@ -1 +1,17 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_pressure_plate","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["##"],"result":{"id":"wwizardry:mycha_pressure_plate"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "group": "wooden_pressure_plate", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mycha_planks" + } + }, + "pattern": [ + "##" + ], + "result": { + "id": "wwizardry:mycha_pressure_plate" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/sign.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/sign.json index 3dab8296..5366f819 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/sign.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/sign.json @@ -1 +1,23 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_sign","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"},"S":{"item":"stick"}},"pattern":["###","###"," S "],"result":{"count":3,"id":"wwizardry:mycha_sign"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "wooden_sign", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mycha_planks" + }, + "S": { + "item": "stick" + } + }, + "pattern": [ + "###", + "###", + " S " + ], + "result": { + "count": 3, + "id": "wwizardry:mycha_sign" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/slab.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/slab.json index 1e45394b..f5f43494 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/slab.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/slab.json @@ -1 +1,18 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_slab","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["###"],"result":{"count":6,"id":"wwizardry:mycha_slab"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "wooden_slab", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mycha_planks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "id": "wwizardry:mycha_slab" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stairs.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stairs.json index a10734fd..362c73a0 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stairs.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stairs.json @@ -1 +1,20 @@ -{"type":"crafting_shaped","category":"building","group":"wooden_stairs","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["# ","## ","###"],"result":{"count":4,"id":"wwizardry:mycha_stairs"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "wooden_stairs", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mycha_planks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "id": "wwizardry:mycha_stairs" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stripped_hyphae.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stripped_hyphae.json index eba52338..d70e4361 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stripped_hyphae.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/stripped_hyphae.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"building","group":"stripped_bark","show_notification":true,"key":{"#":{"item":"wwizardry:stripped_mycha_stem"}},"pattern":["##","##"],"result":{"count":3,"id":"wwizardry:stripped_mycha_hyphae"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "building", + "group": "stripped_bark", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:stripped_mycha_stem" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "id": "wwizardry:stripped_mycha_hyphae" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/trapdoor.json b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/trapdoor.json index 69cd44cf..278c5437 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/trapdoor.json +++ b/common/src/generated/resources/data/wwizardry/recipe/wood/mycha/trapdoor.json @@ -1 +1,19 @@ -{"type":"crafting_shaped","category":"redstone","group":"wooden_trapdoor","show_notification":true,"key":{"#":{"item":"wwizardry:mycha_planks"}},"pattern":["###","###"],"result":{"count":2,"id":"wwizardry:mycha_trapdoor"}} \ No newline at end of file +{ + "type": "crafting_shaped", + "category": "redstone", + "group": "wooden_trapdoor", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:mycha_planks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 2, + "id": "wwizardry:mycha_trapdoor" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/altars.json b/common/src/generated/resources/data/wwizardry/tags/block/altars.json index 1d5f6455..161a4b06 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/altars.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/altars.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:altar_pedestal"},{"required":false,"id":"wwizardry:altar_catalyzer"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:altar_pedestal" + }, + { + "required": false, + "id": "wwizardry:altar_catalyzer" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt.json index a36e650c..9579976f 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt.json @@ -1 +1,37 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:brick/basalt_cut"},{"required":false,"id":"#wwizardry:brick/basalt_chiseled"},{"required":false,"id":"#wwizardry:brick/basalt_tiles"},{"required":false,"id":"#wwizardry:brick/basalt_bricks"},{"required":false,"id":"#wwizardry:brick/mossy_basalt_cut"},{"required":false,"id":"#wwizardry:brick/mossy_basalt_chiseled"},{"required":false,"id":"#wwizardry:brick/mossy_basalt_tiles"},{"required":false,"id":"#wwizardry:brick/mossy_basalt_bricks"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:brick/basalt_cut" + }, + { + "required": false, + "id": "#wwizardry:brick/basalt_chiseled" + }, + { + "required": false, + "id": "#wwizardry:brick/basalt_tiles" + }, + { + "required": false, + "id": "#wwizardry:brick/basalt_bricks" + }, + { + "required": false, + "id": "#wwizardry:brick/mossy_basalt_cut" + }, + { + "required": false, + "id": "#wwizardry:brick/mossy_basalt_chiseled" + }, + { + "required": false, + "id": "#wwizardry:brick/mossy_basalt_tiles" + }, + { + "required": false, + "id": "#wwizardry:brick/mossy_basalt_bricks" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_bricks.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_bricks.json index 56c4e015..639c418b 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_bricks.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_bricks.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:basalt_bricks"},{"required":false,"id":"wwizardry:basalt_brick_stairs"},{"required":false,"id":"wwizardry:basalt_brick_slab"},{"required":false,"id":"wwizardry:basalt_brick_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:basalt_bricks" + }, + { + "required": false, + "id": "wwizardry:basalt_brick_stairs" + }, + { + "required": false, + "id": "wwizardry:basalt_brick_slab" + }, + { + "required": false, + "id": "wwizardry:basalt_brick_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_chiseled.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_chiseled.json index 19a540b1..2c58b0e5 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_chiseled.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_chiseled.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:chiseled_basalt"},{"required":false,"id":"wwizardry:chiseled_basalt_stairs"},{"required":false,"id":"wwizardry:chiseled_basalt_slab"},{"required":false,"id":"wwizardry:chiseled_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:chiseled_basalt" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_cut.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_cut.json index 141f4c67..0a4a9a7f 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_cut.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_cut.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:cut_basalt"},{"required":false,"id":"wwizardry:cut_basalt_stairs"},{"required":false,"id":"wwizardry:cut_basalt_slab"},{"required":false,"id":"wwizardry:cut_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:cut_basalt" + }, + { + "required": false, + "id": "wwizardry:cut_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:cut_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:cut_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_tiles.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_tiles.json index 8b9e433c..622174f5 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_tiles.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/brick/basalt_tiles.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:basalt_tiles"},{"required":false,"id":"wwizardry:basalt_tile_stairs"},{"required":false,"id":"wwizardry:basalt_tile_slab"},{"required":false,"id":"wwizardry:basalt_tile_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:basalt_tiles" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_stairs" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_slab" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_bricks.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_bricks.json index 988a8f71..77aba7dd 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_bricks.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_bricks.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mossy_basalt_bricks"},{"required":false,"id":"wwizardry:mossy_basalt_brick_stairs"},{"required":false,"id":"wwizardry:mossy_basalt_brick_slab"},{"required":false,"id":"wwizardry:mossy_basalt_brick_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mossy_basalt_bricks" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_chiseled.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_chiseled.json index bbb3d4af..a570246c 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_chiseled.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_chiseled.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mossy_chiseled_basalt"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_stairs"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_slab"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_cut.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_cut.json index 9062835a..88cbfb56 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_cut.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_cut.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mossy_cut_basalt"},{"required":false,"id":"wwizardry:mossy_cut_basalt_stairs"},{"required":false,"id":"wwizardry:mossy_cut_basalt_slab"},{"required":false,"id":"wwizardry:mossy_cut_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mossy_cut_basalt" + }, + { + "required": false, + "id": "wwizardry:mossy_cut_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_cut_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_cut_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_tiles.json b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_tiles.json index aea93e30..4140b36e 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_tiles.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/brick/mossy_basalt_tiles.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mossy_basalt_tiles"},{"required":false,"id":"wwizardry:mossy_basalt_tile_stairs"},{"required":false,"id":"wwizardry:mossy_basalt_tile_slab"},{"required":false,"id":"wwizardry:mossy_basalt_tile_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mossy_basalt_tiles" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json b/common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json index 3248d794..2a4fa48a 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json @@ -1 +1,293 @@ -{"replace":false,"values":[{"required":false,"id":"copper_block"},{"required":false,"id":"exposed_copper"},{"required":false,"id":"weathered_copper"},{"required":false,"id":"oxidized_copper"},{"required":false,"id":"waxed_copper_block"},{"required":false,"id":"waxed_exposed_copper"},{"required":false,"id":"waxed_weathered_copper"},{"required":false,"id":"waxed_oxidized_copper"},{"required":false,"id":"cut_copper"},{"required":false,"id":"exposed_cut_copper"},{"required":false,"id":"weathered_cut_copper"},{"required":false,"id":"oxidized_cut_copper"},{"required":false,"id":"waxed_cut_copper"},{"required":false,"id":"waxed_exposed_cut_copper"},{"required":false,"id":"waxed_weathered_cut_copper"},{"required":false,"id":"waxed_oxidized_cut_copper"},{"required":false,"id":"cut_copper_stairs"},{"required":false,"id":"exposed_cut_copper_stairs"},{"required":false,"id":"weathered_cut_copper_stairs"},{"required":false,"id":"oxidized_cut_copper_stairs"},{"required":false,"id":"waxed_cut_copper"},{"required":false,"id":"waxed_exposed_cut_copper_stairs"},{"required":false,"id":"waxed_weathered_cut_copper_stairs"},{"required":false,"id":"waxed_oxidized_cut_copper_stairs"},{"required":false,"id":"cut_copper_slab"},{"required":false,"id":"exposed_cut_copper_slab"},{"required":false,"id":"weathered_cut_copper_slab"},{"required":false,"id":"oxidized_cut_copper_slab"},{"required":false,"id":"waxed_cut_copper_slab"},{"required":false,"id":"waxed_exposed_cut_copper_slab"},{"required":false,"id":"waxed_weathered_cut_copper_slab"},{"required":false,"id":"waxed_oxidized_cut_copper_slab"},{"required":false,"id":"chiseled_copper"},{"required":false,"id":"exposed_chiseled_copper"},{"required":false,"id":"weathered_chiseled_copper"},{"required":false,"id":"oxidized_chiseled_copper"},{"required":false,"id":"waxed_chiseled_copper"},{"required":false,"id":"waxed_exposed_chiseled_copper"},{"required":false,"id":"waxed_weathered_chiseled_copper"},{"required":false,"id":"waxed_oxidized_chiseled_copper"},{"required":false,"id":"copper_grate"},{"required":false,"id":"exposed_copper_grate"},{"required":false,"id":"weathered_copper_grate"},{"required":false,"id":"oxidized_copper_grate"},{"required":false,"id":"waxed_copper_grate"},{"required":false,"id":"waxed_exposed_copper_grate"},{"required":false,"id":"waxed_weathered_copper_grate"},{"required":false,"id":"waxed_oxidized_copper_grate"},{"required":false,"id":"copper_bulb"},{"required":false,"id":"exposed_copper_bulb"},{"required":false,"id":"weathered_copper_bulb"},{"required":false,"id":"oxidized_copper_bulb"},{"required":false,"id":"waxed_copper_bulb"},{"required":false,"id":"waxed_exposed_copper_bulb"},{"required":false,"id":"waxed_weathered_copper_bulb"},{"required":false,"id":"waxed_oxidized_copper_bulb"},{"required":false,"id":"copper_door"},{"required":false,"id":"exposed_copper_door"},{"required":false,"id":"weathered_copper_door"},{"required":false,"id":"oxidized_copper_door"},{"required":false,"id":"waxed_copper_door"},{"required":false,"id":"waxed_exposed_copper_door"},{"required":false,"id":"waxed_weathered_copper_door"},{"required":false,"id":"waxed_oxidized_copper_door"},{"required":false,"id":"copper_trapdoor"},{"required":false,"id":"exposed_copper_trapdoor"},{"required":false,"id":"weathered_copper_trapdoor"},{"required":false,"id":"oxidized_copper_trapdoor"},{"required":false,"id":"waxed_copper_trapdoor"},{"required":false,"id":"waxed_exposed_copper_trapdoor"},{"required":false,"id":"waxed_weathered_copper_trapdoor"},{"required":false,"id":"waxed_oxidized_copper_trapdoor"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "copper_block" + }, + { + "required": false, + "id": "exposed_copper" + }, + { + "required": false, + "id": "weathered_copper" + }, + { + "required": false, + "id": "oxidized_copper" + }, + { + "required": false, + "id": "waxed_copper_block" + }, + { + "required": false, + "id": "waxed_exposed_copper" + }, + { + "required": false, + "id": "waxed_weathered_copper" + }, + { + "required": false, + "id": "waxed_oxidized_copper" + }, + { + "required": false, + "id": "cut_copper" + }, + { + "required": false, + "id": "exposed_cut_copper" + }, + { + "required": false, + "id": "weathered_cut_copper" + }, + { + "required": false, + "id": "oxidized_cut_copper" + }, + { + "required": false, + "id": "waxed_cut_copper" + }, + { + "required": false, + "id": "waxed_exposed_cut_copper" + }, + { + "required": false, + "id": "waxed_weathered_cut_copper" + }, + { + "required": false, + "id": "waxed_oxidized_cut_copper" + }, + { + "required": false, + "id": "cut_copper_stairs" + }, + { + "required": false, + "id": "exposed_cut_copper_stairs" + }, + { + "required": false, + "id": "weathered_cut_copper_stairs" + }, + { + "required": false, + "id": "oxidized_cut_copper_stairs" + }, + { + "required": false, + "id": "waxed_cut_copper" + }, + { + "required": false, + "id": "waxed_exposed_cut_copper_stairs" + }, + { + "required": false, + "id": "waxed_weathered_cut_copper_stairs" + }, + { + "required": false, + "id": "waxed_oxidized_cut_copper_stairs" + }, + { + "required": false, + "id": "cut_copper_slab" + }, + { + "required": false, + "id": "exposed_cut_copper_slab" + }, + { + "required": false, + "id": "weathered_cut_copper_slab" + }, + { + "required": false, + "id": "oxidized_cut_copper_slab" + }, + { + "required": false, + "id": "waxed_cut_copper_slab" + }, + { + "required": false, + "id": "waxed_exposed_cut_copper_slab" + }, + { + "required": false, + "id": "waxed_weathered_cut_copper_slab" + }, + { + "required": false, + "id": "waxed_oxidized_cut_copper_slab" + }, + { + "required": false, + "id": "chiseled_copper" + }, + { + "required": false, + "id": "exposed_chiseled_copper" + }, + { + "required": false, + "id": "weathered_chiseled_copper" + }, + { + "required": false, + "id": "oxidized_chiseled_copper" + }, + { + "required": false, + "id": "waxed_chiseled_copper" + }, + { + "required": false, + "id": "waxed_exposed_chiseled_copper" + }, + { + "required": false, + "id": "waxed_weathered_chiseled_copper" + }, + { + "required": false, + "id": "waxed_oxidized_chiseled_copper" + }, + { + "required": false, + "id": "copper_grate" + }, + { + "required": false, + "id": "exposed_copper_grate" + }, + { + "required": false, + "id": "weathered_copper_grate" + }, + { + "required": false, + "id": "oxidized_copper_grate" + }, + { + "required": false, + "id": "waxed_copper_grate" + }, + { + "required": false, + "id": "waxed_exposed_copper_grate" + }, + { + "required": false, + "id": "waxed_weathered_copper_grate" + }, + { + "required": false, + "id": "waxed_oxidized_copper_grate" + }, + { + "required": false, + "id": "copper_bulb" + }, + { + "required": false, + "id": "exposed_copper_bulb" + }, + { + "required": false, + "id": "weathered_copper_bulb" + }, + { + "required": false, + "id": "oxidized_copper_bulb" + }, + { + "required": false, + "id": "waxed_copper_bulb" + }, + { + "required": false, + "id": "waxed_exposed_copper_bulb" + }, + { + "required": false, + "id": "waxed_weathered_copper_bulb" + }, + { + "required": false, + "id": "waxed_oxidized_copper_bulb" + }, + { + "required": false, + "id": "copper_door" + }, + { + "required": false, + "id": "exposed_copper_door" + }, + { + "required": false, + "id": "weathered_copper_door" + }, + { + "required": false, + "id": "oxidized_copper_door" + }, + { + "required": false, + "id": "waxed_copper_door" + }, + { + "required": false, + "id": "waxed_exposed_copper_door" + }, + { + "required": false, + "id": "waxed_weathered_copper_door" + }, + { + "required": false, + "id": "waxed_oxidized_copper_door" + }, + { + "required": false, + "id": "copper_trapdoor" + }, + { + "required": false, + "id": "exposed_copper_trapdoor" + }, + { + "required": false, + "id": "weathered_copper_trapdoor" + }, + { + "required": false, + "id": "oxidized_copper_trapdoor" + }, + { + "required": false, + "id": "waxed_copper_trapdoor" + }, + { + "required": false, + "id": "waxed_exposed_copper_trapdoor" + }, + { + "required": false, + "id": "waxed_weathered_copper_trapdoor" + }, + { + "required": false, + "id": "waxed_oxidized_copper_trapdoor" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/denia_logs.json b/common/src/generated/resources/data/wwizardry/tags/block/denia_logs.json index 861901aa..3e1607a8 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/denia_logs.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/denia_logs.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_log"},{"required":false,"id":"wwizardry:denia_wood"},{"required":false,"id":"wwizardry:stripped_denia_log"},{"required":false,"id":"wwizardry:stripped_denia_wood"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_log" + }, + { + "required": false, + "id": "wwizardry:denia_wood" + }, + { + "required": false, + "id": "wwizardry:stripped_denia_log" + }, + { + "required": false, + "id": "wwizardry:stripped_denia_wood" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/mycha_growable.json b/common/src/generated/resources/data/wwizardry/tags/block/mycha_growable.json index c3b332aa..fdb13144 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/mycha_growable.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/mycha_growable.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"sand"},{"required":false,"id":"wwizardry:mycelial_sand"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "sand" + }, + { + "required": false, + "id": "wwizardry:mycelial_sand" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/mycha_growth.json b/common/src/generated/resources/data/wwizardry/tags/block/mycha_growth.json index e2365e5c..1999797b 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/mycha_growth.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/mycha_growth.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"sand"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "sand" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/mycha_stems.json b/common/src/generated/resources/data/wwizardry/tags/block/mycha_stems.json index ea0f9355..4864d375 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/mycha_stems.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/mycha_stems.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mycha_stem"},{"required":false,"id":"wwizardry:mycha_hyphae"},{"required":false,"id":"wwizardry:stripped_mycha_stem"},{"required":false,"id":"wwizardry:stripped_mycha_hyphae"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mycha_stem" + }, + { + "required": false, + "id": "wwizardry:mycha_hyphae" + }, + { + "required": false, + "id": "wwizardry:stripped_mycha_stem" + }, + { + "required": false, + "id": "wwizardry:stripped_mycha_hyphae" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/rose_quartz_ores.json b/common/src/generated/resources/data/wwizardry/tags/block/rose_quartz_ores.json index b5e086d4..9cbf016c 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/rose_quartz_ores.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/rose_quartz_ores.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:rose_quartz_ore"},{"required":false,"id":"wwizardry:deepslate_rose_quartz_ore"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:rose_quartz_ore" + }, + { + "required": false, + "id": "wwizardry:deepslate_rose_quartz_ore" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/wood/all.json b/common/src/generated/resources/data/wwizardry/tags/block/wood/all.json index 6e59fc39..c34ac427 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/wood/all.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/wood/all.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:wood/denia"},{"required":false,"id":"#wwizardry:wood/mycha"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:wood/denia" + }, + { + "required": false, + "id": "#wwizardry:wood/mycha" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/wood/denia.json b/common/src/generated/resources/data/wwizardry/tags/block/wood/denia.json index fda6ecf6..3cc6826c 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/wood/denia.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/wood/denia.json @@ -1 +1,57 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:denia_logs"},{"required":false,"id":"wwizardry:denia_planks"},{"required":false,"id":"wwizardry:denia_stairs"},{"required":false,"id":"wwizardry:denia_slab"},{"required":false,"id":"wwizardry:denia_door"},{"required":false,"id":"wwizardry:denia_button"},{"required":false,"id":"wwizardry:denia_pressure_plate"},{"required":false,"id":"wwizardry:denia_sign"},{"required":false,"id":"wwizardry:denia_wall_sign"},{"required":false,"id":"wwizardry:denia_hanging_sign"},{"required":false,"id":"wwizardry:denia_wall_hanging_sign"},{"required":false,"id":"wwizardry:denia_fence"},{"required":false,"id":"wwizardry:denia_fence_gate"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:denia_logs" + }, + { + "required": false, + "id": "wwizardry:denia_planks" + }, + { + "required": false, + "id": "wwizardry:denia_stairs" + }, + { + "required": false, + "id": "wwizardry:denia_slab" + }, + { + "required": false, + "id": "wwizardry:denia_door" + }, + { + "required": false, + "id": "wwizardry:denia_button" + }, + { + "required": false, + "id": "wwizardry:denia_pressure_plate" + }, + { + "required": false, + "id": "wwizardry:denia_sign" + }, + { + "required": false, + "id": "wwizardry:denia_wall_sign" + }, + { + "required": false, + "id": "wwizardry:denia_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:denia_wall_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:denia_fence" + }, + { + "required": false, + "id": "wwizardry:denia_fence_gate" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/block/wood/mycha.json b/common/src/generated/resources/data/wwizardry/tags/block/wood/mycha.json index f452ac42..735925cf 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/wood/mycha.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/wood/mycha.json @@ -1 +1,57 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:mycha_stems"},{"required":false,"id":"wwizardry:mycha_planks"},{"required":false,"id":"wwizardry:mycha_stairs"},{"required":false,"id":"wwizardry:mycha_slab"},{"required":false,"id":"wwizardry:mycha_door"},{"required":false,"id":"wwizardry:mycha_button"},{"required":false,"id":"wwizardry:mycha_pressure_plate"},{"required":false,"id":"wwizardry:mycha_sign"},{"required":false,"id":"wwizardry:mycha_wall_sign"},{"required":false,"id":"wwizardry:mycha_hanging_sign"},{"required":false,"id":"wwizardry:mycha_wall_hanging_sign"},{"required":false,"id":"wwizardry:mycha_fence"},{"required":false,"id":"wwizardry:mycha_fence_gate"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:mycha_stems" + }, + { + "required": false, + "id": "wwizardry:mycha_planks" + }, + { + "required": false, + "id": "wwizardry:mycha_stairs" + }, + { + "required": false, + "id": "wwizardry:mycha_slab" + }, + { + "required": false, + "id": "wwizardry:mycha_door" + }, + { + "required": false, + "id": "wwizardry:mycha_button" + }, + { + "required": false, + "id": "wwizardry:mycha_pressure_plate" + }, + { + "required": false, + "id": "wwizardry:mycha_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_wall_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_wall_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_fence" + }, + { + "required": false, + "id": "wwizardry:mycha_fence_gate" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/altar_air_modifier.json b/common/src/generated/resources/data/wwizardry/tags/item/altar_air_modifier.json index 532d9bbd..c69632ae 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/altar_air_modifier.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/altar_air_modifier.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:slot_charm"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:slot_charm" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/altars.json b/common/src/generated/resources/data/wwizardry/tags/item/altars.json index 1d5f6455..161a4b06 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/altars.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/altars.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:altar_pedestal"},{"required":false,"id":"wwizardry:altar_catalyzer"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:altar_pedestal" + }, + { + "required": false, + "id": "wwizardry:altar_catalyzer" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt.json index a36e650c..9579976f 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt.json @@ -1 +1,37 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:brick/basalt_cut"},{"required":false,"id":"#wwizardry:brick/basalt_chiseled"},{"required":false,"id":"#wwizardry:brick/basalt_tiles"},{"required":false,"id":"#wwizardry:brick/basalt_bricks"},{"required":false,"id":"#wwizardry:brick/mossy_basalt_cut"},{"required":false,"id":"#wwizardry:brick/mossy_basalt_chiseled"},{"required":false,"id":"#wwizardry:brick/mossy_basalt_tiles"},{"required":false,"id":"#wwizardry:brick/mossy_basalt_bricks"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:brick/basalt_cut" + }, + { + "required": false, + "id": "#wwizardry:brick/basalt_chiseled" + }, + { + "required": false, + "id": "#wwizardry:brick/basalt_tiles" + }, + { + "required": false, + "id": "#wwizardry:brick/basalt_bricks" + }, + { + "required": false, + "id": "#wwizardry:brick/mossy_basalt_cut" + }, + { + "required": false, + "id": "#wwizardry:brick/mossy_basalt_chiseled" + }, + { + "required": false, + "id": "#wwizardry:brick/mossy_basalt_tiles" + }, + { + "required": false, + "id": "#wwizardry:brick/mossy_basalt_bricks" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_bricks.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_bricks.json index 56c4e015..639c418b 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_bricks.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_bricks.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:basalt_bricks"},{"required":false,"id":"wwizardry:basalt_brick_stairs"},{"required":false,"id":"wwizardry:basalt_brick_slab"},{"required":false,"id":"wwizardry:basalt_brick_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:basalt_bricks" + }, + { + "required": false, + "id": "wwizardry:basalt_brick_stairs" + }, + { + "required": false, + "id": "wwizardry:basalt_brick_slab" + }, + { + "required": false, + "id": "wwizardry:basalt_brick_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_chiseled.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_chiseled.json index 19a540b1..2c58b0e5 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_chiseled.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_chiseled.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:chiseled_basalt"},{"required":false,"id":"wwizardry:chiseled_basalt_stairs"},{"required":false,"id":"wwizardry:chiseled_basalt_slab"},{"required":false,"id":"wwizardry:chiseled_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:chiseled_basalt" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:chiseled_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_cut.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_cut.json index 141f4c67..0a4a9a7f 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_cut.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_cut.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:cut_basalt"},{"required":false,"id":"wwizardry:cut_basalt_stairs"},{"required":false,"id":"wwizardry:cut_basalt_slab"},{"required":false,"id":"wwizardry:cut_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:cut_basalt" + }, + { + "required": false, + "id": "wwizardry:cut_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:cut_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:cut_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_tiles.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_tiles.json index 8b9e433c..622174f5 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_tiles.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/brick/basalt_tiles.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:basalt_tiles"},{"required":false,"id":"wwizardry:basalt_tile_stairs"},{"required":false,"id":"wwizardry:basalt_tile_slab"},{"required":false,"id":"wwizardry:basalt_tile_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:basalt_tiles" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_stairs" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_slab" + }, + { + "required": false, + "id": "wwizardry:basalt_tile_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_bricks.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_bricks.json index 988a8f71..77aba7dd 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_bricks.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_bricks.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mossy_basalt_bricks"},{"required":false,"id":"wwizardry:mossy_basalt_brick_stairs"},{"required":false,"id":"wwizardry:mossy_basalt_brick_slab"},{"required":false,"id":"wwizardry:mossy_basalt_brick_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mossy_basalt_bricks" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_brick_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_chiseled.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_chiseled.json index bbb3d4af..a570246c 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_chiseled.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_chiseled.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mossy_chiseled_basalt"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_stairs"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_slab"},{"required":false,"id":"wwizardry:mossy_chiseled_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_chiseled_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_cut.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_cut.json index 9062835a..88cbfb56 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_cut.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_cut.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mossy_cut_basalt"},{"required":false,"id":"wwizardry:mossy_cut_basalt_stairs"},{"required":false,"id":"wwizardry:mossy_cut_basalt_slab"},{"required":false,"id":"wwizardry:mossy_cut_basalt_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mossy_cut_basalt" + }, + { + "required": false, + "id": "wwizardry:mossy_cut_basalt_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_cut_basalt_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_cut_basalt_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_tiles.json b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_tiles.json index aea93e30..4140b36e 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_tiles.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/brick/mossy_basalt_tiles.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mossy_basalt_tiles"},{"required":false,"id":"wwizardry:mossy_basalt_tile_stairs"},{"required":false,"id":"wwizardry:mossy_basalt_tile_slab"},{"required":false,"id":"wwizardry:mossy_basalt_tile_wall"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mossy_basalt_tiles" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_stairs" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_slab" + }, + { + "required": false, + "id": "wwizardry:mossy_basalt_tile_wall" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/denia_logs.json b/common/src/generated/resources/data/wwizardry/tags/item/denia_logs.json index 861901aa..3e1607a8 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/denia_logs.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/denia_logs.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:denia_log"},{"required":false,"id":"wwizardry:denia_wood"},{"required":false,"id":"wwizardry:stripped_denia_log"},{"required":false,"id":"wwizardry:stripped_denia_wood"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:denia_log" + }, + { + "required": false, + "id": "wwizardry:denia_wood" + }, + { + "required": false, + "id": "wwizardry:stripped_denia_log" + }, + { + "required": false, + "id": "wwizardry:stripped_denia_wood" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/glass.json b/common/src/generated/resources/data/wwizardry/tags/item/glass.json index 7b4b7e80..037744b9 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/glass.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/glass.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"#c:glass_blocks"},{"required":false,"id":"#forge:glass"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#c:glass_blocks" + }, + { + "required": false, + "id": "#forge:glass" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/mossy_materials.json b/common/src/generated/resources/data/wwizardry/tags/item/mossy_materials.json index e457289f..97b6feb0 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/mossy_materials.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/mossy_materials.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"moss_block"},{"required":false,"id":"vine"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "moss_block" + }, + { + "required": false, + "id": "vine" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/mycha_stems.json b/common/src/generated/resources/data/wwizardry/tags/item/mycha_stems.json index ea0f9355..4864d375 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/mycha_stems.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/mycha_stems.json @@ -1 +1,21 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:mycha_stem"},{"required":false,"id":"wwizardry:mycha_hyphae"},{"required":false,"id":"wwizardry:stripped_mycha_stem"},{"required":false,"id":"wwizardry:stripped_mycha_hyphae"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:mycha_stem" + }, + { + "required": false, + "id": "wwizardry:mycha_hyphae" + }, + { + "required": false, + "id": "wwizardry:stripped_mycha_stem" + }, + { + "required": false, + "id": "wwizardry:stripped_mycha_hyphae" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/repairs_sculk.json b/common/src/generated/resources/data/wwizardry/tags/item/repairs_sculk.json index 169e6e84..5a84e9d9 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/repairs_sculk.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/repairs_sculk.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"wwizardry:crystalline_sculk"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "wwizardry:crystalline_sculk" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/rose_quartzes.json b/common/src/generated/resources/data/wwizardry/tags/item/rose_quartzes.json index f1c394b0..3c0a3597 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/rose_quartzes.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/rose_quartzes.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"#c:rose_quartzes"},{"required":false,"id":"#forge:rose_quartzes"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#c:rose_quartzes" + }, + { + "required": false, + "id": "#forge:rose_quartzes" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/snail_food.json b/common/src/generated/resources/data/wwizardry/tags/item/snail_food.json index bfa43b98..3f477b26 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/snail_food.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/snail_food.json @@ -1 +1,9 @@ -{"replace":false,"values":[{"required":false,"id":"kelp"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "kelp" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/wood/all.json b/common/src/generated/resources/data/wwizardry/tags/item/wood/all.json index 6e59fc39..c34ac427 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/wood/all.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/wood/all.json @@ -1 +1,13 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:wood/denia"},{"required":false,"id":"#wwizardry:wood/mycha"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:wood/denia" + }, + { + "required": false, + "id": "#wwizardry:wood/mycha" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/wood/denia.json b/common/src/generated/resources/data/wwizardry/tags/item/wood/denia.json index 121939bd..84d547ac 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/wood/denia.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/wood/denia.json @@ -1 +1,49 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:denia_logs"},{"required":false,"id":"wwizardry:denia_planks"},{"required":false,"id":"wwizardry:denia_stairs"},{"required":false,"id":"wwizardry:denia_slab"},{"required":false,"id":"wwizardry:denia_door"},{"required":false,"id":"wwizardry:denia_button"},{"required":false,"id":"wwizardry:denia_pressure_plate"},{"required":false,"id":"wwizardry:denia_sign"},{"required":false,"id":"wwizardry:denia_hanging_sign"},{"required":false,"id":"wwizardry:denia_fence"},{"required":false,"id":"wwizardry:denia_fence_gate"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:denia_logs" + }, + { + "required": false, + "id": "wwizardry:denia_planks" + }, + { + "required": false, + "id": "wwizardry:denia_stairs" + }, + { + "required": false, + "id": "wwizardry:denia_slab" + }, + { + "required": false, + "id": "wwizardry:denia_door" + }, + { + "required": false, + "id": "wwizardry:denia_button" + }, + { + "required": false, + "id": "wwizardry:denia_pressure_plate" + }, + { + "required": false, + "id": "wwizardry:denia_sign" + }, + { + "required": false, + "id": "wwizardry:denia_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:denia_fence" + }, + { + "required": false, + "id": "wwizardry:denia_fence_gate" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/tags/item/wood/mycha.json b/common/src/generated/resources/data/wwizardry/tags/item/wood/mycha.json index 92e3ef88..a7c48f5d 100644 --- a/common/src/generated/resources/data/wwizardry/tags/item/wood/mycha.json +++ b/common/src/generated/resources/data/wwizardry/tags/item/wood/mycha.json @@ -1 +1,49 @@ -{"replace":false,"values":[{"required":false,"id":"#wwizardry:mycha_stems"},{"required":false,"id":"wwizardry:mycha_planks"},{"required":false,"id":"wwizardry:mycha_stairs"},{"required":false,"id":"wwizardry:mycha_slab"},{"required":false,"id":"wwizardry:mycha_door"},{"required":false,"id":"wwizardry:mycha_button"},{"required":false,"id":"wwizardry:mycha_pressure_plate"},{"required":false,"id":"wwizardry:mycha_sign"},{"required":false,"id":"wwizardry:mycha_hanging_sign"},{"required":false,"id":"wwizardry:mycha_fence"},{"required":false,"id":"wwizardry:mycha_fence_gate"}]} \ No newline at end of file +{ + "replace": false, + "values": [ + { + "required": false, + "id": "#wwizardry:mycha_stems" + }, + { + "required": false, + "id": "wwizardry:mycha_planks" + }, + { + "required": false, + "id": "wwizardry:mycha_stairs" + }, + { + "required": false, + "id": "wwizardry:mycha_slab" + }, + { + "required": false, + "id": "wwizardry:mycha_door" + }, + { + "required": false, + "id": "wwizardry:mycha_button" + }, + { + "required": false, + "id": "wwizardry:mycha_pressure_plate" + }, + { + "required": false, + "id": "wwizardry:mycha_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_hanging_sign" + }, + { + "required": false, + "id": "wwizardry:mycha_fence" + }, + { + "required": false, + "id": "wwizardry:mycha_fence_gate" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json b/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json index 7b40fc8a..210c7aa3 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json @@ -1 +1,202 @@ -{"temperature":0.55,"downfall":0.8,"has_precipitation":true,"effects":{"sky_color":7907327,"fog_color":12638463,"water_color":4159204,"water_fog_color":329011,"grass_color":2532189,"foliage_color":3585102,"mood_sound":{"sound":"ambient.cave","tick_delay":6000,"block_search_extent":8,"offset":2}},"spawn_costs":{},"carvers":{"air":["cave","cave_extra_underground","canyon"]},"features":[[],["lake_lava_underground","lake_lava_surface"],["amethyst_geode"],["monster_room","monster_room_deep"],[],[],["ore_dirt","ore_gravel","ore_granite_upper","ore_granite_lower","ore_diorite_upper","ore_diorite_lower","ore_andesite_upper","ore_andesite_lower","ore_tuff","ore_coal_upper","ore_coal_lower","ore_iron_upper","ore_iron_middle","ore_iron_small","ore_gold","ore_gold_lower","ore_redstone","ore_redstone_lower","ore_diamond","ore_diamond_large","ore_diamond_buried","ore_lapis","ore_lapis_buried","ore_copper","underwater_magma","disk_sand","disk_clay","disk_gravel","wwizardry:ore/rose_quartz_biome"],["sculk_vein","wwizardry:rare_sculk_patch","wwizardry:rare_moss_patch"],["spring_water","spring_lava"],["wwizardry:tree/denia","wwizardry:flower_patch","glow_lichen","patch_tall_grass_2","flower_plains","patch_grass_plain","brown_mushroom_normal","red_mushroom_normal","patch_sugar_cane","patch_pumpkin"],["freeze_top_layer"]],"spawners":{"ambient":[{"type":"bat","weight":10,"minCount":8,"maxCount":8}],"axolotls":[],"creature":[{"type":"sheep","weight":12,"minCount":4,"maxCount":4},{"type":"pig","weight":10,"minCount":4,"maxCount":4},{"type":"chicken","weight":10,"minCount":4,"maxCount":4},{"type":"cow","weight":8,"minCount":4,"maxCount":4},{"type":"wwizardry:snail","weight":6,"minCount":4,"maxCount":8}],"misc":[],"monster":[{"type":"spider","weight":100,"minCount":4,"maxCount":4},{"type":"zombie","weight":95,"minCount":4,"maxCount":4},{"type":"zombie_villager","weight":5,"minCount":1,"maxCount":1},{"type":"skeleton","weight":100,"minCount":4,"maxCount":4},{"type":"creeper","weight":100,"minCount":4,"maxCount":4},{"type":"slime","weight":100,"minCount":4,"maxCount":4},{"type":"enderman","weight":10,"minCount":1,"maxCount":4},{"type":"witch","weight":5,"minCount":1,"maxCount":1}],"underground_water_creature":[{"type":"glow_squid","weight":10,"minCount":4,"maxCount":6}],"water_ambient":[],"water_creature":[]}} \ No newline at end of file +{ + "temperature": 0.55, + "downfall": 0.8, + "has_precipitation": true, + "effects": { + "sky_color": 7907327, + "fog_color": 12638463, + "water_color": 4159204, + "water_fog_color": 329011, + "grass_color": 2532189, + "foliage_color": 3585102, + "mood_sound": { + "sound": "ambient.cave", + "tick_delay": 6000, + "block_search_extent": 8, + "offset": 2 + } + }, + "spawn_costs": {}, + "carvers": { + "air": [ + "cave", + "cave_extra_underground", + "canyon" + ] + }, + "features": [ + [], + [ + "lake_lava_underground", + "lake_lava_surface" + ], + [ + "amethyst_geode" + ], + [ + "monster_room", + "monster_room_deep" + ], + [], + [], + [ + "ore_dirt", + "ore_gravel", + "ore_granite_upper", + "ore_granite_lower", + "ore_diorite_upper", + "ore_diorite_lower", + "ore_andesite_upper", + "ore_andesite_lower", + "ore_tuff", + "ore_coal_upper", + "ore_coal_lower", + "ore_iron_upper", + "ore_iron_middle", + "ore_iron_small", + "ore_gold", + "ore_gold_lower", + "ore_redstone", + "ore_redstone_lower", + "ore_diamond", + "ore_diamond_large", + "ore_diamond_buried", + "ore_lapis", + "ore_lapis_buried", + "ore_copper", + "underwater_magma", + "disk_sand", + "disk_clay", + "disk_gravel", + "wwizardry:ore/rose_quartz_biome" + ], + [ + "sculk_vein", + "wwizardry:rare_sculk_patch", + "wwizardry:rare_moss_patch" + ], + [ + "spring_water", + "spring_lava" + ], + [ + "wwizardry:tree/denia", + "wwizardry:flower_patch", + "glow_lichen", + "patch_tall_grass_2", + "flower_plains", + "patch_grass_plain", + "brown_mushroom_normal", + "red_mushroom_normal", + "patch_sugar_cane", + "patch_pumpkin" + ], + [ + "freeze_top_layer" + ] + ], + "spawners": { + "ambient": [ + { + "type": "bat", + "weight": 10, + "minCount": 8, + "maxCount": 8 + } + ], + "axolotls": [], + "creature": [ + { + "type": "sheep", + "weight": 12, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "pig", + "weight": 10, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "chicken", + "weight": 10, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "cow", + "weight": 8, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "wwizardry:snail", + "weight": 6, + "minCount": 4, + "maxCount": 8 + } + ], + "misc": [], + "monster": [ + { + "type": "spider", + "weight": 100, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "zombie", + "weight": 95, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "zombie_villager", + "weight": 5, + "minCount": 1, + "maxCount": 1 + }, + { + "type": "skeleton", + "weight": 100, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "creeper", + "weight": 100, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "slime", + "weight": 100, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "enderman", + "weight": 10, + "minCount": 1, + "maxCount": 4 + }, + { + "type": "witch", + "weight": 5, + "minCount": 1, + "maxCount": 1 + } + ], + "underground_water_creature": [ + { + "type": "glow_squid", + "weight": 10, + "minCount": 4, + "maxCount": 6 + } + ], + "water_ambient": [], + "water_creature": [] + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json b/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json index 024fab20..457d3a39 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json @@ -1 +1,190 @@ -{"temperature":2,"downfall":0,"has_precipitation":false,"effects":{"sky_color":5453248,"fog_color":8298215,"water_color":10143220,"water_fog_color":2516631,"grass_color_modifier":"none","mood_sound":{"sound":"ambient.cave","tick_delay":6000,"block_search_extent":8,"offset":2},"music":{"sound":"music.overworld.desert","min_delay":12000,"max_delay":24000,"replace_current_music":false}},"spawners":{"ambient":[{"type":"bat","weight":10,"minCount":8,"maxCount":8}],"axolotls":[],"creature":[{"type":"wwizardry:snail","weight":6,"minCount":4,"maxCount":8}],"misc":[],"monster":[{"type":"spider","weight":100,"minCount":4,"maxCount":4},{"type":"zombie","weight":19,"minCount":4,"maxCount":4},{"type":"zombie_villager","weight":1,"minCount":1,"maxCount":1},{"type":"skeleton","weight":100,"minCount":4,"maxCount":4},{"type":"creeper","weight":100,"minCount":4,"maxCount":4},{"type":"slime","weight":100,"minCount":4,"maxCount":4},{"type":"enderman","weight":10,"minCount":1,"maxCount":4},{"type":"witch","weight":5,"minCount":1,"maxCount":1},{"type":"husk","weight":80,"minCount":4,"maxCount":4}],"underground_water_creature":[{"type":"glow_squid","weight":10,"minCount":4,"maxCount":6}],"water_ambient":[],"water_creature":[]},"spawn_costs":{},"carvers":{"air":["cave","cave_extra_underground","canyon"]},"features":[[],["lake_lava_underground","lake_lava_surface"],["amethyst_geode"],["fossil_upper","fossil_lower","monster_room","monster_room_deep"],["desert_well"],[],["ore_dirt","ore_gravel","ore_granite_upper","ore_granite_lower","ore_diorite_upper","ore_diorite_lower","ore_andesite_upper","ore_andesite_lower","ore_tuff","ore_coal_upper","ore_coal_lower","ore_iron_upper","ore_iron_middle","ore_iron_small","ore_gold","ore_gold_lower","ore_redstone","ore_redstone_lower","ore_diamond","ore_diamond_large","ore_diamond_buried","ore_lapis","ore_lapis_buried","ore_copper","underwater_magma","disk_sand","disk_clay","disk_gravel","wwizardry:ore/rose_quartz_biome"],[],["spring_water","spring_lava"],["wwizardry:tree/mycha","wwizardry:mycha_spread","glow_lichen","flower_default","patch_grass_badlands","patch_dead_bush_2","brown_mushroom_normal","red_mushroom_normal","patch_sugar_cane_desert","patch_pumpkin","patch_cactus_desert"],["freeze_top_layer"]]} \ No newline at end of file +{ + "temperature": 2, + "downfall": 0, + "has_precipitation": false, + "effects": { + "sky_color": 5453248, + "fog_color": 8298215, + "water_color": 10143220, + "water_fog_color": 2516631, + "grass_color_modifier": "none", + "mood_sound": { + "sound": "ambient.cave", + "tick_delay": 6000, + "block_search_extent": 8, + "offset": 2 + }, + "music": { + "sound": "music.overworld.desert", + "min_delay": 12000, + "max_delay": 24000, + "replace_current_music": false + } + }, + "spawners": { + "ambient": [ + { + "type": "bat", + "weight": 10, + "minCount": 8, + "maxCount": 8 + } + ], + "axolotls": [], + "creature": [ + { + "type": "wwizardry:snail", + "weight": 6, + "minCount": 4, + "maxCount": 8 + } + ], + "misc": [], + "monster": [ + { + "type": "spider", + "weight": 100, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "zombie", + "weight": 19, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "zombie_villager", + "weight": 1, + "minCount": 1, + "maxCount": 1 + }, + { + "type": "skeleton", + "weight": 100, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "creeper", + "weight": 100, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "slime", + "weight": 100, + "minCount": 4, + "maxCount": 4 + }, + { + "type": "enderman", + "weight": 10, + "minCount": 1, + "maxCount": 4 + }, + { + "type": "witch", + "weight": 5, + "minCount": 1, + "maxCount": 1 + }, + { + "type": "husk", + "weight": 80, + "minCount": 4, + "maxCount": 4 + } + ], + "underground_water_creature": [ + { + "type": "glow_squid", + "weight": 10, + "minCount": 4, + "maxCount": 6 + } + ], + "water_ambient": [], + "water_creature": [] + }, + "spawn_costs": {}, + "carvers": { + "air": [ + "cave", + "cave_extra_underground", + "canyon" + ] + }, + "features": [ + [], + [ + "lake_lava_underground", + "lake_lava_surface" + ], + [ + "amethyst_geode" + ], + [ + "fossil_upper", + "fossil_lower", + "monster_room", + "monster_room_deep" + ], + [ + "desert_well" + ], + [], + [ + "ore_dirt", + "ore_gravel", + "ore_granite_upper", + "ore_granite_lower", + "ore_diorite_upper", + "ore_diorite_lower", + "ore_andesite_upper", + "ore_andesite_lower", + "ore_tuff", + "ore_coal_upper", + "ore_coal_lower", + "ore_iron_upper", + "ore_iron_middle", + "ore_iron_small", + "ore_gold", + "ore_gold_lower", + "ore_redstone", + "ore_redstone_lower", + "ore_diamond", + "ore_diamond_large", + "ore_diamond_buried", + "ore_lapis", + "ore_lapis_buried", + "ore_copper", + "underwater_magma", + "disk_sand", + "disk_clay", + "disk_gravel", + "wwizardry:ore/rose_quartz_biome" + ], + [], + [ + "spring_water", + "spring_lava" + ], + [ + "wwizardry:tree/mycha", + "wwizardry:mycha_spread", + "glow_lichen", + "flower_default", + "patch_grass_badlands", + "patch_dead_bush_2", + "brown_mushroom_normal", + "red_mushroom_normal", + "patch_sugar_cane_desert", + "patch_pumpkin", + "patch_cactus_desert" + ], + [ + "freeze_top_layer" + ] + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/cool_flower.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/cool_flower.json index af255a74..d46da405 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/cool_flower.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/cool_flower.json @@ -1 +1,41 @@ -{"type":"flower","config":{"tries":16,"xz_spread":8,"y_spread":2,"feature":{"placement":[{"type":"block_predicate_filter","predicate":{"type":"matching_blocks","blocks":"air"}}],"feature":{"type":"simple_block","config":{"to_place":{"type":"weighted_state_provider","entries":[{"data":{"Name":"wwizardry:sculkflower"},"weight":1},{"data":{"Name":"wwizardry:indigo_caeruleum"},"weight":1}]}}}}}} \ No newline at end of file +{ + "type": "flower", + "config": { + "tries": 16, + "xz_spread": 8, + "y_spread": 2, + "feature": { + "placement": [ + { + "type": "block_predicate_filter", + "predicate": { + "type": "matching_blocks", + "blocks": "air" + } + } + ], + "feature": { + "type": "simple_block", + "config": { + "to_place": { + "type": "weighted_state_provider", + "entries": [ + { + "data": { + "Name": "wwizardry:sculkflower" + }, + "weight": 1 + }, + { + "data": { + "Name": "wwizardry:indigo_caeruleum" + }, + "weight": 1 + } + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_growth.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_growth.json index d8ce179f..c20686f1 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_growth.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_growth.json @@ -1 +1,28 @@ -{"type":"minecraft:simple_block","config":{"to_place":{"type":"minecraft:weighted_state_provider","entries":[{"data":{"Name":"wwizardry:mycha_fungus"},"weight":2},{"data":{"Name":"wwizardry:indigo_caeruleum"},"weight":2},{"data":{"Name":"wwizardry:mycha_roots"},"weight":5}]}}} \ No newline at end of file +{ + "type": "minecraft:simple_block", + "config": { + "to_place": { + "type": "minecraft:weighted_state_provider", + "entries": [ + { + "data": { + "Name": "wwizardry:mycha_fungus" + }, + "weight": 2 + }, + { + "data": { + "Name": "wwizardry:indigo_caeruleum" + }, + "weight": 2 + }, + { + "data": { + "Name": "wwizardry:mycha_roots" + }, + "weight": 5 + } + ] + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_spread.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_spread.json index f8dd66e1..2ef396e0 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_spread.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/mycha_spread.json @@ -1 +1,27 @@ -{"type":"vegetation_patch","config":{"depth":1,"extra_bottom_block_chance":0,"extra_edge_column_chance":0.75,"ground_state":{"type":"simple_state_provider","state":{"Name":"wwizardry:mycelial_sand"}},"replaceable":"#wwizardry:mycha_growth","surface":"floor","vegetation_chance":0.3,"vegetation_feature":{"feature":"wwizardry:mycha_growth","placement":[]},"vertical_range":5,"xz_radius":{"type":"uniform","max_inclusive":2,"min_inclusive":1}}} \ No newline at end of file +{ + "type": "vegetation_patch", + "config": { + "depth": 1, + "extra_bottom_block_chance": 0, + "extra_edge_column_chance": 0.75, + "ground_state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:mycelial_sand" + } + }, + "replaceable": "#wwizardry:mycha_growth", + "surface": "floor", + "vegetation_chance": 0.3, + "vegetation_feature": { + "feature": "wwizardry:mycha_growth", + "placement": [] + }, + "vertical_range": 5, + "xz_radius": { + "type": "uniform", + "max_inclusive": 2, + "min_inclusive": 1 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/ore/rose_quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/ore/rose_quartz.json index 9dafa0b1..d3df13f5 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/ore/rose_quartz.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/ore/rose_quartz.json @@ -1 +1,27 @@ -{"type":"ore","config":{"discard_chance_on_air_exposure":0,"size":6,"targets":[{"state":{"Name":"wwizardry:rose_quartz_ore"},"target":{"predicate_type":"tag_match","tag":"stone_ore_replaceables"}},{"state":{"Name":"wwizardry:deepslate_rose_quartz_ore"},"target":{"predicate_type":"tag_match","tag":"deepslate_ore_replaceables"}}]}} \ No newline at end of file +{ + "type": "ore", + "config": { + "discard_chance_on_air_exposure": 0, + "size": 6, + "targets": [ + { + "state": { + "Name": "wwizardry:rose_quartz_ore" + }, + "target": { + "predicate_type": "tag_match", + "tag": "stone_ore_replaceables" + } + }, + { + "state": { + "Name": "wwizardry:deepslate_rose_quartz_ore" + }, + "target": { + "predicate_type": "tag_match", + "tag": "deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_moss_patch.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_moss_patch.json index 8322f19c..e64d6693 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_moss_patch.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_moss_patch.json @@ -1 +1,27 @@ -{"type":"vegetation_patch","config":{"depth":1,"extra_bottom_block_chance":0,"extra_edge_column_chance":0.8,"ground_state":{"type":"simple_state_provider","state":{"Name":"moss_block"}},"replaceable":"#moss_replaceable","surface":"floor","vegetation_chance":0.8,"vegetation_feature":{"feature":"moss_vegetation","placement":[]},"vertical_range":5,"xz_radius":{"type":"uniform","max_inclusive":6,"min_inclusive":2}}} \ No newline at end of file +{ + "type": "vegetation_patch", + "config": { + "depth": 1, + "extra_bottom_block_chance": 0, + "extra_edge_column_chance": 0.8, + "ground_state": { + "type": "simple_state_provider", + "state": { + "Name": "moss_block" + } + }, + "replaceable": "#moss_replaceable", + "surface": "floor", + "vegetation_chance": 0.8, + "vegetation_feature": { + "feature": "moss_vegetation", + "placement": [] + }, + "vertical_range": 5, + "xz_radius": { + "type": "uniform", + "max_inclusive": 6, + "min_inclusive": 2 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_sculk_patch.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_sculk_patch.json index 1f8e8e36..4864da9a 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_sculk_patch.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/rare_sculk_patch.json @@ -1 +1,12 @@ -{"type":"sculk_patch","config":{"amount_per_charge":16,"catalyst_chance":0.5,"charge_count":5,"extra_rare_growths":0,"growth_rounds":0,"spread_attempts":32,"spread_rounds":1}} \ No newline at end of file +{ + "type": "sculk_patch", + "config": { + "amount_per_charge": 16, + "catalyst_chance": 0.5, + "charge_count": 5, + "extra_rare_growths": 0, + "growth_rounds": 0, + "spread_attempts": 32, + "spread_rounds": 1 + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/tree/denia.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/tree/denia.json index e397229f..4aaa568d 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/tree/denia.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/tree/denia.json @@ -1 +1,46 @@ -{"type":"tree","config":{"force_dirt":false,"ignore_vines":true,"decorators":[],"minimum_size":{"type":"two_layers_feature_size","min_clipped_height":3},"dirt_provider":{"type":"simple_state_provider","state":{"Name":"minecraft:dirt"}},"trunk_provider":{"type":"simple_state_provider","state":{"Name":"wwizardry:denia_log"}},"foliage_provider":{"type":"simple_state_provider","state":{"Name":"wwizardry:denia_leaves"}},"trunk_placer":{"type":"forking_trunk_placer","base_height":5,"height_rand_a":3,"height_rand_b":1},"foliage_placer":{"type":"cherry_foliage_placer","radius":3,"offset":0,"height":4,"wide_bottom_layer_hole_chance":0.15,"corner_hole_chance":0.1,"hanging_leaves_chance":0.3,"hanging_leaves_extension_chance":0.2}}} \ No newline at end of file +{ + "type": "tree", + "config": { + "force_dirt": false, + "ignore_vines": true, + "decorators": [], + "minimum_size": { + "type": "two_layers_feature_size", + "min_clipped_height": 3 + }, + "dirt_provider": { + "type": "simple_state_provider", + "state": { + "Name": "minecraft:dirt" + } + }, + "trunk_provider": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:denia_log" + } + }, + "foliage_provider": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:denia_leaves" + } + }, + "trunk_placer": { + "type": "forking_trunk_placer", + "base_height": 5, + "height_rand_a": 3, + "height_rand_b": 1 + }, + "foliage_placer": { + "type": "cherry_foliage_placer", + "radius": 3, + "offset": 0, + "height": 4, + "wide_bottom_layer_hole_chance": 0.15, + "corner_hole_chance": 0.1, + "hanging_leaves_chance": 0.3, + "hanging_leaves_extension_chance": 0.2 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/tree/mycha.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/tree/mycha.json index 0f44ef27..89553784 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/tree/mycha.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/tree/mycha.json @@ -1 +1,83 @@ -{"type":"huge_fungus","config":{"decor_state":{"Name":"shroomlight"},"hat_state":{"Name":"wwizardry:mycha_wart"},"stem_state":{"Name":"wwizardry:mycha_stem","Properties":{"axis":"y"}},"valid_base_block":{"Name":"wwizardry:mycelial_sand"},"planted":false,"replaceable_blocks":{"type":"minecraft:matching_blocks","blocks":["minecraft:oak_sapling","minecraft:spruce_sapling","minecraft:birch_sapling","minecraft:jungle_sapling","minecraft:acacia_sapling","minecraft:cherry_sapling","minecraft:dark_oak_sapling","minecraft:mangrove_propagule","minecraft:dandelion","minecraft:torchflower","minecraft:poppy","minecraft:blue_orchid","minecraft:allium","minecraft:azure_bluet","minecraft:red_tulip","minecraft:orange_tulip","minecraft:white_tulip","minecraft:pink_tulip","minecraft:oxeye_daisy","minecraft:cornflower","minecraft:wither_rose","minecraft:lily_of_the_valley","minecraft:brown_mushroom","minecraft:red_mushroom","minecraft:wheat","minecraft:sugar_cane","minecraft:attached_pumpkin_stem","minecraft:attached_melon_stem","minecraft:pumpkin_stem","minecraft:melon_stem","minecraft:lily_pad","minecraft:nether_wart","minecraft:cocoa","minecraft:carrots","minecraft:potatoes","minecraft:chorus_plant","minecraft:chorus_flower","minecraft:torchflower_crop","minecraft:pitcher_crop","minecraft:beetroots","minecraft:sweet_berry_bush","minecraft:warped_fungus","minecraft:crimson_fungus","minecraft:weeping_vines","minecraft:weeping_vines_plant","minecraft:twisting_vines","minecraft:twisting_vines_plant","minecraft:cave_vines","minecraft:cave_vines_plant","minecraft:spore_blossom","minecraft:azalea","minecraft:flowering_azalea","minecraft:moss_carpet","minecraft:pink_petals","minecraft:big_dripleaf","minecraft:big_dripleaf_stem","minecraft:small_dripleaf"]}}} \ No newline at end of file +{ + "type": "huge_fungus", + "config": { + "decor_state": { + "Name": "shroomlight" + }, + "hat_state": { + "Name": "wwizardry:mycha_wart" + }, + "stem_state": { + "Name": "wwizardry:mycha_stem", + "Properties": { + "axis": "y" + } + }, + "valid_base_block": { + "Name": "wwizardry:mycelial_sand" + }, + "planted": false, + "replaceable_blocks": { + "type": "minecraft:matching_blocks", + "blocks": [ + "minecraft:oak_sapling", + "minecraft:spruce_sapling", + "minecraft:birch_sapling", + "minecraft:jungle_sapling", + "minecraft:acacia_sapling", + "minecraft:cherry_sapling", + "minecraft:dark_oak_sapling", + "minecraft:mangrove_propagule", + "minecraft:dandelion", + "minecraft:torchflower", + "minecraft:poppy", + "minecraft:blue_orchid", + "minecraft:allium", + "minecraft:azure_bluet", + "minecraft:red_tulip", + "minecraft:orange_tulip", + "minecraft:white_tulip", + "minecraft:pink_tulip", + "minecraft:oxeye_daisy", + "minecraft:cornflower", + "minecraft:wither_rose", + "minecraft:lily_of_the_valley", + "minecraft:brown_mushroom", + "minecraft:red_mushroom", + "minecraft:wheat", + "minecraft:sugar_cane", + "minecraft:attached_pumpkin_stem", + "minecraft:attached_melon_stem", + "minecraft:pumpkin_stem", + "minecraft:melon_stem", + "minecraft:lily_pad", + "minecraft:nether_wart", + "minecraft:cocoa", + "minecraft:carrots", + "minecraft:potatoes", + "minecraft:chorus_plant", + "minecraft:chorus_flower", + "minecraft:torchflower_crop", + "minecraft:pitcher_crop", + "minecraft:beetroots", + "minecraft:sweet_berry_bush", + "minecraft:warped_fungus", + "minecraft:crimson_fungus", + "minecraft:weeping_vines", + "minecraft:weeping_vines_plant", + "minecraft:twisting_vines", + "minecraft:twisting_vines_plant", + "minecraft:cave_vines", + "minecraft:cave_vines_plant", + "minecraft:spore_blossom", + "minecraft:azalea", + "minecraft:flowering_azalea", + "minecraft:moss_carpet", + "minecraft:pink_petals", + "minecraft:big_dripleaf", + "minecraft:big_dripleaf_stem", + "minecraft:small_dripleaf" + ] + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/flower_patch.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/flower_patch.json index ff3859a9..72dc3f3f 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/flower_patch.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/flower_patch.json @@ -1 +1,25 @@ -{"feature":"wwizardry:cool_flower","placement":[{"type":"noise_threshold_count","above_noise":6,"below_noise":16,"noise_level":-0.5},{"type":"rarity_filter","chance":8},{"type":"in_square"},{"type":"heightmap","heightmap":"MOTION_BLOCKING"},{"type":"biome"}]} \ No newline at end of file +{ + "feature": "wwizardry:cool_flower", + "placement": [ + { + "type": "noise_threshold_count", + "above_noise": 6, + "below_noise": 16, + "noise_level": -0.5 + }, + { + "type": "rarity_filter", + "chance": 8 + }, + { + "type": "in_square" + }, + { + "type": "heightmap", + "heightmap": "MOTION_BLOCKING" + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/mycha_spread.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/mycha_spread.json index 2c719321..8139938b 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/mycha_spread.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/mycha_spread.json @@ -1 +1,19 @@ -{"feature":"wwizardry:mycha_growth","placement":[{"type":"count","count":48},{"type":"in_square"},{"type":"heightmap","heightmap":"MOTION_BLOCKING"},{"type":"biome"}]} \ No newline at end of file +{ + "feature": "wwizardry:mycha_growth", + "placement": [ + { + "type": "count", + "count": 48 + }, + { + "type": "in_square" + }, + { + "type": "heightmap", + "heightmap": "MOTION_BLOCKING" + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/ore/rose_quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/ore/rose_quartz.json index 1d552d9e..22d67910 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/ore/rose_quartz.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/ore/rose_quartz.json @@ -1 +1,27 @@ -{"feature":"wwizardry:ore/rose_quartz","placement":[{"type":"count","count":13},{"type":"in_square"},{"type":"height_range","height":{"type":"trapezoid","max_inclusive":{"above_bottom":96},"min_inclusive":{"above_bottom":-16}}},{"type":"biome"}]} \ No newline at end of file +{ + "feature": "wwizardry:ore/rose_quartz", + "placement": [ + { + "type": "count", + "count": 13 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "trapezoid", + "max_inclusive": { + "above_bottom": 96 + }, + "min_inclusive": { + "above_bottom": -16 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/ore/rose_quartz_biome.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/ore/rose_quartz_biome.json index d0a48690..c290e6cb 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/ore/rose_quartz_biome.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/ore/rose_quartz_biome.json @@ -1 +1,27 @@ -{"feature":"wwizardry:ore/rose_quartz","placement":[{"type":"count","count":6},{"type":"in_square"},{"type":"height_range","height":{"type":"trapezoid","max_inclusive":{"above_bottom":128},"min_inclusive":{"above_bottom":0}}},{"type":"biome"}]} \ No newline at end of file +{ + "feature": "wwizardry:ore/rose_quartz", + "placement": [ + { + "type": "count", + "count": 6 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "trapezoid", + "max_inclusive": { + "above_bottom": 128 + }, + "min_inclusive": { + "above_bottom": 0 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/rare_moss_patch.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/rare_moss_patch.json index 14056d8a..da533894 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/rare_moss_patch.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/rare_moss_patch.json @@ -1 +1,32 @@ -{"feature":"wwizardry:rare_moss_patch","placement":[{"type":"count","count":16},{"type":"in_square"},{"type":"height_range","height":{"type":"uniform","max_inclusive":{"absolute":320},"min_inclusive":{"absolute":56}}},{"type":"biome"},{"type":"random_offset","xz_spread":3,"y_spread":1}]} \ No newline at end of file +{ + "feature": "wwizardry:rare_moss_patch", + "placement": [ + { + "type": "count", + "count": 16 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "uniform", + "max_inclusive": { + "absolute": 320 + }, + "min_inclusive": { + "absolute": 56 + } + } + }, + { + "type": "biome" + }, + { + "type": "random_offset", + "xz_spread": 3, + "y_spread": 1 + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/rare_sculk_patch.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/rare_sculk_patch.json index 2af24e05..9d19a513 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/rare_sculk_patch.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/rare_sculk_patch.json @@ -1 +1,27 @@ -{"feature":"wwizardry:rare_sculk_patch","placement":[{"type":"count","count":8},{"type":"in_square"},{"type":"height_range","height":{"type":"uniform","max_inclusive":{"absolute":320},"min_inclusive":{"absolute":32}}},{"type":"biome"}]} \ No newline at end of file +{ + "feature": "wwizardry:rare_sculk_patch", + "placement": [ + { + "type": "count", + "count": 8 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "uniform", + "max_inclusive": { + "absolute": 320 + }, + "min_inclusive": { + "absolute": 32 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/tree/denia.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/tree/denia.json index 8810731a..6d9b4c3e 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/tree/denia.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/tree/denia.json @@ -1 +1,51 @@ -{"feature":"wwizardry:tree/denia","placement":[{"type":"count","count":{"type":"weighted_list","distribution":[{"data":0,"weight":14},{"data":1,"weight":4},{"data":2,"weight":2}]}},{"type":"in_square"},{"type":"surface_water_depth_filter","max_water_depth":0},{"type":"heightmap","heightmap":"OCEAN_FLOOR"},{"type":"block_predicate_filter","predicate":{"type":"would_survive","state":{"Name":"wwizardry:denia_sapling","Properties":{"stage":"0"}}}},{"type":"biome"}]} \ No newline at end of file +{ + "feature": "wwizardry:tree/denia", + "placement": [ + { + "type": "count", + "count": { + "type": "weighted_list", + "distribution": [ + { + "data": 0, + "weight": 14 + }, + { + "data": 1, + "weight": 4 + }, + { + "data": 2, + "weight": 2 + } + ] + } + }, + { + "type": "in_square" + }, + { + "type": "surface_water_depth_filter", + "max_water_depth": 0 + }, + { + "type": "heightmap", + "heightmap": "OCEAN_FLOOR" + }, + { + "type": "block_predicate_filter", + "predicate": { + "type": "would_survive", + "state": { + "Name": "wwizardry:denia_sapling", + "Properties": { + "stage": "0" + } + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/tree/mycha.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/tree/mycha.json index 92d160bb..ec417c66 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/tree/mycha.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/tree/mycha.json @@ -1 +1,48 @@ -{"feature":"wwizardry:tree/mycha","placement":[{"type":"count","count":{"type":"weighted_list","distribution":[{"data":4,"weight":1},{"data":3,"weight":2},{"data":7,"weight":3}]}},{"type":"in_square"},{"type":"surface_water_depth_filter","max_water_depth":0},{"type":"heightmap","heightmap":"OCEAN_FLOOR"},{"type":"block_predicate_filter","predicate":{"type":"would_survive","state":{"Name":"wwizardry:mycha_fungus"}}},{"type":"biome"}]} \ No newline at end of file +{ + "feature": "wwizardry:tree/mycha", + "placement": [ + { + "type": "count", + "count": { + "type": "weighted_list", + "distribution": [ + { + "data": 4, + "weight": 1 + }, + { + "data": 3, + "weight": 2 + }, + { + "data": 7, + "weight": 3 + } + ] + } + }, + { + "type": "in_square" + }, + { + "type": "surface_water_depth_filter", + "max_water_depth": 0 + }, + { + "type": "heightmap", + "heightmap": "OCEAN_FLOOR" + }, + { + "type": "block_predicate_filter", + "predicate": { + "type": "would_survive", + "state": { + "Name": "wwizardry:mycha_fungus" + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/staticdata/architecture_extensions/basalt_bricks.json b/common/src/generated/resources/staticdata/architecture_extensions/basalt_bricks.json index 725bbd63..cf04ffbc 100644 --- a/common/src/generated/resources/staticdata/architecture_extensions/basalt_bricks.json +++ b/common/src/generated/resources/staticdata/architecture_extensions/basalt_bricks.json @@ -1 +1,16 @@ -{"base_block":"wwizardry:basalt_bricks","textures":"wwizardry:block/basalt_bricks","recipes":"stonecutting","map_color":"gray","types_to_generate":["arch","octagonal_column","round_arch","roof","wall_column","wall_post","facade","rod"]} \ No newline at end of file +{ + "base_block": "wwizardry:basalt_bricks", + "textures": "wwizardry:block/basalt_bricks", + "recipes": "stonecutting", + "map_color": "gray", + "types_to_generate": [ + "arch", + "octagonal_column", + "round_arch", + "roof", + "wall_column", + "wall_post", + "facade", + "rod" + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/staticdata/architecture_extensions/basalt_tiles.json b/common/src/generated/resources/staticdata/architecture_extensions/basalt_tiles.json index bac47c38..1a7f9b1c 100644 --- a/common/src/generated/resources/staticdata/architecture_extensions/basalt_tiles.json +++ b/common/src/generated/resources/staticdata/architecture_extensions/basalt_tiles.json @@ -1 +1,16 @@ -{"base_block":"wwizardry:basalt_tiles","textures":"wwizardry:block/basalt_tiles","recipes":"stonecutting","map_color":"gray","types_to_generate":["arch","octagonal_column","round_arch","roof","wall_column","wall_post","facade","rod"]} \ No newline at end of file +{ + "base_block": "wwizardry:basalt_tiles", + "textures": "wwizardry:block/basalt_tiles", + "recipes": "stonecutting", + "map_color": "gray", + "types_to_generate": [ + "arch", + "octagonal_column", + "round_arch", + "roof", + "wall_column", + "wall_post", + "facade", + "rod" + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/staticdata/architecture_extensions/chiseled_basalt.json b/common/src/generated/resources/staticdata/architecture_extensions/chiseled_basalt.json index edb637b7..3b9e3953 100644 --- a/common/src/generated/resources/staticdata/architecture_extensions/chiseled_basalt.json +++ b/common/src/generated/resources/staticdata/architecture_extensions/chiseled_basalt.json @@ -1 +1,16 @@ -{"base_block":"wwizardry:chiseled_basalt","textures":"wwizardry:block/chiseled_basalt","recipes":"stonecutting","map_color":"gray","types_to_generate":["arch","octagonal_column","round_arch","roof","wall_column","wall_post","facade","rod"]} \ No newline at end of file +{ + "base_block": "wwizardry:chiseled_basalt", + "textures": "wwizardry:block/chiseled_basalt", + "recipes": "stonecutting", + "map_color": "gray", + "types_to_generate": [ + "arch", + "octagonal_column", + "round_arch", + "roof", + "wall_column", + "wall_post", + "facade", + "rod" + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/staticdata/architecture_extensions/denia.json b/common/src/generated/resources/staticdata/architecture_extensions/denia.json index d00d3c4d..f0243e10 100644 --- a/common/src/generated/resources/staticdata/architecture_extensions/denia.json +++ b/common/src/generated/resources/staticdata/architecture_extensions/denia.json @@ -1 +1,21 @@ -{"name":"denia","base_block":"wwizardry:denia_log","textures":"wood_with_log","recipes":"sawing","map_color":"ice","types_to_generate":["facade","round_fence_post","round_arch","octagonal_column","beam","fence_post","joist","crown_molding","post_cap","post_lantern","lattice","transom"]} \ No newline at end of file +{ + "name": "denia", + "base_block": "wwizardry:denia_log", + "textures": "wood_with_log", + "recipes": "sawing", + "map_color": "ice", + "types_to_generate": [ + "facade", + "round_fence_post", + "round_arch", + "octagonal_column", + "beam", + "fence_post", + "joist", + "crown_molding", + "post_cap", + "post_lantern", + "lattice", + "transom" + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/staticdata/architecture_extensions/mossy_basalt_bricks.json b/common/src/generated/resources/staticdata/architecture_extensions/mossy_basalt_bricks.json index c73e6af0..ecedefbc 100644 --- a/common/src/generated/resources/staticdata/architecture_extensions/mossy_basalt_bricks.json +++ b/common/src/generated/resources/staticdata/architecture_extensions/mossy_basalt_bricks.json @@ -1 +1,16 @@ -{"base_block":"wwizardry:mossy_basalt_bricks","textures":"wwizardry:block/mossy_basalt_bricks","recipes":"stonecutting","map_color":"gray","types_to_generate":["arch","octagonal_column","round_arch","roof","wall_column","wall_post","facade","rod"]} \ No newline at end of file +{ + "base_block": "wwizardry:mossy_basalt_bricks", + "textures": "wwizardry:block/mossy_basalt_bricks", + "recipes": "stonecutting", + "map_color": "gray", + "types_to_generate": [ + "arch", + "octagonal_column", + "round_arch", + "roof", + "wall_column", + "wall_post", + "facade", + "rod" + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/staticdata/architecture_extensions/mossy_basalt_tiles.json b/common/src/generated/resources/staticdata/architecture_extensions/mossy_basalt_tiles.json index b91773b9..ea6928c7 100644 --- a/common/src/generated/resources/staticdata/architecture_extensions/mossy_basalt_tiles.json +++ b/common/src/generated/resources/staticdata/architecture_extensions/mossy_basalt_tiles.json @@ -1 +1,16 @@ -{"base_block":"wwizardry:mossy_basalt_tiles","textures":"wwizardry:block/mossy_basalt_tiles","recipes":"stonecutting","map_color":"gray","types_to_generate":["arch","octagonal_column","round_arch","roof","wall_column","wall_post","facade","rod"]} \ No newline at end of file +{ + "base_block": "wwizardry:mossy_basalt_tiles", + "textures": "wwizardry:block/mossy_basalt_tiles", + "recipes": "stonecutting", + "map_color": "gray", + "types_to_generate": [ + "arch", + "octagonal_column", + "round_arch", + "roof", + "wall_column", + "wall_post", + "facade", + "rod" + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/staticdata/architecture_extensions/mossy_chiseled_basalt.json b/common/src/generated/resources/staticdata/architecture_extensions/mossy_chiseled_basalt.json index d7832f77..c73409e9 100644 --- a/common/src/generated/resources/staticdata/architecture_extensions/mossy_chiseled_basalt.json +++ b/common/src/generated/resources/staticdata/architecture_extensions/mossy_chiseled_basalt.json @@ -1 +1,16 @@ -{"base_block":"wwizardry:mossy_chiseled_basalt","textures":"wwizardry:block/mossy_chiseled_basalt","recipes":"stonecutting","map_color":"gray","types_to_generate":["arch","octagonal_column","round_arch","roof","wall_column","wall_post","facade","rod"]} \ No newline at end of file +{ + "base_block": "wwizardry:mossy_chiseled_basalt", + "textures": "wwizardry:block/mossy_chiseled_basalt", + "recipes": "stonecutting", + "map_color": "gray", + "types_to_generate": [ + "arch", + "octagonal_column", + "round_arch", + "roof", + "wall_column", + "wall_post", + "facade", + "rod" + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/staticdata/architecture_extensions/mycha.json b/common/src/generated/resources/staticdata/architecture_extensions/mycha.json index f06896e7..f9828c43 100644 --- a/common/src/generated/resources/staticdata/architecture_extensions/mycha.json +++ b/common/src/generated/resources/staticdata/architecture_extensions/mycha.json @@ -1 +1,21 @@ -{"name":"mycha","base_block":"wwizardry:mycha_stem","textures":"wood_with_stem","recipes":"sawing","map_color":"purple","types_to_generate":["facade","round_fence_post","round_arch","octagonal_column","beam","fence_post","joist","crown_molding","post_cap","post_lantern","lattice","transom"]} \ No newline at end of file +{ + "name": "mycha", + "base_block": "wwizardry:mycha_stem", + "textures": "wood_with_stem", + "recipes": "sawing", + "map_color": "purple", + "types_to_generate": [ + "facade", + "round_fence_post", + "round_arch", + "octagonal_column", + "beam", + "fence_post", + "joist", + "crown_molding", + "post_cap", + "post_lantern", + "lattice", + "transom" + ] +} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java b/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java index cdcf3b26..6c900e61 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java @@ -28,7 +28,8 @@ public static void init() { BlockInitializer.MODULO_COMPARATOR, BlockInitializer.REINFORCED_GLASS, BlockInitializer.REINFORCED_GLASS_PANE, - BlockInitializer.MYCHA_ROOTS + BlockInitializer.MYCHA_ROOTS, + BlockInitializer.WAXED_COPPER_LENS ); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java index 19401d27..f84e6325 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/content/events/ClientEvents.java @@ -8,7 +8,6 @@ import dev.sweetberry.wwizardry.content.block.BlockInitializer; import dev.sweetberry.wwizardry.client.render.blockentity.AltarCatalyzerBlockEntityRenderer; import dev.sweetberry.wwizardry.client.render.blockentity.AltarPedestalBlockEntityRenderer; -import dev.sweetberry.wwizardry.content.block.sign.ModdedSignBlock; import dev.sweetberry.wwizardry.content.component.BoatComponent; import dev.sweetberry.wwizardry.content.entity.EntityInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; @@ -17,8 +16,6 @@ import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.blockentity.HangingSignRenderer; -import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.item.ClampedItemPropertyFunction; import net.minecraft.world.entity.Entity; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index 2391c5ee..0d23da4d 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -9,14 +9,12 @@ import dev.sweetberry.wwizardry.content.events.EventInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.net.NetworkingInitializer; -import dev.sweetberry.wwizardry.content.painting.PaintingInitializer; import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.minecraft.advancements.CriterionTrigger; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.decoration.PaintingVariant; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.crafting.RecipeSerializer; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java index f096daa6..7895d7a5 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java @@ -12,6 +12,7 @@ import dev.sweetberry.wwizardry.content.block.nature.RootedFlowerBlock; import dev.sweetberry.wwizardry.content.block.nature.RootedPlantBlock; import dev.sweetberry.wwizardry.content.block.nature.SculkflowerBlock; +import dev.sweetberry.wwizardry.content.block.redstone.CopperLensBlock; import dev.sweetberry.wwizardry.content.block.redstone.LogicGateBlock; import dev.sweetberry.wwizardry.content.block.redstone.ResonatorBlock; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; @@ -225,6 +226,19 @@ public class BlockInitializer { ) ); + public static final Lazy WAXED_COPPER_LENS = registerBlock( + "waxed_copper_lens", + () -> new CopperLensBlock( + BlockBehaviour.Properties.of() + .mapColor(Blocks.COPPER_BLOCK.defaultMapColor()) + .strength(3.0F, 6.0F) + .sound(SoundType.COPPER_BULB) + .requiresCorrectToolForDrops() + .isRedstoneConductor((state, getter, pos) -> false) + .noOcclusion() + ) + ); + public static final Lazy> ALTAR_PEDESTAL_TYPE = registerBlockEntity( "altar_pedestal", diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/Sculkable.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/Sculkable.java index ffa850ee..16e09902 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/Sculkable.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/Sculkable.java @@ -8,7 +8,6 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; public interface Sculkable { - BooleanProperty SCULK_INFESTED = BooleanProperty.create("sculked"); BooleanProperty SCULK_BELOW = BooleanProperty.create("sculk_below"); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/FallingDecayableBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/FallingDecayableBlock.java index 1cfcc47c..4889fa6c 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/FallingDecayableBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/FallingDecayableBlock.java @@ -23,6 +23,7 @@ import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.lighting.LightEngine; +import org.jetbrains.annotations.NotNull; public class FallingDecayableBlock extends NyliumBlock implements Fallable { public final Block decayBlock; @@ -36,27 +37,27 @@ public FallingDecayableBlock(Properties settings, Block decayBlock, String gener } @Override - public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { + public void onPlace(@NotNull BlockState state, Level world, @NotNull BlockPos pos, @NotNull BlockState oldState, boolean notify) { world.scheduleTick(pos, this, this.getFallDelay()); } @Override - public BlockState updateShape( - BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos + public @NotNull BlockState updateShape( + @NotNull BlockState state, @NotNull Direction direction, @NotNull BlockState neighborState, LevelAccessor world, @NotNull BlockPos pos, @NotNull BlockPos neighborPos ) { world.scheduleTick(pos, this, this.getFallDelay()); return super.updateShape(state, direction, neighborState, world, pos, neighborPos); } @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + public void tick(@NotNull BlockState state, ServerLevel world, BlockPos pos, @NotNull RandomSource random) { if (!canFallThrough(world.getBlockState(pos.below()))) return; if (pos.getY() == world.getMinBuildHeight()) return; FallingBlockEntity.fall(world, pos, decayBlock.defaultBlockState()); } @Override - public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) { + public void performBonemeal(ServerLevel world, @NotNull RandomSource random, BlockPos pos, @NotNull BlockState state) { BlockPos blockPos = pos.above(); ChunkGenerator chunkGenerator = world.getChunkSource().getGenerator(); Registry> registry = world.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE); @@ -80,12 +81,13 @@ protected int getFallDelay() { return 2; } + @SuppressWarnings("Deprecated") public static boolean canFallThrough(BlockState state) { return state.isAir() || state.is(BlockTags.FIRE) || state.liquid() || state.canBeReplaced(); } @Override - public void animateTick(BlockState state, Level world, BlockPos pos, RandomSource random) { + public void animateTick(@NotNull BlockState state, @NotNull Level world, @NotNull BlockPos pos, RandomSource random) { if (random.nextInt(16) == 0) { BlockPos blockPos = pos.below(); if (canFallThrough(world.getBlockState(blockPos))) { @@ -102,13 +104,13 @@ public static boolean canBeNylium(BlockState state, LevelReader world, BlockPos } @Override - public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + public void randomTick(@NotNull BlockState state, @NotNull ServerLevel world, @NotNull BlockPos pos, @NotNull RandomSource random) { if (canBeNylium(state, world, pos)) return; world.setBlockAndUpdate(pos, decayBlock.defaultBlockState()); } @Override - public boolean isRandomlyTicking(BlockState state) { + public boolean isRandomlyTicking(@NotNull BlockState state) { return true; } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/CopperLensBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/CopperLensBlock.java new file mode 100644 index 00000000..1e1c37d1 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/CopperLensBlock.java @@ -0,0 +1,102 @@ +package dev.sweetberry.wwizardry.content.block.redstone; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import org.jetbrains.annotations.NotNull; + +public class CopperLensBlock extends Block { + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + public static final EnumProperty FOCUS = EnumProperty.create("focus", Focus.class); + public static final EnumProperty AXIS = BlockStateProperties.AXIS; + + public CopperLensBlock(Properties properties) { + super(properties); + registerDefaultState(defaultBlockState().setValue(POWERED, false).setValue(FOCUS, Focus.FOCUSED).setValue(AXIS, Direction.Axis.Y)); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(POWERED, FOCUS, AXIS); + } + + @Override + protected @NotNull BlockState rotate(@NotNull BlockState state, @NotNull Rotation rotation) { + return RotatedPillarBlock.rotatePillar(state, rotation); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(AXIS, context.getClickedFace().getAxis()); + } + + protected void onPlace(BlockState $$0, Level $$1, BlockPos $$2, BlockState $$3, boolean $$4) { + if ($$3.getBlock() != $$0.getBlock() && $$1 instanceof ServerLevel $$5) { + this.checkAndFlip($$0, $$5, $$2); + } + } + + @Override + protected void neighborChanged(BlockState $$0, Level $$1, BlockPos $$2, Block $$3, BlockPos $$4, boolean $$5) { + if ($$1 instanceof ServerLevel $$6) { + this.checkAndFlip($$0, $$6, $$2); + } + + } + + public void checkAndFlip(BlockState state, ServerLevel level, BlockPos pos) { + boolean neighbor = level.hasNeighborSignal(pos); + if (neighbor == state.getValue(POWERED)) + return; + + if (!state.getValue(POWERED)) { + state = state.cycle(FOCUS); + level.playSound(null, pos, state.getValue(FOCUS).focused() ? SoundEvents.COPPER_BULB_TURN_ON : SoundEvents.COPPER_BULB_TURN_OFF, SoundSource.BLOCKS); + } + + level.setBlock(pos, state.setValue(POWERED, neighbor), 3); + } + + public boolean shouldBlockBeacon(BlockState state) { + return state.getValue(CopperLensBlock.AXIS) != Direction.Axis.Y + || state.getValue(CopperLensBlock.FOCUS) != CopperLensBlock.Focus.FOCUSED; + } + + public enum Focus implements StringRepresentable { + FOCUSED("focused"), + UNFOCUSED("unfocused"); + + private final String name; + + Focus(String name) { + this.name = name; + } + + public boolean focused() { + return this == FOCUSED; + } + + @Override + public @NotNull String getSerializedName() { + return name; + } + + @Override + public String toString() { + return name; + } + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/WeatheringCopperLensBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/WeatheringCopperLensBlock.java new file mode 100644 index 00000000..a19acc9b --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/WeatheringCopperLensBlock.java @@ -0,0 +1,30 @@ +package dev.sweetberry.wwizardry.content.block.redstone; + +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.WeatheringCopper; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.NotNull; + +public class WeatheringCopperLensBlock extends CopperLensBlock implements WeatheringCopper { + public final WeatheringCopper.WeatherState weatherState; + + public WeatheringCopperLensBlock(WeatheringCopper.WeatherState state, Properties properties) { + super(properties); + this.weatherState = state; + } + + @Override + public @NotNull WeatherState getAge() { + return weatherState; + } + + protected void randomTick(@NotNull BlockState state, @NotNull ServerLevel level, @NotNull BlockPos pos, @NotNull RandomSource rand) { + this.changeOverTime(state, level, pos, rand); + } + + protected boolean isRandomlyTicking(BlockState state) { + return WeatheringCopper.getNext(state.getBlock()).isPresent(); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedCeilingHangingSignBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedCeilingHangingSignBlock.java deleted file mode 100644 index 3096eadf..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedCeilingHangingSignBlock.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.sweetberry.wwizardry.content.block.sign; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.CeilingHangingSignBlock; -import net.minecraft.world.level.block.state.properties.WoodType; - -public class ModdedCeilingHangingSignBlock extends CeilingHangingSignBlock implements ModdedSignBlock { - private final ResourceLocation signId; - - public ModdedCeilingHangingSignBlock(Properties properties, ResourceLocation signId) { - super(WoodType.OAK, properties); - this.signId = signId; - } - - @Override - public ResourceLocation getSignId() { - return signId; - } -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedSignBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedSignBlock.java deleted file mode 100644 index a313bb1f..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedSignBlock.java +++ /dev/null @@ -1,12 +0,0 @@ -package dev.sweetberry.wwizardry.content.block.sign; - -import net.minecraft.resources.ResourceLocation; - -import java.util.HashSet; -import java.util.Set; - -public interface ModdedSignBlock { - Set SIGNS = new HashSet<>(); - - ResourceLocation getSignId(); -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedStandingSignBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedStandingSignBlock.java deleted file mode 100644 index 1e791213..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedStandingSignBlock.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.sweetberry.wwizardry.content.block.sign; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.StandingSignBlock; -import net.minecraft.world.level.block.state.properties.WoodType; - -public class ModdedStandingSignBlock extends StandingSignBlock implements ModdedSignBlock { - private final ResourceLocation signId; - - public ModdedStandingSignBlock(Properties properties, ResourceLocation signId) { - super(WoodType.OAK, properties); - this.signId = signId; - } - - @Override - public ResourceLocation getSignId() { - return signId; - } -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedWallHangingSignBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedWallHangingSignBlock.java deleted file mode 100644 index d234eacf..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedWallHangingSignBlock.java +++ /dev/null @@ -1,20 +0,0 @@ -package dev.sweetberry.wwizardry.content.block.sign; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.WallHangingSignBlock; -import net.minecraft.world.level.block.WallSignBlock; -import net.minecraft.world.level.block.state.properties.WoodType; - -public class ModdedWallHangingSignBlock extends WallHangingSignBlock implements ModdedSignBlock { - private final ResourceLocation signId; - - public ModdedWallHangingSignBlock(Properties properties, ResourceLocation signId) { - super(WoodType.OAK, properties); - this.signId = signId; - } - - @Override - public ResourceLocation getSignId() { - return signId; - } -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedWallSignBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedWallSignBlock.java deleted file mode 100644 index 95941018..00000000 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/sign/ModdedWallSignBlock.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.sweetberry.wwizardry.content.block.sign; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.WallSignBlock; -import net.minecraft.world.level.block.state.properties.WoodType; - -public class ModdedWallSignBlock extends WallSignBlock implements ModdedSignBlock { - private final ResourceLocation signId; - - public ModdedWallSignBlock(Properties properties, ResourceLocation signId) { - super(WoodType.OAK, properties); - this.signId = signId; - } - - @Override - public ResourceLocation getSignId() { - return signId; - } -} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/DatagenInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/DatagenInitializer.java index 9b68dc2f..89f04b50 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/DatagenInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/DatagenInitializer.java @@ -9,6 +9,7 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.MapColor; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -38,8 +39,14 @@ public static T registerDataGenerator(String p return t; } - public static void reloadPack(ResourceManager manager) { + public static void reloadPack(ResourceManager manager) throws IOException { DatagenInitializer.pack.clear(PackType.CLIENT_RESOURCES); + var opt = manager.getResource(WanderingWizardry.id("icon_large.png")); + if (opt.isPresent()) { + var png = opt.get().open(); + pack.put("pack.png", png.readAllBytes()); + png.close(); + } DatagenInitializer.REGISTRY .values() .forEach(generator -> generator.onRegisterPack(manager, pack)); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java index 0bda103e..0a6f9571 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/datagen/WoodTypeGen.java @@ -3,7 +3,6 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.resource.MapBackedPack; -import dev.sweetberry.wwizardry.content.block.sign.*; import dev.sweetberry.wwizardry.content.world.sapling.BeeHoldingSaplingGenerator; import dev.sweetberry.wwizardry.content.block.nature.RootedMushroomBlock; import dev.sweetberry.wwizardry.content.block.BlockInitializer; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java index 058b9ed9..c4bda32c 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java @@ -312,6 +312,15 @@ public class ItemInitializer { ITEMS_STACKS ); + public static final Lazy WAXED_COPPER_LENS = registerItem( + "waxed_copper_lens", + () -> new BlockItem( + BlockInitializer.WAXED_COPPER_LENS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + public static Lazy registerItem(String id, Supplier item, List> group) { var lazy = ITEMS.register(WanderingWizardry.id(id), (Supplier)item); group.add(lazy); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BeaconBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BeaconBlockEntity.java new file mode 100644 index 00000000..4ddc6e2e --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BeaconBlockEntity.java @@ -0,0 +1,14 @@ +package dev.sweetberry.wwizardry.mixin; + +import net.minecraft.world.level.block.entity.BeaconBlockEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(BeaconBlockEntity.class) +public interface Accessor_BeaconBlockEntity { + @Accessor + int getLastCheckY(); + + @Accessor + void setLastCheckY(int value); +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java new file mode 100644 index 00000000..4437eaf6 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java @@ -0,0 +1,83 @@ +package dev.sweetberry.wwizardry.mixin; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.content.block.redstone.CopperLensBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BeaconBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(BeaconBlockEntity.class) +public class Mixin_BeaconBlockEntity { + @WrapOperation( + method = "tick", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/level/block/state/BlockState;getLightBlock(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)I" + ) + ) + private static int checkCopperLens(BlockState instance, BlockGetter blockGetter, BlockPos pos, Operation original) { + if (instance.getBlock() instanceof CopperLensBlock copperLens) { + WanderingWizardry.LOGGER.info("waaaa"); + var shouldBlock = copperLens.shouldBlockBeacon(instance); + WanderingWizardry.LOGGER.info("{}. {}, {}", instance.getValue(CopperLensBlock.AXIS), instance.getValue(CopperLensBlock.FOCUS), shouldBlock); + + return shouldBlock ? 16 : original.call(instance, blockGetter, pos); + } + return original.call(instance, blockGetter, pos); + } + + @WrapOperation( + method = "tick", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/level/block/state/BlockState;is(Lnet/minecraft/world/level/block/Block;)Z" + ) + ) + private static boolean checkCopperLens(BlockState instance, Block block, Operation original) { + if (instance.getBlock() instanceof CopperLensBlock copperLens) { + WanderingWizardry.LOGGER.info("{}. {}", instance.getValue(CopperLensBlock.AXIS), instance.getValue(CopperLensBlock.FOCUS)); + return !copperLens.shouldBlockBeacon(instance); + } + return original.call(instance, block); + } + + @WrapOperation( + method = "applyEffects", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/phys/AABB;inflate(D)Lnet/minecraft/world/phys/AABB;" + ) + ) + private static AABB focusArea(AABB instance, double amount, Operation original, Level level, BlockPos pos) { + var up = level.getBlockState(pos.above()).getBlock() instanceof CopperLensBlock; + if (up) + amount *= 0.5; + return original.call(instance, amount); + } + + @WrapOperation( + method = "applyEffects", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/entity/player/Player;addEffect(Lnet/minecraft/world/effect/MobEffectInstance;)Z" + ) + ) + private static boolean focusEffect(Player instance, MobEffectInstance mobEffectInstance, Operation original, Level level, BlockPos pos) { + var up = level.getBlockState(pos.above()).getBlock() instanceof CopperLensBlock; + if (up) + mobEffectInstance = new MobEffectInstance(mobEffectInstance.getEffect(), mobEffectInstance.getDuration(), mobEffectInstance.getAmplifier() + 1); + return original.call(instance, mobEffectInstance); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java index 5e669886..4f35fa8b 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java @@ -17,6 +17,7 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -44,7 +45,9 @@ public class Mixin_ReloadableResourceManager { CallbackInfoReturnable cir ) { var temp = new MultiPackResourceManager(type, packs); - DatagenInitializer.reloadPack(temp); + try { + DatagenInitializer.reloadPack(temp); + } catch (IOException ignored) {} temp.close(); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BeaconRenderer.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BeaconRenderer.java new file mode 100644 index 00000000..2009c476 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_BeaconRenderer.java @@ -0,0 +1,44 @@ +package dev.sweetberry.wwizardry.mixin.client; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mojang.blaze3d.vertex.PoseStack; +import dev.sweetberry.wwizardry.content.block.redstone.CopperLensBlock; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.BeaconRenderer; +import net.minecraft.world.level.block.entity.BeaconBlockEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(BeaconRenderer.class) +public class Mixin_BeaconRenderer { + @Unique + private boolean wwizardry$isFocusedBeam; + + @Inject( + method = "render(Lnet/minecraft/world/level/block/entity/BeaconBlockEntity;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;II)V", + at = @At("HEAD") + ) + private void setFocus(BeaconBlockEntity entity, float $$1, PoseStack $$2, MultiBufferSource $$3, int $$4, int $$5, CallbackInfo ci) { + wwizardry$isFocusedBeam = entity.getLevel().getBlockState(entity.getBlockPos().above()).getBlock() instanceof CopperLensBlock; + } + + + @WrapOperation( + method = "render(Lnet/minecraft/world/level/block/entity/BeaconBlockEntity;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;II)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/blockentity/BeaconRenderer;renderBeaconBeam(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;FJIII)V") + ) + private void focusBeam(PoseStack stack, MultiBufferSource buffer, float p_112188_, long p_112190_, int p_112191_, int p_112192_, int p_350457_, Operation original) { + stack.pushPose(); + if (wwizardry$isFocusedBeam) { + final float middle = (2/3f)-(1/2f); + stack.scale(0.75f, 1, 0.75f); + stack.translate(middle, 0, middle); + } + original.call(stack, buffer, p_112188_, p_112190_, p_112191_, p_112192_, p_350457_); + stack.popPose(); + } +} diff --git a/neoforge/src/main/resources/accesstransformer.cfg b/common/src/main/resources/accesstransformer.cfg similarity index 96% rename from neoforge/src/main/resources/accesstransformer.cfg rename to common/src/main/resources/accesstransformer.cfg index 374ae6f1..e0605311 100644 --- a/neoforge/src/main/resources/accesstransformer.cfg +++ b/common/src/main/resources/accesstransformer.cfg @@ -1,6 +1,7 @@ public net.minecraft.world.level.block.entity.BlockEntityType$BlockEntitySupplier public net.minecraft.world.item.alchemy.PotionBrewing$Mix public net.minecraft.world.entity.npc.VillagerTrades$ItemsForEmeralds +public net.minecraft.server.level.ServerPlayer$RespawnPosAngle public net.minecraft.world.level.block.StairBlock (Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V public net.minecraft.world.level.block.IronBarsBlock (Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/base.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/base.json new file mode 100644 index 00000000..2b01d4f6 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/base.json @@ -0,0 +1,153 @@ +{ + "credit": "Made by Cart3r using Blockbench.", + "textures": { + "0": "#side", + "1": "#end", + "2": "#glass", + "3": "#aperture", + "particle": "#side" + }, + "elements": [ + { + "name": "bottom rim", + "from": [0.01, 0, 0.01], + "to": [15.99, 2, 15.99], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0.032, 14.032, 15.968, 15.968], "texture": "#0"}, + "east": {"uv": [0.032, 14.032, 15.968, 15.968], "texture": "#0"}, + "south": {"uv": [0.032, 14.032, 15.968, 15.968], "texture": "#0"}, + "west": {"uv": [0.032, 14.032, 15.968, 15.968], "texture": "#0"}, + "up": {"uv": [0.032, 0.032, 15.968, 15.968], "texture": "#1"}, + "down": {"uv": [0.032, 0.032, 15.968, 15.968], "texture": "#1"} + } + }, + { + "name": "bottom rim inner", + "from": [14.02, 2.02, 14.02], + "to": [1.98, -0.02, 1.98], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [2.032, 15.968, 13.968, 14.032], "texture": "#0"}, + "east": {"uv": [2.032, 15.968, 13.968, 14.032], "texture": "#0"}, + "south": {"uv": [2.032, 15.968, 13.968, 14.032], "texture": "#0"}, + "west": {"uv": [2.032, 15.968, 13.968, 14.032], "texture": "#0"} + } + }, + { + "name": "top rim", + "from": [0.01, 14, 0.01], + "to": [15.99, 16, 15.99], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0.032, 0.032, 15.968, 1.968], "texture": "#0"}, + "east": {"uv": [0.032, 0.032, 15.968, 1.968], "texture": "#0"}, + "south": {"uv": [0.032, 0.032, 15.968, 1.968], "texture": "#0"}, + "west": {"uv": [0.032, 0.032, 15.968, 1.968], "texture": "#0"}, + "up": {"uv": [0.032, 0.032, 15.968, 15.968], "texture": "#1"}, + "down": {"uv": [0.032, 0.032, 15.968, 15.968], "texture": "#1"} + } + }, + { + "name": "top rim inner", + "from": [14.02, 16.02, 14.02], + "to": [1.98, 13.98, 1.98], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [2.032, 15.968, 13.968, 14.032], "texture": "#0"}, + "east": {"uv": [2.032, 15.968, 13.968, 14.032], "texture": "#0"}, + "south": {"uv": [2.032, 15.968, 13.968, 14.032], "texture": "#0"}, + "west": {"uv": [2.032, 15.968, 13.968, 14.032], "texture": "#0"} + } + }, + { + "name": "supports", + "from": [1, 2, 1], + "to": [15, 14, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1.032, 2.032, 14.968, 13.968], "texture": "#0"}, + "east": {"uv": [1.032, 2.032, 14.968, 13.968], "texture": "#0"}, + "south": {"uv": [1.032, 2.032, 14.968, 13.968], "texture": "#0"}, + "west": {"uv": [1.032, 2.032, 14.968, 13.968], "texture": "#0"} + } + }, + { + "name": "supports inner", + "from": [15, 14, 15], + "to": [1, 2, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1.032, 13.968, 14.968, 2.032], "texture": "#0"}, + "east": {"uv": [1.032, 13.968, 14.968, 2.032], "texture": "#0"}, + "south": {"uv": [1.032, 13.968, 14.968, 2.032], "texture": "#0"}, + "west": {"uv": [1.032, 13.968, 14.968, 2.032], "texture": "#0"} + } + }, + { + "name": "aperture", + "from": [1, 8, 1], + "to": [15, 8, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "up": {"uv": [1.032, 1.032, 14.968, 14.968], "texture": "#3"}, + "down": {"uv": [1.032, 1.032, 14.968, 14.968], "texture": "#3"} + } + }, + { + "name": "bottom lens", + "from": [2, 1, 2], + "to": [14, 1, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "up": {"uv": [2.032, 2.032, 13.968, 13.968], "texture": "#2"}, + "down": {"uv": [2.032, 2.032, 13.968, 13.968], "texture": "#2"} + } + }, + { + "name": "top lens", + "from": [2, 15, 2], + "to": [14, 15, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "up": {"uv": [2.032, 2.032, 13.968, 13.968], "texture": "#2"}, + "down": {"uv": [2.032, 2.032, 13.968, 13.968], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 135, 90], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "rotation": [-90, 0, 0], + "scale": [1.16016, 1.16016, 1.16016] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/powered/focused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/powered/focused.json new file mode 100644 index 00000000..4d62652a --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/powered/focused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_exposed_powered", + "end": "wwizardry:block/copper_lens/end_exposed", + "glass": "wwizardry:block/copper_lens/glass_exposed", + "aperture": "wwizardry:block/copper_lens/aperture_exposed_focused" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/powered/unfocused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/powered/unfocused.json new file mode 100644 index 00000000..dff6bc45 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/powered/unfocused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_exposed_powered", + "end": "wwizardry:block/copper_lens/end_exposed", + "glass": "wwizardry:block/copper_lens/glass_exposed", + "aperture": "wwizardry:block/copper_lens/aperture_exposed" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/unpowered/focused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/unpowered/focused.json new file mode 100644 index 00000000..97676afd --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/unpowered/focused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_exposed", + "end": "wwizardry:block/copper_lens/end_exposed", + "glass": "wwizardry:block/copper_lens/glass_exposed", + "aperture": "wwizardry:block/copper_lens/aperture_exposed_focused" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/unpowered/unfocused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/unpowered/unfocused.json new file mode 100644 index 00000000..49dfe2d8 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/exposed/unpowered/unfocused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_exposed", + "end": "wwizardry:block/copper_lens/end_exposed", + "glass": "wwizardry:block/copper_lens/glass_exposed", + "aperture": "wwizardry:block/copper_lens/aperture_exposed" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/powered/focused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/powered/focused.json new file mode 100644 index 00000000..b16c57ba --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/powered/focused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_powered", + "end": "wwizardry:block/copper_lens/end", + "glass": "wwizardry:block/copper_lens/glass", + "aperture": "wwizardry:block/copper_lens/aperture_focused" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/powered/unfocused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/powered/unfocused.json new file mode 100644 index 00000000..69a42eb3 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/powered/unfocused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_powered", + "end": "wwizardry:block/copper_lens/end", + "glass": "wwizardry:block/copper_lens/glass", + "aperture": "wwizardry:block/copper_lens/aperture" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/unpowered/focused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/unpowered/focused.json new file mode 100644 index 00000000..bfdb781d --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/unpowered/focused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side", + "end": "wwizardry:block/copper_lens/end", + "glass": "wwizardry:block/copper_lens/glass", + "aperture": "wwizardry:block/copper_lens/aperture_focused" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/unpowered/unfocused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/unpowered/unfocused.json new file mode 100644 index 00000000..253848a0 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/normal/unpowered/unfocused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side", + "end": "wwizardry:block/copper_lens/end", + "glass": "wwizardry:block/copper_lens/glass", + "aperture": "wwizardry:block/copper_lens/aperture" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/powered/focused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/powered/focused.json new file mode 100644 index 00000000..9ffd36a5 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/powered/focused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_oxidized_powered", + "end": "wwizardry:block/copper_lens/end_oxidized", + "glass": "wwizardry:block/copper_lens/glass_oxidized", + "aperture": "wwizardry:block/copper_lens/aperture_oxidized_focused" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/powered/unfocused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/powered/unfocused.json new file mode 100644 index 00000000..a2908b6f --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/powered/unfocused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_oxidized_powered", + "end": "wwizardry:block/copper_lens/end_oxidized", + "glass": "wwizardry:block/copper_lens/glass_oxidized", + "aperture": "wwizardry:block/copper_lens/aperture_oxidized" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/unpowered/focused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/unpowered/focused.json new file mode 100644 index 00000000..f13bc045 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/unpowered/focused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_oxidized", + "end": "wwizardry:block/copper_lens/end_oxidized", + "glass": "wwizardry:block/copper_lens/glass_oxidized", + "aperture": "wwizardry:block/copper_lens/aperture_oxidized_focused" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/unpowered/unfocused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/unpowered/unfocused.json new file mode 100644 index 00000000..5330dd08 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/oxidized/unpowered/unfocused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_oxidized", + "end": "wwizardry:block/copper_lens/end_oxidized", + "glass": "wwizardry:block/copper_lens/glass_oxidized", + "aperture": "wwizardry:block/copper_lens/aperture_oxidized" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/powered/focused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/powered/focused.json new file mode 100644 index 00000000..9035fec0 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/powered/focused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_weathered_powered", + "end": "wwizardry:block/copper_lens/end_weathered", + "glass": "wwizardry:block/copper_lens/glass_weathered", + "aperture": "wwizardry:block/copper_lens/aperture_weathered_focused" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/powered/unfocused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/powered/unfocused.json new file mode 100644 index 00000000..c0bb126f --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/powered/unfocused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_weathered_powered", + "end": "wwizardry:block/copper_lens/end_weathered", + "glass": "wwizardry:block/copper_lens/glass_weathered", + "aperture": "wwizardry:block/copper_lens/aperture_weathered" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/unpowered/focused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/unpowered/focused.json new file mode 100644 index 00000000..976aaa6f --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/unpowered/focused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_weathered", + "end": "wwizardry:block/copper_lens/end_weathered", + "glass": "wwizardry:block/copper_lens/glass_weathered", + "aperture": "wwizardry:block/copper_lens/aperture_weathered_focused" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/unpowered/unfocused.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/unpowered/unfocused.json new file mode 100644 index 00000000..a78fdbe5 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/weathered/unpowered/unfocused.json @@ -0,0 +1,9 @@ +{ + "parent": "wwizardry:block/copper_lens/base", + "textures": { + "side": "wwizardry:block/copper_lens/side_weathered", + "end": "wwizardry:block/copper_lens/end_weathered", + "glass": "wwizardry:block/copper_lens/glass_weathered", + "aperture": "wwizardry:block/copper_lens/aperture_weathered" + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/item/waxed_copper_lens.json b/common/src/main/resources/assets/wwizardry/models/item/waxed_copper_lens.json new file mode 100644 index 00000000..1a72fe47 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/waxed_copper_lens.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/copper_lens/normal/unpowered/focused" +} diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture.png new file mode 100644 index 0000000000000000000000000000000000000000..b85afc3c40e6d3a7674bf4d60e74836ef97655fe GIT binary patch literal 5954 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_focused.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_focused.png new file mode 100644 index 0000000000000000000000000000000000000000..e76170f323677ebf79fd4d657bc75b47513261c8 GIT binary patch literal 5967 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ถ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 TP{U#{ArLz&2g@S!-BJGre?D9B literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_oxidized_focused.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/aperture_oxidized_focused.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8ad07108fd57b35ef332c0fb1bea0552796c6e GIT binary patch literal 5955 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4da91854eb288a76854dd372e86cb031861e60 GIT binary patch literal 6260 zcmeHKc~BGC_701Jj10Id!$1s(vUJkf$ikvP0z@Vd5D;c$=_DP9KoXO%?}&;bE~v<& zBC?GOASePdia6p1qM#!#D2NLphzcXZAo4n(4%Y8g{mNHw-e0Dwlk~ageD{3cJ?Gx; z%^YV3O${9l6bhxua%8w6zuJmReLC{3KR6DdP}9Ss+`Z&(P&is56$^yHFj^idfzfb; zP=G>3+$&riQqgxr^Zj*`3e^<}7o@|-u6|$fo`jCJlodTZv$Q;D=0&t&s1vto_+E_g=gh%LFGe@%x}S|vZ%qpnK56MOS#}gX(7k?@($h?M)%>_@&L!a}ym?=)w^kQ0I)7k9 zZ{fq5?aq$$oCU8p6|Nno_h{~^ z?LNCb$K_;FoAIBIp2(~GE~TY*xZW*|@6%;Oe~67CH9F*Ly(;V2=kx5;BG27BI$spn z`xN!*J@W`IKQ&+FkJ)@9iQ|n@i^ubipH`|A<&;$CG&ZZ0_9XR|R`*;KiOC^hJNr?}Xh4s51u zLz2u>wf98cMO%>-UNfcouyfk|`nIu1V9gBmi%*}ey9a7ba*4t2b*icf+4;}YPxM(?s5xk$OgOO(KTT7{+IQp?XeFy&^nHI%$LY?? z!`4wVf7oh}rL@^`^TIoP6O?JP`Ui=&NX(Zkkhb&D=h3bd7&#eX`q;GIzVQqN1xFYfB3gt$~ww+#VYN zRjskb+upaV>c(2VBebLT*e_gHP;Y0i2PduF)ijgXOp3hPbfW!N<73PF{SH2xORn4b z^PCZT&HSdl>Q$|*HJM7F`z*B!kv1sX(G6Mi79{yy2AYD0QnozL2d2dOC@mcdC*OxC= zmWKze)M}ZQnY!;*%eq;MUXlafam%-F&&4tPuFw0$E$nDKLn*(xR-dm< zo0qKp{%iy8m%#;dax9uzj&RY1A9yV_d7anuQC5)eQB5XI{M2iwO4Q2l*eS`9rZnxoDp4sBX@Ue*1|BITW ztBmb#tgX4$iG6o_Q?%2Awag1m_*OI1R}We_H6f}G7V2!<`Oc(t^AE~cy_-4}JGS!P zoLkK0@_kE7JRihX_7{$;u4|sQAC#$XHr%*#3pb6AFjjzlz zdTOiEt&G>1*%NpdKDcAlLeJvIGM<(W$2l!)Q4U);#y`{N18x~~**J#wqHP`W-MBGM z>zcE5cFsLh&9(X&f%lkQ@sg+9)fIck4fi&}mmQi`(sQ9;4IkP9PO!#k{*U#kW7?W6 zv*XhnW1zhm`^Pptd0iQ`+y7eLJhOv(f3!8Uybe2ZB5_*du^2ejC1tjPi*wW^1I8lD^r!wXPAd?x3$+NSY(Cma&OcX z{P640U)dS0)S9{1?7a^N$FhdzdY+KPc8we(ZbeXCtsgME6K_)P5|y*Ot)%JRTgPhwyFzuT#~-LITYvMgo{DxOE-un%j>L=pLHfaU zRsZlA)0)VPfjUQ{+|XC0@z0o#j<`uGMp7z!Rrfx%AI`dYO8RWSr~cid)C~U%TD7CY zcHZTUSieg~k9`|PVlKGW88d8BQ#!ZiF>$x_U+9T-st4ivr?;1xbeh9mo%^oEE3K}M z(5q82Fhik~l7)759G0Ekry~eCc=pBav~v7?g>Hl2szRp8_nylz>3Q_Z)GgEullk?w zLerBk{H0^bMw+ZGsrj8hOJ4KJUvzdIJG%ZTT0Jg-YC$zV?YMc|Ndw?oQu{B}MsKeT zPq=Xe-|#$DY0KIdJ&ZL?PggTLOy8?Rs*h6~n{K3MHJGir)MjNFb0&4b?42xrTfJ?I ze}aSIHawfMnUWGfVW$mRuiN2Kp!|lmj#2#G?B!CQu;Db>T|r{N^tZuL2dIu_8PQ(- zkY~%hu0>rE8&_k$%d|C}zcqLtCVO=sc)ua>(CPF?^lNy-0=K0u7>%n+3YZ9eRWDp-W+E~B1wAX2DNIQw;+eaCLKjpD>a za&c9&wX=SLS!iX9imtBmF8Hc%cw|*wRaN|T`Cp?-qx#YZ{g)2iM4_}uLgbOai~SRw zCl0|vd@&csMubR^M+Owia(RRV;swESG#3sKimWiNYU?m)A>RtKn#=~-5<56h=olr1 zS4BCy^P+-yG(KjzwT5K`9RUb|S)M_6GdaOuc@g&BuIPq@f~tT0||4%$vE zh0!D|2@3+u2w@ljW37RcsMqkh!sl%aCjPxh64#W z0s%lg09m9+4n+VWnSlag5`zKDcv7K6E)5Hv2QYNcK?$ zL=Rj9B*EdaATA^XH#I^gXNDml9~1hw5i)n=$qMHN%fz8l9?T4bMRJ3w5PaU}cuA-< zc!Ca}hl7LR5X4o6%!>bFN(UC3^EpBxL4YtsG7*J{{e`DoDEM2fFLG0iOwgH{2onAo z_Y3b&+$Wq7FE*Rb5c5J6>9H7A7{&Z_zL+QE(ddcg2SZ|K@wR214NR5j6jgh0V>fP2JloWpN}V# zAP^5ufpC!uk*b7(r)H&q;v-OGGKEa$lDPm3lR<#Q1*rgpr$7KKAb}DkU*k?R62p=j;GQ|1Ui`pfQV&^znCu+ zME-x?iuOTUPA1TqV<2KGWif2rsf{mp;Wf^$&}RA>f)(1_6|cYyTlEZqp!h2@3QzQ?d3Z@86BGqIY`K&X9+_UVt(f=v^AK#1XQ%kNVxF zJ&^mLxi7QM5-(rtUA$;#&*Kc9Zzwuhc1pxRRjZ(z84(sDr!7e4C>GP1 JQEKa-^e@{{fGGd~ literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end_exposed.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end_exposed.png new file mode 100644 index 0000000000000000000000000000000000000000..1665c6fd3ad8c507fa85c22bd223b43d77dbf046 GIT binary patch literal 6207 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end_weathered.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end_weathered.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b7413bedabb056d8fc3957888f9b26bc5383de GIT binary patch literal 6228 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 JuE4|v{{cpgirxSK literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..69eadff5df8feca24b1575bcd9c7d88cc7e81c36 GIT binary patch literal 5886 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass_oxidized.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass_oxidized.png new file mode 100644 index 0000000000000000000000000000000000000000..02fd404a941b61a3f79ce66ca9e1ae733d18fae3 GIT binary patch literal 6120 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass_weathered.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass_weathered.png new file mode 100644 index 0000000000000000000000000000000000000000..4bdef9da62bef543fd9745f0ff1abd5611bc1879 GIT binary patch literal 6044 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side.png new file mode 100644 index 0000000000000000000000000000000000000000..3df7ae604b214c1fc7c8e807c38ffdee942985aa GIT binary patch literal 6001 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 jxU@ukuDDpZ73JU5?asz=(B!L7}21VwfMR7nx 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 S4se4BMtHb-F^{>d+w?E9E;`r% literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_exposed_powered.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_exposed_powered.png new file mode 100644 index 0000000000000000000000000000000000000000..26538f821e30c6075561e271d4ed9f9e66330932 GIT binary patch literal 6149 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 Jai>-5{t3L1L5BbU literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_weathered.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_weathered.png new file mode 100644 index 0000000000000000000000000000000000000000..467651939eb8232a82b73a39d366805dcb795dfc GIT binary patch literal 6128 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 a_)1=~?|Si1-}j)zW4zpaT`Qc|ZT%-t+Br%9 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_weathered_powered.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/side_weathered_powered.png new file mode 100644 index 0000000000000000000000000000000000000000..d757ea157c0a95fdc60cd4f99450e3508aea79f5 GIT binary patch literal 6192 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 notNeoTask = { Task it -> !it.name.startsWith("neo") } as Spec diff --git a/scripts/command/archex.ts b/scripts/command/archex.ts index ee8b158f..1510b4c3 100644 --- a/scripts/command/archex.ts +++ b/scripts/command/archex.ts @@ -24,7 +24,7 @@ export default function generateArchEx(inputDir: string, outputDir: string) { const outputFile = outputDir+"/"+file+".json" const read = fennecToJson(fennec.parse(Deno.readTextFileSync(inputFile))) - Deno.writeTextFileSync(outputFile, JSON.stringify(read)) + Deno.writeTextFileSync(outputFile, JSON.stringify(read, undefined, 2)) console.log(inputFile + " -> " + outputFile) } diff --git a/scripts/command/blockstate.ts b/scripts/command/blockstate.ts index 4b641246..e731e845 100644 --- a/scripts/command/blockstate.ts +++ b/scripts/command/blockstate.ts @@ -40,7 +40,7 @@ export default function generateBlockStates(inputDir: string, outputDir: string) const transformed = transformBlockState(state) - Deno.writeTextFileSync(outputFile, JSON.stringify(transformed)) + Deno.writeTextFileSync(outputFile, JSON.stringify(transformed, undefined, 2)) console.log(inputFile + " -> " + outputFile) } diff --git a/scripts/command/brick.ts b/scripts/command/brick.ts index 1034c01b..b9fcf299 100644 --- a/scripts/command/brick.ts +++ b/scripts/command/brick.ts @@ -26,7 +26,7 @@ function getRecipe(recipe: BrickRecipe, file: string, outputDir: string) { const json = Generator[generator.type](recipe, generator) for (const key in json) { const outputFile = outputDir+"/"+file+"/"+generator.name+"/"+key+".json" - Deno.writeTextFileSync(outputFile, JSON.stringify(json[key])) + Deno.writeTextFileSync(outputFile, JSON.stringify(json[key], undefined, 2)) console.log(" "+outputFile) } } diff --git a/scripts/command/lang.ts b/scripts/command/lang.ts index 57cd6527..a03d821c 100644 --- a/scripts/command/lang.ts +++ b/scripts/command/lang.ts @@ -9,7 +9,7 @@ export default function generateLang(inputDir: string, outputDir: string) { const outputFile = outputDir+"/"+file+".json" const read = fennec.parse(Deno.readTextFileSync(inputFile)) as RecuseMap - Deno.writeTextFileSync(outputFile, JSON.stringify(recurseToNormal(read))) + Deno.writeTextFileSync(outputFile, JSON.stringify(recurseToNormal(read), undefined, 2)) console.log(`${inputFile} -> ${outputFile}`) } } diff --git a/scripts/command/loot.ts b/scripts/command/loot.ts index 8005c3b3..297cea0b 100644 --- a/scripts/command/loot.ts +++ b/scripts/command/loot.ts @@ -19,6 +19,6 @@ export default function loot(inputFile: string, outputDir: string) { } const outputFile = outputDir+"/"+block+".json"; console.log(" "+outputFile) - Deno.writeTextFileSync(outputFile, JSON.stringify(output)) + Deno.writeTextFileSync(outputFile, JSON.stringify(output, undefined, 2)) } } diff --git a/scripts/command/tags.ts b/scripts/command/tags.ts index da51e247..136fc9fb 100644 --- a/scripts/command/tags.ts +++ b/scripts/command/tags.ts @@ -31,7 +31,7 @@ export default function generateTags(inputDir: string, outputDir: string) { required: false, id: it })) - })) + }, undefined, 2)) console.log(" "+outputFile) } } diff --git a/scripts/command/transpile.ts b/scripts/command/transpile.ts index de187706..f50b1e0f 100644 --- a/scripts/command/transpile.ts +++ b/scripts/command/transpile.ts @@ -7,7 +7,7 @@ export default function genericTranspile(inputDir: string, outputDir: string) { const outputFile = outputDir+"/"+file+".json" const read = fennec.parse(Deno.readTextFileSync(inputFile)) - Deno.writeTextFileSync(outputFile, JSON.stringify(read)) + Deno.writeTextFileSync(outputFile, JSON.stringify(read, undefined, 2)) console.log(inputFile + " -> " + outputFile) } From 29a3861d45fd670e48f4df863ba6a0e708456742 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Sat, 24 Aug 2024 23:36:26 -0500 Subject: [PATCH 27/46] All copper lens variants --- .../wwizardry/blockstates/copper_lens.json | 52 +++++++ .../blockstates/exposed_copper_lens.json | 52 +++++++ .../blockstates/oxidized_copper_lens.json | 52 +++++++ .../waxed_exposed_copper_lens.json | 52 +++++++ .../waxed_oxidized_copper_lens.json | 52 +++++++ .../waxed_weathered_copper_lens.json | 52 +++++++ .../blockstates/weathered_copper_lens.json | 52 +++++++ .../assets/wwizardry/lang/en_us.json | 8 ++ .../client/content/RenderLayers.java | 9 +- .../content/block/BlockInitializer.java | 127 +++++++++++++++-- .../block/redstone/CopperLensBlock.java | 6 +- .../redstone/WeatheringCopperLensBlock.java | 11 +- .../content/item/ItemInitializer.java | 63 +++++++++ .../models/block/copper_lens/base.json | 2 + .../wwizardry/models/item/copper_lens.json | 3 + .../models/item/exposed_copper_lens.json | 3 + .../models/item/oxidized_copper_lens.json | 3 + .../item/waxed_exposed_copper_lens.json | 3 + .../item/waxed_oxidized_copper_lens.json | 3 + .../item/waxed_weathered_copper_lens.json | 3 + .../models/item/weathered_copper_lens.json | 3 + .../{enx_oxidized.png => end_oxidized.png} | Bin .../{lens_exposed.png => glass_exposed.png} | Bin .../src/main/resources/wwizardry.mixins.json | 2 +- data/blockstate/copper_lens.fennec | 131 ++++++++++++++++++ data/blockstate/exposed_copper_lens.fennec | 131 ++++++++++++++++++ data/blockstate/oxidized_copper_lens.fennec | 131 ++++++++++++++++++ .../waxed_exposed_copper_lens.fennec | 131 ++++++++++++++++++ .../waxed_oxidized_copper_lens.fennec | 131 ++++++++++++++++++ .../waxed_weathered_copper_lens.fennec | 131 ++++++++++++++++++ data/blockstate/weathered_copper_lens.fennec | 131 ++++++++++++++++++ data/lang/en_us.fennec | 9 ++ .../wwizardry/fabric/FabricInitializer.java | 6 + .../neoforge/NeoForgeInitializer.java | 1 - .../neoforge/data_maps/block/oxidizables.json | 13 ++ .../neoforge/data_maps/block/waxables.json | 16 +++ 36 files changed, 1553 insertions(+), 22 deletions(-) create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/copper_lens.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/exposed_copper_lens.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/oxidized_copper_lens.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/waxed_exposed_copper_lens.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/waxed_oxidized_copper_lens.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/waxed_weathered_copper_lens.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/weathered_copper_lens.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/copper_lens.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/exposed_copper_lens.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/oxidized_copper_lens.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/waxed_exposed_copper_lens.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/waxed_oxidized_copper_lens.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/waxed_weathered_copper_lens.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/weathered_copper_lens.json rename common/src/main/resources/assets/wwizardry/textures/block/copper_lens/{enx_oxidized.png => end_oxidized.png} (100%) rename common/src/main/resources/assets/wwizardry/textures/block/copper_lens/{lens_exposed.png => glass_exposed.png} (100%) create mode 100644 data/blockstate/copper_lens.fennec create mode 100644 data/blockstate/exposed_copper_lens.fennec create mode 100644 data/blockstate/oxidized_copper_lens.fennec create mode 100644 data/blockstate/waxed_exposed_copper_lens.fennec create mode 100644 data/blockstate/waxed_oxidized_copper_lens.fennec create mode 100644 data/blockstate/waxed_weathered_copper_lens.fennec create mode 100644 data/blockstate/weathered_copper_lens.fennec create mode 100644 neoforge/src/main/resources/data/neoforge/data_maps/block/oxidizables.json create mode 100644 neoforge/src/main/resources/data/neoforge/data_maps/block/waxables.json diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/copper_lens.json b/common/src/generated/resources/assets/wwizardry/blockstates/copper_lens.json new file mode 100644 index 00000000..f79ba08b --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/copper_lens.json @@ -0,0 +1,52 @@ +{ + "variants": { + "powered=false,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/normal/unpowered/focused", + "x": 90, + "y": 90 + }, + "powered=true,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/normal/powered/focused", + "x": 90, + "y": 90 + }, + "powered=false,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/normal/unpowered/unfocused", + "x": 90, + "y": 90 + }, + "powered=true,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/normal/powered/unfocused", + "x": 90, + "y": 90 + }, + "powered=false,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/normal/unpowered/focused" + }, + "powered=true,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/normal/powered/focused" + }, + "powered=false,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/normal/unpowered/unfocused" + }, + "powered=true,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/normal/powered/unfocused" + }, + "powered=false,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/normal/unpowered/focused", + "x": 90 + }, + "powered=true,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/normal/powered/focused", + "x": 90 + }, + "powered=false,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/normal/unpowered/unfocused", + "x": 90 + }, + "powered=true,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/normal/powered/unfocused", + "x": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/exposed_copper_lens.json b/common/src/generated/resources/assets/wwizardry/blockstates/exposed_copper_lens.json new file mode 100644 index 00000000..5be558de --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/exposed_copper_lens.json @@ -0,0 +1,52 @@ +{ + "variants": { + "powered=false,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/focused", + "x": 90, + "y": 90 + }, + "powered=true,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/exposed/powered/focused", + "x": 90, + "y": 90 + }, + "powered=false,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/unfocused", + "x": 90, + "y": 90 + }, + "powered=true,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/exposed/powered/unfocused", + "x": 90, + "y": 90 + }, + "powered=false,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/focused" + }, + "powered=true,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/exposed/powered/focused" + }, + "powered=false,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/unfocused" + }, + "powered=true,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/exposed/powered/unfocused" + }, + "powered=false,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/focused", + "x": 90 + }, + "powered=true,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/exposed/powered/focused", + "x": 90 + }, + "powered=false,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/unfocused", + "x": 90 + }, + "powered=true,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/exposed/powered/unfocused", + "x": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/oxidized_copper_lens.json b/common/src/generated/resources/assets/wwizardry/blockstates/oxidized_copper_lens.json new file mode 100644 index 00000000..3022c0d1 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/oxidized_copper_lens.json @@ -0,0 +1,52 @@ +{ + "variants": { + "powered=false,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/focused", + "x": 90, + "y": 90 + }, + "powered=true,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/oxidized/powered/focused", + "x": 90, + "y": 90 + }, + "powered=false,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/unfocused", + "x": 90, + "y": 90 + }, + "powered=true,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/oxidized/powered/unfocused", + "x": 90, + "y": 90 + }, + "powered=false,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/focused" + }, + "powered=true,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/oxidized/powered/focused" + }, + "powered=false,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/unfocused" + }, + "powered=true,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/oxidized/powered/unfocused" + }, + "powered=false,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/focused", + "x": 90 + }, + "powered=true,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/oxidized/powered/focused", + "x": 90 + }, + "powered=false,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/unfocused", + "x": 90 + }, + "powered=true,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/oxidized/powered/unfocused", + "x": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/waxed_exposed_copper_lens.json b/common/src/generated/resources/assets/wwizardry/blockstates/waxed_exposed_copper_lens.json new file mode 100644 index 00000000..5be558de --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/waxed_exposed_copper_lens.json @@ -0,0 +1,52 @@ +{ + "variants": { + "powered=false,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/focused", + "x": 90, + "y": 90 + }, + "powered=true,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/exposed/powered/focused", + "x": 90, + "y": 90 + }, + "powered=false,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/unfocused", + "x": 90, + "y": 90 + }, + "powered=true,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/exposed/powered/unfocused", + "x": 90, + "y": 90 + }, + "powered=false,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/focused" + }, + "powered=true,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/exposed/powered/focused" + }, + "powered=false,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/unfocused" + }, + "powered=true,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/exposed/powered/unfocused" + }, + "powered=false,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/focused", + "x": 90 + }, + "powered=true,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/exposed/powered/focused", + "x": 90 + }, + "powered=false,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/exposed/unpowered/unfocused", + "x": 90 + }, + "powered=true,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/exposed/powered/unfocused", + "x": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/waxed_oxidized_copper_lens.json b/common/src/generated/resources/assets/wwizardry/blockstates/waxed_oxidized_copper_lens.json new file mode 100644 index 00000000..3022c0d1 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/waxed_oxidized_copper_lens.json @@ -0,0 +1,52 @@ +{ + "variants": { + "powered=false,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/focused", + "x": 90, + "y": 90 + }, + "powered=true,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/oxidized/powered/focused", + "x": 90, + "y": 90 + }, + "powered=false,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/unfocused", + "x": 90, + "y": 90 + }, + "powered=true,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/oxidized/powered/unfocused", + "x": 90, + "y": 90 + }, + "powered=false,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/focused" + }, + "powered=true,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/oxidized/powered/focused" + }, + "powered=false,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/unfocused" + }, + "powered=true,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/oxidized/powered/unfocused" + }, + "powered=false,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/focused", + "x": 90 + }, + "powered=true,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/oxidized/powered/focused", + "x": 90 + }, + "powered=false,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/oxidized/unpowered/unfocused", + "x": 90 + }, + "powered=true,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/oxidized/powered/unfocused", + "x": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/waxed_weathered_copper_lens.json b/common/src/generated/resources/assets/wwizardry/blockstates/waxed_weathered_copper_lens.json new file mode 100644 index 00000000..0a441a90 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/waxed_weathered_copper_lens.json @@ -0,0 +1,52 @@ +{ + "variants": { + "powered=false,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/focused", + "x": 90, + "y": 90 + }, + "powered=true,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/weathered/powered/focused", + "x": 90, + "y": 90 + }, + "powered=false,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/unfocused", + "x": 90, + "y": 90 + }, + "powered=true,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/weathered/powered/unfocused", + "x": 90, + "y": 90 + }, + "powered=false,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/focused" + }, + "powered=true,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/weathered/powered/focused" + }, + "powered=false,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/unfocused" + }, + "powered=true,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/weathered/powered/unfocused" + }, + "powered=false,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/focused", + "x": 90 + }, + "powered=true,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/weathered/powered/focused", + "x": 90 + }, + "powered=false,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/unfocused", + "x": 90 + }, + "powered=true,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/weathered/powered/unfocused", + "x": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/weathered_copper_lens.json b/common/src/generated/resources/assets/wwizardry/blockstates/weathered_copper_lens.json new file mode 100644 index 00000000..0a441a90 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/weathered_copper_lens.json @@ -0,0 +1,52 @@ +{ + "variants": { + "powered=false,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/focused", + "x": 90, + "y": 90 + }, + "powered=true,focus=focused,axis=x": { + "model": "wwizardry:block/copper_lens/weathered/powered/focused", + "x": 90, + "y": 90 + }, + "powered=false,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/unfocused", + "x": 90, + "y": 90 + }, + "powered=true,focus=unfocused,axis=x": { + "model": "wwizardry:block/copper_lens/weathered/powered/unfocused", + "x": 90, + "y": 90 + }, + "powered=false,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/focused" + }, + "powered=true,focus=focused,axis=y": { + "model": "wwizardry:block/copper_lens/weathered/powered/focused" + }, + "powered=false,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/unfocused" + }, + "powered=true,focus=unfocused,axis=y": { + "model": "wwizardry:block/copper_lens/weathered/powered/unfocused" + }, + "powered=false,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/focused", + "x": 90 + }, + "powered=true,focus=focused,axis=z": { + "model": "wwizardry:block/copper_lens/weathered/powered/focused", + "x": 90 + }, + "powered=false,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/weathered/unpowered/unfocused", + "x": 90 + }, + "powered=true,focus=unfocused,axis=z": { + "model": "wwizardry:block/copper_lens/weathered/powered/unfocused", + "x": 90 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index a664a814..35e48115 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -55,6 +55,14 @@ "block.wwizardry.wall_holder": "Sconce", "block.wwizardry.modulo_comparator": "Modulo Comparator", "block.wwizardry.redstone_stepper": "Redstone Stepper", + "block.wwizardry.copper_lens": "Copper Lens", + "block.wwizardry.exposed_copper_lens": "Exposed Copper Lens", + "block.wwizardry.weathered_copper_lens": "Weathered Copper Lens", + "block.wwizardry.oxidized_copper_lens": "Oxidized Copper Lens", + "block.wwizardry.waxed_copper_lens": "Waxed Copper Lens", + "block.wwizardry.waxed_exposed_copper_lens": "Waxed Exposed Copper Lens", + "block.wwizardry.waxed_weathered_copper_lens": "Waxed Weathered Copper Lens", + "block.wwizardry.waxed_oxidized_copper_lens": "Waxed Oxidized Copper Lens", "block.wwizardry.sculkflower": "Sculkflower", "block.wwizardry.indigo_caeruleum": "Indigo Caeruleum", "block.wwizardry.mycelial_sand": "Mycelial Sand", diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java b/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java index 6c900e61..f3beed80 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java @@ -29,7 +29,14 @@ public static void init() { BlockInitializer.REINFORCED_GLASS, BlockInitializer.REINFORCED_GLASS_PANE, BlockInitializer.MYCHA_ROOTS, - BlockInitializer.WAXED_COPPER_LENS + (Supplier)(Object) BlockInitializer.COPPER_LENS, + (Supplier)(Object) BlockInitializer.EXPOSED_COPPER_LENS, + (Supplier)(Object) BlockInitializer.WEATHERED_COPPER_LENS, + (Supplier)(Object) BlockInitializer.OXIDIZED_COPPER_LENS, + (Supplier)(Object) BlockInitializer.WAXED_COPPER_LENS, + (Supplier)(Object) BlockInitializer.WAXED_EXPOSED_COPPER_LENS, + (Supplier)(Object) BlockInitializer.WAXED_WEATHERED_COPPER_LENS, + (Supplier)(Object) BlockInitializer.WAXED_OXIDIZED_COPPER_LENS ); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java index 7895d7a5..18855aed 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java @@ -1,5 +1,6 @@ package dev.sweetberry.wwizardry.content.block; +import com.mojang.datafixers.util.Pair; import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.registry.RegistryContext; @@ -15,19 +16,14 @@ import dev.sweetberry.wwizardry.content.block.redstone.CopperLensBlock; import dev.sweetberry.wwizardry.content.block.redstone.LogicGateBlock; import dev.sweetberry.wwizardry.content.block.redstone.ResonatorBlock; +import dev.sweetberry.wwizardry.content.block.redstone.WeatheringCopperLensBlock; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import dev.sweetberry.wwizardry.mixin.Accessor_AxeItem; import dev.sweetberry.wwizardry.mixin.Accessor_BlockEntityType; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.IronBarsBlock; -import net.minecraft.world.level.block.RedstoneLampBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.TransparentBlock; +import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; @@ -35,10 +31,7 @@ import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.material.PushReaction; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.function.Supplier; public class BlockInitializer { @@ -226,9 +219,10 @@ public class BlockInitializer { ) ); - public static final Lazy WAXED_COPPER_LENS = registerBlock( + public static final Lazy WAXED_COPPER_LENS = registerBlock( "waxed_copper_lens", () -> new CopperLensBlock( + WeatheringCopper.WeatherState.UNAFFECTED, BlockBehaviour.Properties.of() .mapColor(Blocks.COPPER_BLOCK.defaultMapColor()) .strength(3.0F, 6.0F) @@ -239,6 +233,103 @@ public class BlockInitializer { ) ); + public static final Lazy WAXED_EXPOSED_COPPER_LENS = registerBlock( + "waxed_exposed_copper_lens", + () -> new CopperLensBlock( + WeatheringCopper.WeatherState.EXPOSED, + BlockBehaviour.Properties.of() + .mapColor(Blocks.EXPOSED_COPPER.defaultMapColor()) + .strength(3.0F, 6.0F) + .sound(SoundType.COPPER_BULB) + .requiresCorrectToolForDrops() + .isRedstoneConductor((state, getter, pos) -> false) + .noOcclusion() + ) + ); + + public static final Lazy WAXED_WEATHERED_COPPER_LENS = registerBlock( + "waxed_weathered_copper_lens", + () -> new CopperLensBlock( + WeatheringCopper.WeatherState.WEATHERED, + BlockBehaviour.Properties.of() + .mapColor(Blocks.WEATHERED_COPPER.defaultMapColor()) + .strength(3.0F, 6.0F) + .sound(SoundType.COPPER_BULB) + .requiresCorrectToolForDrops() + .isRedstoneConductor((state, getter, pos) -> false) + .noOcclusion() + ) + ); + + public static final Lazy WAXED_OXIDIZED_COPPER_LENS = registerBlock( + "waxed_oxidized_copper_lens", + () -> new CopperLensBlock( + WeatheringCopper.WeatherState.OXIDIZED, + BlockBehaviour.Properties.of() + .mapColor(Blocks.OXIDIZED_COPPER.defaultMapColor()) + .strength(3.0F, 6.0F) + .sound(SoundType.COPPER_BULB) + .requiresCorrectToolForDrops() + .isRedstoneConductor((state, getter, pos) -> false) + .noOcclusion() + ) + ); + + public static final Lazy COPPER_LENS = registerBlock( + "copper_lens", + () -> new WeatheringCopperLensBlock( + WeatheringCopper.WeatherState.UNAFFECTED, + BlockBehaviour.Properties.of() + .mapColor(Blocks.COPPER_BLOCK.defaultMapColor()) + .strength(3.0F, 6.0F) + .sound(SoundType.COPPER_BULB) + .requiresCorrectToolForDrops() + .isRedstoneConductor((state, getter, pos) -> false) + .noOcclusion() + ) + ); + + public static final Lazy EXPOSED_COPPER_LENS = registerBlock( + "exposed_copper_lens", + () -> new WeatheringCopperLensBlock( + WeatheringCopper.WeatherState.EXPOSED, + BlockBehaviour.Properties.of() + .mapColor(Blocks.EXPOSED_COPPER.defaultMapColor()) + .strength(3.0F, 6.0F) + .sound(SoundType.COPPER_BULB) + .requiresCorrectToolForDrops() + .isRedstoneConductor((state, getter, pos) -> false) + .noOcclusion() + ) + ); + + public static final Lazy WEATHERED_COPPER_LENS = registerBlock( + "weathered_copper_lens", + () -> new WeatheringCopperLensBlock( + WeatheringCopper.WeatherState.WEATHERED, + BlockBehaviour.Properties.of() + .mapColor(Blocks.WEATHERED_COPPER.defaultMapColor()) + .strength(3.0F, 6.0F) + .sound(SoundType.COPPER_BULB) + .requiresCorrectToolForDrops() + .isRedstoneConductor((state, getter, pos) -> false) + .noOcclusion() + ) + ); + + public static final Lazy OXIDIZED_COPPER_LENS = registerBlock( + "oxidized_copper_lens", + () -> new WeatheringCopperLensBlock( + WeatheringCopper.WeatherState.OXIDIZED, + BlockBehaviour.Properties.of() + .mapColor(Blocks.OXIDIZED_COPPER.defaultMapColor()) + .strength(3.0F, 6.0F) + .sound(SoundType.COPPER_BULB) + .requiresCorrectToolForDrops() + .isRedstoneConductor((state, getter, pos) -> false) + .noOcclusion() + ) + ); public static final Lazy> ALTAR_PEDESTAL_TYPE = registerBlockEntity( "altar_pedestal", @@ -268,6 +359,18 @@ public class BlockInitializer { ).build(null) ); + public static final Pair, Lazy>[] WAXABLES = new Pair[] { + new Pair<>(BlockInitializer.COPPER_LENS, BlockInitializer.WAXED_COPPER_LENS), + new Pair<>(BlockInitializer.EXPOSED_COPPER_LENS, BlockInitializer.WAXED_EXPOSED_COPPER_LENS), + new Pair<>(BlockInitializer.WEATHERED_COPPER_LENS, BlockInitializer.WAXED_WEATHERED_COPPER_LENS), + new Pair<>(BlockInitializer.OXIDIZED_COPPER_LENS, BlockInitializer.WAXED_OXIDIZED_COPPER_LENS), + }; + + public static final Pair, Lazy>[] WEATHERABLES = new Pair[] { + new Pair<>(BlockInitializer.COPPER_LENS, BlockInitializer.EXPOSED_COPPER_LENS), + new Pair<>(BlockInitializer.EXPOSED_COPPER_LENS, BlockInitializer.WEATHERED_COPPER_LENS), + new Pair<>(BlockInitializer.WEATHERED_COPPER_LENS, BlockInitializer.OXIDIZED_COPPER_LENS), + }; public static Lazy registerBlock(String id, Supplier block) { return (Lazy) BLOCKS.register(WanderingWizardry.id(id), (Supplier) block); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/CopperLensBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/CopperLensBlock.java index 1e1c37d1..98878168 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/CopperLensBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/CopperLensBlock.java @@ -11,6 +11,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.WeatheringCopper; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -23,8 +24,11 @@ public class CopperLensBlock extends Block { public static final EnumProperty FOCUS = EnumProperty.create("focus", Focus.class); public static final EnumProperty AXIS = BlockStateProperties.AXIS; - public CopperLensBlock(Properties properties) { + public final @NotNull WeatheringCopper.WeatherState weatherState; + + public CopperLensBlock(@NotNull WeatheringCopper.WeatherState state, Properties properties) { super(properties); + this.weatherState = state; registerDefaultState(defaultBlockState().setValue(POWERED, false).setValue(FOCUS, Focus.FOCUSED).setValue(AXIS, Direction.Axis.Y)); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/WeatheringCopperLensBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/WeatheringCopperLensBlock.java index a19acc9b..a731f797 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/WeatheringCopperLensBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/WeatheringCopperLensBlock.java @@ -8,22 +8,21 @@ import org.jetbrains.annotations.NotNull; public class WeatheringCopperLensBlock extends CopperLensBlock implements WeatheringCopper { - public final WeatheringCopper.WeatherState weatherState; - - public WeatheringCopperLensBlock(WeatheringCopper.WeatherState state, Properties properties) { - super(properties); - this.weatherState = state; + public WeatheringCopperLensBlock(@NotNull WeatheringCopper.WeatherState state, Properties properties) { + super(state, properties); } @Override - public @NotNull WeatherState getAge() { + public @NotNull WeatheringCopper.WeatherState getAge() { return weatherState; } + @Override protected void randomTick(@NotNull BlockState state, @NotNull ServerLevel level, @NotNull BlockPos pos, @NotNull RandomSource rand) { this.changeOverTime(state, level, pos, rand); } + @Override protected boolean isRandomlyTicking(BlockState state) { return WeatheringCopper.getNext(state.getBlock()).isPresent(); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java index c4bda32c..cf274285 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java @@ -312,6 +312,42 @@ public class ItemInitializer { ITEMS_STACKS ); + public static final Lazy COPPER_LENS = registerItem( + "copper_lens", + () -> new BlockItem( + BlockInitializer.COPPER_LENS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy EXPOSED_COPPER_LENS = registerItem( + "exposed_copper_lens", + () -> new BlockItem( + BlockInitializer.EXPOSED_COPPER_LENS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy WEATHERED_COPPER_LENS = registerItem( + "weathered_copper_lens", + () -> new BlockItem( + BlockInitializer.WEATHERED_COPPER_LENS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy OXIDIZED_COPPER_LENS = registerItem( + "oxidized_copper_lens", + () -> new BlockItem( + BlockInitializer.OXIDIZED_COPPER_LENS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + public static final Lazy WAXED_COPPER_LENS = registerItem( "waxed_copper_lens", () -> new BlockItem( @@ -321,6 +357,33 @@ public class ItemInitializer { BLOCKS_STACKS ); + public static final Lazy WAXED_EXPOSED_COPPER_LENS = registerItem( + "waxed_exposed_copper_lens", + () -> new BlockItem( + BlockInitializer.WAXED_EXPOSED_COPPER_LENS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy WAXED_WEATHERED_COPPER_LENS = registerItem( + "waxed_weathered_copper_lens", + () -> new BlockItem( + BlockInitializer.WAXED_WEATHERED_COPPER_LENS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy WAXED_OXIDIZED_COPPER_LENS = registerItem( + "waxed_oxidized_copper_lens", + () -> new BlockItem( + BlockInitializer.WAXED_OXIDIZED_COPPER_LENS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + public static Lazy registerItem(String id, Supplier item, List> group) { var lazy = ITEMS.register(WanderingWizardry.id(id), (Supplier)item); group.add(lazy); diff --git a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/base.json b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/base.json index 2b01d4f6..fdfe5380 100644 --- a/common/src/main/resources/assets/wwizardry/models/block/copper_lens/base.json +++ b/common/src/main/resources/assets/wwizardry/models/block/copper_lens/base.json @@ -1,5 +1,7 @@ { "credit": "Made by Cart3r using Blockbench.", + "render_type": "minecraft:cutout", + "ambientocclusion": false, "textures": { "0": "#side", "1": "#end", diff --git a/common/src/main/resources/assets/wwizardry/models/item/copper_lens.json b/common/src/main/resources/assets/wwizardry/models/item/copper_lens.json new file mode 100644 index 00000000..1a72fe47 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/copper_lens.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/copper_lens/normal/unpowered/focused" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/exposed_copper_lens.json b/common/src/main/resources/assets/wwizardry/models/item/exposed_copper_lens.json new file mode 100644 index 00000000..726ed876 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/exposed_copper_lens.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/copper_lens/exposed/unpowered/focused" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/oxidized_copper_lens.json b/common/src/main/resources/assets/wwizardry/models/item/oxidized_copper_lens.json new file mode 100644 index 00000000..c0c4207c --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/oxidized_copper_lens.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/copper_lens/oxidized/unpowered/focused" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/waxed_exposed_copper_lens.json b/common/src/main/resources/assets/wwizardry/models/item/waxed_exposed_copper_lens.json new file mode 100644 index 00000000..726ed876 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/waxed_exposed_copper_lens.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/copper_lens/exposed/unpowered/focused" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/waxed_oxidized_copper_lens.json b/common/src/main/resources/assets/wwizardry/models/item/waxed_oxidized_copper_lens.json new file mode 100644 index 00000000..c0c4207c --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/waxed_oxidized_copper_lens.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/copper_lens/oxidized/unpowered/focused" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/waxed_weathered_copper_lens.json b/common/src/main/resources/assets/wwizardry/models/item/waxed_weathered_copper_lens.json new file mode 100644 index 00000000..977cb509 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/waxed_weathered_copper_lens.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/copper_lens/weathered/unpowered/focused" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/weathered_copper_lens.json b/common/src/main/resources/assets/wwizardry/models/item/weathered_copper_lens.json new file mode 100644 index 00000000..977cb509 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/weathered_copper_lens.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/copper_lens/weathered/unpowered/focused" +} diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/enx_oxidized.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end_oxidized.png similarity index 100% rename from common/src/main/resources/assets/wwizardry/textures/block/copper_lens/enx_oxidized.png rename to common/src/main/resources/assets/wwizardry/textures/block/copper_lens/end_oxidized.png diff --git a/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/lens_exposed.png b/common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass_exposed.png similarity index 100% rename from common/src/main/resources/assets/wwizardry/textures/block/copper_lens/lens_exposed.png rename to common/src/main/resources/assets/wwizardry/textures/block/copper_lens/glass_exposed.png diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index ba747fd5..61781302 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -25,7 +25,7 @@ "Mixin_RedStoneWireBlock", "Mixin_ReloadableResourceManager", "Mixin_SculkVeinBlock_SculkVeinSpreaderConfig", - "Mixin_StructureTemplate" + "Mixin_StructureTemplate", ], "injectors": { "defaultRequire": 1 diff --git a/data/blockstate/copper_lens.fennec b/data/blockstate/copper_lens.fennec new file mode 100644 index 00000000..186211c3 --- /dev/null +++ b/data/blockstate/copper_lens.fennec @@ -0,0 +1,131 @@ +[ + # X + { + when { + powered = "false" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/normal/unpowered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/normal/powered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/normal/unpowered/unfocused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/normal/powered/unfocused" + x = 90 + y = 90 + } + } + + # Y + { + when { + powered = "false" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/normal/unpowered/focused" + } + { + when { + powered = "true" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/normal/powered/focused" + } + { + when { + powered = "false" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/normal/unpowered/unfocused" + } + { + when { + powered = "true" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/normal/powered/unfocused" + } + + # Z + { + when { + powered = "false" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/normal/unpowered/focused" + x = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/normal/powered/focused" + x = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/normal/unpowered/unfocused" + x = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/normal/powered/unfocused" + x = 90 + } + } +] diff --git a/data/blockstate/exposed_copper_lens.fennec b/data/blockstate/exposed_copper_lens.fennec new file mode 100644 index 00000000..f332be2b --- /dev/null +++ b/data/blockstate/exposed_copper_lens.fennec @@ -0,0 +1,131 @@ +[ + # X + { + when { + powered = "false" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/exposed/unpowered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/exposed/powered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/exposed/unpowered/unfocused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/exposed/powered/unfocused" + x = 90 + y = 90 + } + } + + # Y + { + when { + powered = "false" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/exposed/unpowered/focused" + } + { + when { + powered = "true" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/exposed/powered/focused" + } + { + when { + powered = "false" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/exposed/unpowered/unfocused" + } + { + when { + powered = "true" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/exposed/powered/unfocused" + } + + # Z + { + when { + powered = "false" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/exposed/unpowered/focused" + x = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/exposed/powered/focused" + x = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/exposed/unpowered/unfocused" + x = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/exposed/powered/unfocused" + x = 90 + } + } +] diff --git a/data/blockstate/oxidized_copper_lens.fennec b/data/blockstate/oxidized_copper_lens.fennec new file mode 100644 index 00000000..4cc55cac --- /dev/null +++ b/data/blockstate/oxidized_copper_lens.fennec @@ -0,0 +1,131 @@ +[ + # X + { + when { + powered = "false" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/unpowered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/powered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/unpowered/unfocused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/powered/unfocused" + x = 90 + y = 90 + } + } + + # Y + { + when { + powered = "false" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/oxidized/unpowered/focused" + } + { + when { + powered = "true" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/oxidized/powered/focused" + } + { + when { + powered = "false" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/oxidized/unpowered/unfocused" + } + { + when { + powered = "true" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/oxidized/powered/unfocused" + } + + # Z + { + when { + powered = "false" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/unpowered/focused" + x = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/powered/focused" + x = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/unpowered/unfocused" + x = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/powered/unfocused" + x = 90 + } + } +] diff --git a/data/blockstate/waxed_exposed_copper_lens.fennec b/data/blockstate/waxed_exposed_copper_lens.fennec new file mode 100644 index 00000000..f332be2b --- /dev/null +++ b/data/blockstate/waxed_exposed_copper_lens.fennec @@ -0,0 +1,131 @@ +[ + # X + { + when { + powered = "false" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/exposed/unpowered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/exposed/powered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/exposed/unpowered/unfocused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/exposed/powered/unfocused" + x = 90 + y = 90 + } + } + + # Y + { + when { + powered = "false" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/exposed/unpowered/focused" + } + { + when { + powered = "true" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/exposed/powered/focused" + } + { + when { + powered = "false" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/exposed/unpowered/unfocused" + } + { + when { + powered = "true" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/exposed/powered/unfocused" + } + + # Z + { + when { + powered = "false" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/exposed/unpowered/focused" + x = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/exposed/powered/focused" + x = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/exposed/unpowered/unfocused" + x = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/exposed/powered/unfocused" + x = 90 + } + } +] diff --git a/data/blockstate/waxed_oxidized_copper_lens.fennec b/data/blockstate/waxed_oxidized_copper_lens.fennec new file mode 100644 index 00000000..4cc55cac --- /dev/null +++ b/data/blockstate/waxed_oxidized_copper_lens.fennec @@ -0,0 +1,131 @@ +[ + # X + { + when { + powered = "false" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/unpowered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/powered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/unpowered/unfocused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/powered/unfocused" + x = 90 + y = 90 + } + } + + # Y + { + when { + powered = "false" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/oxidized/unpowered/focused" + } + { + when { + powered = "true" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/oxidized/powered/focused" + } + { + when { + powered = "false" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/oxidized/unpowered/unfocused" + } + { + when { + powered = "true" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/oxidized/powered/unfocused" + } + + # Z + { + when { + powered = "false" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/unpowered/focused" + x = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/powered/focused" + x = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/unpowered/unfocused" + x = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/oxidized/powered/unfocused" + x = 90 + } + } +] diff --git a/data/blockstate/waxed_weathered_copper_lens.fennec b/data/blockstate/waxed_weathered_copper_lens.fennec new file mode 100644 index 00000000..93502b28 --- /dev/null +++ b/data/blockstate/waxed_weathered_copper_lens.fennec @@ -0,0 +1,131 @@ +[ + # X + { + when { + powered = "false" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/weathered/unpowered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/weathered/powered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/weathered/unpowered/unfocused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/weathered/powered/unfocused" + x = 90 + y = 90 + } + } + + # Y + { + when { + powered = "false" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/weathered/unpowered/focused" + } + { + when { + powered = "true" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/weathered/powered/focused" + } + { + when { + powered = "false" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/weathered/unpowered/unfocused" + } + { + when { + powered = "true" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/weathered/powered/unfocused" + } + + # Z + { + when { + powered = "false" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/weathered/unpowered/focused" + x = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/weathered/powered/focused" + x = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/weathered/unpowered/unfocused" + x = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/weathered/powered/unfocused" + x = 90 + } + } +] diff --git a/data/blockstate/weathered_copper_lens.fennec b/data/blockstate/weathered_copper_lens.fennec new file mode 100644 index 00000000..93502b28 --- /dev/null +++ b/data/blockstate/weathered_copper_lens.fennec @@ -0,0 +1,131 @@ +[ + # X + { + when { + powered = "false" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/weathered/unpowered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/weathered/powered/focused" + x = 90 + y = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/weathered/unpowered/unfocused" + x = 90 + y = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "x" + } + apply { + model = "wwizardry:block/copper_lens/weathered/powered/unfocused" + x = 90 + y = 90 + } + } + + # Y + { + when { + powered = "false" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/weathered/unpowered/focused" + } + { + when { + powered = "true" + focus = "focused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/weathered/powered/focused" + } + { + when { + powered = "false" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/weathered/unpowered/unfocused" + } + { + when { + powered = "true" + focus = "unfocused" + axis = "y" + } + apply = "wwizardry:block/copper_lens/weathered/powered/unfocused" + } + + # Z + { + when { + powered = "false" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/weathered/unpowered/focused" + x = 90 + } + } + { + when { + powered = "true" + focus = "focused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/weathered/powered/focused" + x = 90 + } + } + { + when { + powered = "false" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/weathered/unpowered/unfocused" + x = 90 + } + } + { + when { + powered = "true" + focus = "unfocused" + axis = "z" + } + apply { + model = "wwizardry:block/copper_lens/weathered/powered/unfocused" + x = 90 + } + } +] diff --git a/data/lang/en_us.fennec b/data/lang/en_us.fennec index eb4cbdaf..2168ef38 100644 --- a/data/lang/en_us.fennec +++ b/data/lang/en_us.fennec @@ -119,6 +119,15 @@ modulo_comparator = "Modulo Comparator" redstone_stepper = "Redstone Stepper" + copper_lens = "Copper Lens" + exposed_copper_lens = "Exposed Copper Lens" + weathered_copper_lens = "Weathered Copper Lens" + oxidized_copper_lens = "Oxidized Copper Lens" + waxed_copper_lens = "Waxed Copper Lens" + waxed_exposed_copper_lens = "Waxed Exposed Copper Lens" + waxed_weathered_copper_lens = "Waxed Weathered Copper Lens" + waxed_oxidized_copper_lens = "Waxed Oxidized Copper Lens" + # Natural sculkflower = "Sculkflower" indigo_caeruleum = "Indigo Caeruleum" diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java index ba3cbc4b..3b1c93f4 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java @@ -21,6 +21,7 @@ import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper; +import net.fabricmc.fabric.api.registry.OxidizableBlocksRegistry; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.core.Registry; @@ -70,6 +71,11 @@ public void onInitialize() { WanderingWizardry.init("fabric"); BlockInitializer.registerSecondaryBlockFunctions(); + + for (var waxable : BlockInitializer.WAXABLES) + OxidizableBlocksRegistry.registerWaxableBlockPair(waxable.getFirst().get(), waxable.getSecond().get()); + for (var waxable : BlockInitializer.WEATHERABLES) + OxidizableBlocksRegistry.registerOxidizableBlockPair(waxable.getFirst().get(), waxable.getSecond().get()); } private static void addWanderingTradesFor(int level) { diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java index 484d953a..3e498bd2 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java @@ -19,7 +19,6 @@ import net.neoforged.fml.ModList; import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; -import net.neoforged.neoforge.client.event.ClientTickEvent; import net.neoforged.neoforge.client.event.EntityRenderersEvent; import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent; import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; diff --git a/neoforge/src/main/resources/data/neoforge/data_maps/block/oxidizables.json b/neoforge/src/main/resources/data/neoforge/data_maps/block/oxidizables.json new file mode 100644 index 00000000..804f5f59 --- /dev/null +++ b/neoforge/src/main/resources/data/neoforge/data_maps/block/oxidizables.json @@ -0,0 +1,13 @@ +{ + "values": { + "wwizardry:copper_lens": { + "next_oxidized_stage": "wwizardry:exposed_copper_lens" + }, + "wwizardry:exposed_copper_lens": { + "next_oxidized_stage": "wwizardry:weathered_copper_lens" + }, + "wwizardry:oxidized_copper_lens": { + "next_oxidized_stage": "wwizardry:oxidized_copper_lens" + } + } +} diff --git a/neoforge/src/main/resources/data/neoforge/data_maps/block/waxables.json b/neoforge/src/main/resources/data/neoforge/data_maps/block/waxables.json new file mode 100644 index 00000000..42dea656 --- /dev/null +++ b/neoforge/src/main/resources/data/neoforge/data_maps/block/waxables.json @@ -0,0 +1,16 @@ +{ + "values": { + "wwizardry:copper_lens": { + "waxed": "wwizardry:waxed_copper_lens" + }, + "wwizardry:exposed_copper_lens": { + "waxed": "wwizardry:waxed_exposed_copper_lens" + }, + "wwizardry:weathered_copper_lens": { + "waxed": "wwizardry:waxed_weathered_copper_lens" + }, + "wwizardry:oxidized_copper_lens": { + "waxed": "wwizardry:waxed_oxidized_copper_lens" + } + } +} From 14201776e1cdefcc729f654fdde482bd616c26a8 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Tue, 27 Aug 2024 18:31:45 -0500 Subject: [PATCH 28/46] Custom explorer map --- .../wwizardry/WanderingWizardry.java | 2 - .../api/registry/RegistryContext.java | 5 ++ .../wwizardry/content/ContentInitializer.java | 3 + .../wwizardry/content/map/MapInitializer.java | 34 ++++++++++ .../content/trades/TradeInitializer.java | 65 ++++++++++++++++++- .../processors/WaterLoggingFixProcessor.java | 1 - .../mixin/Accessor_PotionBrewing.java | 2 - .../mixin/Accessor_StructureProcessor.java | 1 - .../mixin/Mixin_BeaconBlockEntity.java | 2 - .../Mixin_ReloadableResourceManager.java | 2 - .../mixin/Mixin_StructureTemplate.java | 2 - .../wwizardry/mixin/client/Mixin_Model.java | 1 - .../src/main/resources/accesstransformer.cfg | 1 + .../main/resources/wwizardry.accesswidener | 1 + .../wwizardry/neoforge/NeoForgeEvents.java | 10 +++ .../neoforge/NeoForgeInitializer.java | 1 + 16 files changed, 119 insertions(+), 14 deletions(-) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/map/MapInitializer.java diff --git a/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java b/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java index 44e1dea0..8dab6bbf 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/WanderingWizardry.java @@ -1,8 +1,6 @@ package dev.sweetberry.wwizardry; import dev.sweetberry.wwizardry.content.ContentInitializer; -import dev.sweetberry.wwizardry.content.block.BlockInitializer; -import net.minecraft.client.renderer.entity.BoatRenderer; import net.minecraft.resources.ResourceLocation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/api/registry/RegistryContext.java b/common/src/main/java/dev/sweetberry/wwizardry/api/registry/RegistryContext.java index ca6e5742..e878c92d 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/api/registry/RegistryContext.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/api/registry/RegistryContext.java @@ -2,6 +2,7 @@ import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.event.Event; +import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; @@ -36,5 +37,9 @@ public void listen(RegistryCallback listener) { listener.register(registry, registration.id(), registration.object()); } + public Holder holderFor(Lazy lazy) { + return registry.getHolder(registry.getKey(lazy.get())).get(); + } + private record RegistryObject(ResourceLocation id, Lazy object) {} } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index 0d23da4d..373b722c 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -8,6 +8,7 @@ import dev.sweetberry.wwizardry.content.entity.EntityInitializer; import dev.sweetberry.wwizardry.content.events.EventInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; +import dev.sweetberry.wwizardry.content.map.MapInitializer; import dev.sweetberry.wwizardry.content.net.NetworkingInitializer; import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; @@ -22,6 +23,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; +import net.minecraft.world.level.saveddata.maps.MapDecorationType; public class ContentInitializer { public static void init() { @@ -43,5 +45,6 @@ public static void listenToAll(RegistryCallback listener) { WorldgenInitializer.STRUCTURE_PROCESSORS.listen((RegistryCallback>) listener); SoundInitializer.SOUNDS.listen((RegistryCallback) listener); EntityInitializer.ENTITIES.listen((RegistryCallback>) listener); + MapInitializer.MAP_DECORATION_TYPE.listen((RegistryCallback) listener); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/map/MapInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/map/MapInitializer.java new file mode 100644 index 00000000..8ad25248 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/map/MapInitializer.java @@ -0,0 +1,34 @@ +package dev.sweetberry.wwizardry.content.map; + +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.api.Lazy; +import dev.sweetberry.wwizardry.api.registry.RegistryContext; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.level.material.MapColor; +import net.minecraft.world.level.saveddata.maps.MapDecorationType; + +import java.util.function.Supplier; + +public class MapInitializer { + public static final RegistryContext MAP_DECORATION_TYPE = new RegistryContext<>(BuiltInRegistries.MAP_DECORATION_TYPE); + + public static final Lazy SCULK_LAB = registerMapDecorationType( + "sculk_lab", + () -> new MapDecorationType( + WanderingWizardry.id("sculk_lab"), + true, + MapColor.COLOR_GRAY.col, + true, + true + ) + ); + + public static Lazy registerMapDecorationType(String id, Supplier item) { + return MAP_DECORATION_TYPE.register(WanderingWizardry.id(id), item); + } + + public static Holder holder(Lazy value) { + return BuiltInRegistries.MAP_DECORATION_TYPE.getHolder(BuiltInRegistries.MAP_DECORATION_TYPE.getKey(value.get())).get(); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java index 2ebcb3e7..fa6c3f50 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java @@ -1,21 +1,43 @@ package dev.sweetberry.wwizardry.content.trades; +import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.content.datagen.DatagenInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; +import dev.sweetberry.wwizardry.content.map.MapInitializer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.StructureTags; +import net.minecraft.tags.TagKey; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.npc.VillagerTrades; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.item.MapItem; import net.minecraft.world.item.trading.ItemCost; import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.saveddata.maps.MapDecorationType; +import net.minecraft.world.level.saveddata.maps.MapItemSavedData; +import org.jetbrains.annotations.Nullable; -import java.util.function.Consumer; +import java.util.Optional; import java.util.function.Supplier; public class TradeInitializer { + public static final TagKey ON_LAB_EXPLORER_MAPS = TagKey.create(Registries.STRUCTURE, WanderingWizardry.id("on_lab_explorer_maps")); + void a() { + // cost, destination, displayName, destinationType, maxUsage, villagerXp + new VillagerTrades.TreasureMapForEmeralds(13, ON_LAB_EXPLORER_MAPS, "filled_map.wwizardry.sculk_lab", MapInitializer.holder(MapInitializer.SCULK_LAB), 12, 5); + } + public static final VillagerTrades.ItemListing[][] WANDERING_TRADER_OFFERS = new VillagerTrades.ItemListing[][] { { new ItemsForEmeralds( @@ -39,10 +61,51 @@ public class TradeInitializer { new ItemsForEmeralds( ItemInitializer.CRYSTALLINE_SCULK_SHARD, 3, 1, 12, 5, 0.05f + ), + new TreasureMapForEmeralds( + 12, + ON_LAB_EXPLORER_MAPS, + "filled_map.wwizardry.sculk_lab", + MapInitializer.SCULK_LAB, + 1, + 5 ) } }; + public static class TreasureMapForEmeralds implements VillagerTrades.ItemListing { + private final int emeraldCost; + private final TagKey destination; + private final String displayName; + private final Lazy destinationType; + private final int maxUses; + private final int villagerXp; + + public TreasureMapForEmeralds(int emeraldCost, TagKey destination, String displayName, Lazy destinationType, int maxUses, int villagerXp) { + this.emeraldCost = emeraldCost; + this.destination = destination; + this.displayName = displayName; + this.destinationType = destinationType; + this.maxUses = maxUses; + this.villagerXp = villagerXp; + } + + @Nullable + public MerchantOffer getOffer(Entity entity, RandomSource rand) { + if (!(entity.level() instanceof ServerLevel)) + return null; + ServerLevel level = (ServerLevel)entity.level(); + BlockPos pos = level.findNearestMapStructure(destination, entity.blockPosition(), 100, true); + if (pos == null) + return null; + ItemStack mapStack = MapItem.create(level, pos.getX(), pos.getZ(), (byte)2, true, true); + MapItem.renderBiomePreviewMap(level, mapStack); + MapItemSavedData.addTargetDecoration(mapStack, pos, "+", MapInitializer.MAP_DECORATION_TYPE.holderFor(destinationType)); + mapStack.set(DataComponents.ITEM_NAME, Component.translatable(displayName)); + return new MerchantOffer(new ItemCost(Items.EMERALD, emeraldCost), Optional.of(new ItemCost(Items.COMPASS)), mapStack, maxUses, villagerXp, 0.2F); + } + } + public static class ItemsForEmeralds implements VillagerTrades.ItemListing { private final Lazy item; private final int count; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java index 484efe8d..4e4c90a6 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java @@ -1,6 +1,5 @@ package dev.sweetberry.wwizardry.content.world.processors; -import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.minecraft.core.BlockPos; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java index 4d3312ac..3d9e8b5b 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_PotionBrewing.java @@ -1,10 +1,8 @@ package dev.sweetberry.wwizardry.mixin; -import net.minecraft.world.item.Item; import net.minecraft.world.item.alchemy.Potion; import net.minecraft.world.item.alchemy.PotionBrewing; import net.minecraft.world.item.crafting.Ingredient; -import org.apache.commons.lang3.NotImplementedException; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_StructureProcessor.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_StructureProcessor.java index 2078985f..02f72c30 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_StructureProcessor.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_StructureProcessor.java @@ -3,7 +3,6 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(StructureProcessor.class) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java index 4437eaf6..f158844b 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java @@ -5,8 +5,6 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.content.block.redstone.CopperLensBlock; import net.minecraft.core.BlockPos; -import net.minecraft.core.Holder; -import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.BlockGetter; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java index 4f35fa8b..e4e90455 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ReloadableResourceManager.java @@ -1,10 +1,8 @@ package dev.sweetberry.wwizardry.mixin; -import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.content.datagen.DatagenInitializer; import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackType; -import net.minecraft.server.packs.resources.CloseableResourceManager; import net.minecraft.server.packs.resources.MultiPackResourceManager; import net.minecraft.server.packs.resources.ReloadInstance; import net.minecraft.server.packs.resources.ReloadableResourceManager; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_StructureTemplate.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_StructureTemplate.java index b6a85919..1e3a1b81 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_StructureTemplate.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_StructureTemplate.java @@ -1,8 +1,6 @@ package dev.sweetberry.wwizardry.mixin; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; -import dev.sweetberry.wwizardry.content.world.processors.WaterLoggingFixProcessor; -import dev.sweetberry.wwizardry.mixin.Accessor_StructureProcessor; import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; import net.minecraft.world.level.ServerLevelAccessor; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_Model.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_Model.java index 3177febe..75d7a91f 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_Model.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/client/Mixin_Model.java @@ -1,7 +1,6 @@ package dev.sweetberry.wwizardry.mixin.client; import dev.sweetberry.wwizardry.client.content.AnimatedTextureMap; -import net.minecraft.client.model.BoatModel; import net.minecraft.client.model.Model; import net.minecraft.client.renderer.RenderType; import net.minecraft.resources.ResourceLocation; diff --git a/common/src/main/resources/accesstransformer.cfg b/common/src/main/resources/accesstransformer.cfg index e0605311..817045d6 100644 --- a/common/src/main/resources/accesstransformer.cfg +++ b/common/src/main/resources/accesstransformer.cfg @@ -1,6 +1,7 @@ public net.minecraft.world.level.block.entity.BlockEntityType$BlockEntitySupplier public net.minecraft.world.item.alchemy.PotionBrewing$Mix public net.minecraft.world.entity.npc.VillagerTrades$ItemsForEmeralds +public net.minecraft.world.entity.npc.VillagerTrades$TreasureMapForEmeralds public net.minecraft.server.level.ServerPlayer$RespawnPosAngle public net.minecraft.world.level.block.StairBlock (Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V diff --git a/common/src/main/resources/wwizardry.accesswidener b/common/src/main/resources/wwizardry.accesswidener index 8092758e..7be71262 100644 --- a/common/src/main/resources/wwizardry.accesswidener +++ b/common/src/main/resources/wwizardry.accesswidener @@ -3,6 +3,7 @@ accessWidener v1 named accessible class net/minecraft/world/level/block/entity/BlockEntityType$BlockEntitySupplier accessible class net/minecraft/world/item/alchemy/PotionBrewing$Mix accessible class net/minecraft/world/entity/npc/VillagerTrades$ItemsForEmeralds +accessible class net/minecraft/world/entity/npc/VillagerTrades$TreasureMapForEmeralds accessible class net/minecraft/server/level/ServerPlayer$RespawnPosAngle accessible method net/minecraft/world/level/block/StairBlock (Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java index 0517c92b..508adac8 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java @@ -4,6 +4,7 @@ import dev.sweetberry.wwizardry.client.WanderingWizardryClient; import dev.sweetberry.wwizardry.client.content.events.ItemTooltipHandler; import dev.sweetberry.wwizardry.content.events.UseBlockHandler; +import dev.sweetberry.wwizardry.content.trades.TradeInitializer; import net.minecraft.client.renderer.entity.BoatRenderer; import net.minecraft.network.chat.FormattedText; import net.minecraft.world.InteractionResult; @@ -16,12 +17,21 @@ import net.neoforged.neoforge.client.event.RenderTooltipEvent; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.event.entity.player.UseItemOnBlockEvent; +import net.neoforged.neoforge.event.village.WandererTradesEvent; + +import java.util.Arrays; public class NeoForgeEvents { public static void init() { NeoForge.EVENT_BUS.register(NeoForgeEvents.class); } + @SubscribeEvent + public static void onWanderingTrades(WandererTradesEvent ev) { + ev.getGenericTrades().addAll(Arrays.stream(TradeInitializer.WANDERING_TRADER_OFFERS[0]).toList()); + ev.getRareTrades().addAll(Arrays.stream(TradeInitializer.WANDERING_TRADER_OFFERS[1]).toList()); + } + @SubscribeEvent public static void onTooltip(RenderTooltipEvent.GatherComponents event) { var lines = event.getTooltipElements(); diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java index 3e498bd2..6838e326 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java @@ -22,6 +22,7 @@ import net.neoforged.neoforge.client.event.EntityRenderersEvent; import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent; import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; +import net.neoforged.neoforge.event.village.WandererTradesEvent; import net.neoforged.neoforge.registries.RegisterEvent; @Mod("wwizardry") From 994d9240cb513a5aba54f2f853520f13afb50517 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Tue, 27 Aug 2024 19:44:32 -0500 Subject: [PATCH 29/46] Snail changes + fix anvil charm --- .../recipe/bone_meal_from_snail_shell.json | 14 ++++++++++ .../data/wwizardry/recipe/copper_lens.json | 28 +++++++++++++++++++ .../worldgen/biome/forgotten_fields.json | 6 ++-- .../worldgen/biome/fungal_forest.json | 6 ++-- .../content/item/charm/AnvilCharmItem.java | 5 +++- .../recipes/bone_meal_from_snail_shell.fennec | 13 +++++++++ data/recipes/copper_lens.fennec | 21 ++++++++++++++ data/world/biome/forgotten_fields.fennec | 6 ++-- data/world/biome/fungal_forest.fennec | 6 ++-- 9 files changed, 92 insertions(+), 13 deletions(-) create mode 100644 common/src/generated/resources/data/wwizardry/recipe/bone_meal_from_snail_shell.json create mode 100644 common/src/generated/resources/data/wwizardry/recipe/copper_lens.json create mode 100644 data/recipes/bone_meal_from_snail_shell.fennec create mode 100644 data/recipes/copper_lens.fennec diff --git a/common/src/generated/resources/data/wwizardry/recipe/bone_meal_from_snail_shell.json b/common/src/generated/resources/data/wwizardry/recipe/bone_meal_from_snail_shell.json new file mode 100644 index 00000000..c318745c --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/recipe/bone_meal_from_snail_shell.json @@ -0,0 +1,14 @@ +{ + "type": "crafting_shapeless", + "category": "misc", + "show_notification": true, + "ingredients": [ + { + "item": "wwizardry:snail_shell" + } + ], + "result": { + "count": 1, + "id": "bone_meal" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/copper_lens.json b/common/src/generated/resources/data/wwizardry/recipe/copper_lens.json new file mode 100644 index 00000000..46baf080 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/recipe/copper_lens.json @@ -0,0 +1,28 @@ +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "copper_ingot" + }, + "G": { + "tag": "c:glass_blocks" + }, + "C": { + "item": "chain" + }, + "A": { + "item": "amethyst_shard" + } + }, + "pattern": [ + "#A#", + "#C#", + "#G#" + ], + "result": { + "count": 1, + "id": "wwizardry:copper_lens" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json b/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json index 210c7aa3..0c07431b 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json @@ -132,9 +132,9 @@ }, { "type": "wwizardry:snail", - "weight": 6, - "minCount": 4, - "maxCount": 8 + "weight": 14, + "minCount": 7, + "maxCount": 10 } ], "misc": [], diff --git a/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json b/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json index 457d3a39..c16db2fa 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/biome/fungal_forest.json @@ -34,9 +34,9 @@ "creature": [ { "type": "wwizardry:snail", - "weight": 6, - "minCount": 4, - "maxCount": 8 + "weight": 14, + "minCount": 7, + "maxCount": 10 } ], "misc": [], diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java index cd942aa4..27b2c86a 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/charm/AnvilCharmItem.java @@ -2,6 +2,7 @@ import dev.sweetberry.wwizardry.api.altar.AltarRecipeView; import dev.sweetberry.wwizardry.config.Config; +import net.minecraft.core.component.DataComponents; import net.minecraft.world.item.*; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.EnchantmentInstance; @@ -30,7 +31,7 @@ public boolean tryCraft(AltarRecipeView view, Level world) { else view.setResultInPedestal(i, item); } - if (bookDirs.isEmpty()) + if (bookDirs.size() <= 1) return false; var book = enchantedBookItem.getDefaultInstance(); var bookEnchants = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(book)); @@ -47,6 +48,8 @@ public boolean tryCraft(AltarRecipeView view, Level world) { } } + book.set(DataComponents.STORED_ENCHANTMENTS, bookEnchants.toImmutable()); + view.setRecipeResult(book); return true; } diff --git a/data/recipes/bone_meal_from_snail_shell.fennec b/data/recipes/bone_meal_from_snail_shell.fennec new file mode 100644 index 00000000..479ea4ef --- /dev/null +++ b/data/recipes/bone_meal_from_snail_shell.fennec @@ -0,0 +1,13 @@ +type = "crafting_shapeless" + +category = "misc" +-show_notification + +ingredients [ + { item="wwizardry:snail_shell" } +] + +result { + count = 1 + id = "bone_meal" +} diff --git a/data/recipes/copper_lens.fennec b/data/recipes/copper_lens.fennec new file mode 100644 index 00000000..c2c972fa --- /dev/null +++ b/data/recipes/copper_lens.fennec @@ -0,0 +1,21 @@ +type = "crafting_shaped" + +category = "building" +-show_notification + +key { + "#" { item = "copper_ingot" } + G { tag = "c:glass_blocks" } + C { item = "chain" } + A { item = "amethyst_shard" } +} +pattern [ + "#A#" + "#C#" + "#G#" +] + +result { + count = 1 + id = "wwizardry:copper_lens" +} diff --git a/data/world/biome/forgotten_fields.fennec b/data/world/biome/forgotten_fields.fennec index d9b777ba..3388f7c4 100644 --- a/data/world/biome/forgotten_fields.fennec +++ b/data/world/biome/forgotten_fields.fennec @@ -138,9 +138,9 @@ spawners { } { type = "wwizardry:snail" - weight = 6 - minCount = 4 - maxCount = 8 + weight = 14 + minCount = 7 + maxCount = 10 } ] misc [] diff --git a/data/world/biome/fungal_forest.fennec b/data/world/biome/fungal_forest.fennec index 1088323f..2ec0d317 100644 --- a/data/world/biome/fungal_forest.fennec +++ b/data/world/biome/fungal_forest.fennec @@ -35,9 +35,9 @@ spawners { creature [ { type = "wwizardry:snail" - weight = 6 - minCount = 4 - maxCount = 8 + weight = 14 + minCount = 7 + maxCount = 10 } ] misc [] From f23ac789fddac69c3fb1d843b00ecc6b57c794e9 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Tue, 27 Aug 2024 19:53:06 -0500 Subject: [PATCH 30/46] Update .woodpecker.yaml --- .woodpecker.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.woodpecker.yaml b/.woodpecker.yaml index a877c261..d5c30f0a 100644 --- a/.woodpecker.yaml +++ b/.woodpecker.yaml @@ -1,6 +1,6 @@ steps: - name: build - image: "eclipse-temurin:17.0.10_7-jdk-alpine" + image: "eclipse-temurin:21.0.4_7-jdk-alpine" commands: - ./gradlew build - name: notify From 79d0c625737016190b6ee0c60c64c14d6599d21a Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 29 Aug 2024 19:00:19 -0500 Subject: [PATCH 31/46] Sculk crystal blocks and crystal glass blocks --- .../wwizardry/blockstates/amethyst_glass.json | 7 ++ .../blockstates/budding_sculk_crystal.json | 7 ++ .../wwizardry/blockstates/diamond_glass.json | 7 ++ .../blockstates/large_sculk_bud.json | 30 +++++ .../blockstates/medium_sculk_bud.json | 30 +++++ .../wwizardry/blockstates/quartz_glass.json | 7 ++ .../blockstates/rose_quartz_glass.json | 7 ++ .../wwizardry/blockstates/sculk_cluster.json | 30 +++++ .../wwizardry/blockstates/sculk_crystal.json | 7 ++ .../blockstates/small_sculk_bud.json | 30 +++++ .../assets/wwizardry/lang/en_us.json | 10 ++ .../data/c/tags/block/glass_blocks.json | 16 +++ .../client/content/RenderLayers.java | 12 +- .../content/block/BlockInitializer.java | 104 +++++++++++++++++- .../content/block/nature/BuddingBlock.java | 64 +++++++++++ .../content/item/ItemInitializer.java | 90 +++++++++++++++ .../models/block/amethyst_glass.json | 6 + .../models/block/budding_sculk_crystal.json | 6 + .../wwizardry/models/block/diamond_glass.json | 6 + .../models/block/large_sculk_bud.json | 6 + .../models/block/medium_sculk_bud.json | 6 + .../wwizardry/models/block/quartz_glass.json | 6 + .../models/block/rose_quartz_glass.json | 6 + .../wwizardry/models/block/sculk_cluster.json | 6 + .../wwizardry/models/block/sculk_crystal.json | 6 + .../models/block/small_sculk_bud.json | 6 + .../wwizardry/models/item/amethyst_glass.json | 3 + .../models/item/budding_sculk_crystal.json | 3 + .../wwizardry/models/item/diamond_glass.json | 3 + .../models/item/large_sculk_bud.json | 16 +++ .../models/item/medium_sculk_bud.json | 16 +++ .../wwizardry/models/item/quartz_glass.json | 3 + .../models/item/rose_quartz_glass.json | 3 + .../wwizardry/models/item/sculk_cluster.json | 16 +++ .../wwizardry/models/item/sculk_crystal.json | 3 + .../models/item/small_sculk_bud.json | 16 +++ .../textures/block/amethyst_glass.png | Bin 0 -> 150 bytes .../textures/block/budding_sculk_crystal.png | Bin 0 -> 519 bytes .../textures/block/diamond_glass.png | Bin 0 -> 150 bytes .../textures/block/large_sculk_bud.png | Bin 0 -> 324 bytes .../textures/block/medium_sculk_bud.png | Bin 0 -> 228 bytes .../wwizardry/textures/block/quartz_glass.png | Bin 0 -> 150 bytes .../textures/block/rose_quartz_glass.png | Bin 0 -> 150 bytes .../textures/block/sculk_cluster.png | Bin 0 -> 423 bytes .../textures/block/sculk_crystal.png | Bin 0 -> 471 bytes .../textures/block/small_sculk_bud.png | Bin 0 -> 192 bytes data/blockstate/amethyst_glass.fennec | 1 + data/blockstate/budding_sculk_crystal.fennec | 1 + data/blockstate/diamond_glass.fennec | 1 + data/blockstate/large_sculk_bud.fennec | 44 ++++++++ data/blockstate/medium_sculk_bud.fennec | 44 ++++++++ data/blockstate/quartz_glass.fennec | 1 + data/blockstate/rose_quartz_glass.fennec | 1 + data/blockstate/sculk_cluster.fennec | 44 ++++++++ data/blockstate/sculk_crystal.fennec | 1 + data/blockstate/small_sculk_bud.fennec | 44 ++++++++ data/lang/en_us.fennec | 12 ++ data/tags/c.fennec | 5 + data/tags/wwizardry.fennec | 10 ++ 59 files changed, 804 insertions(+), 5 deletions(-) create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/amethyst_glass.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/budding_sculk_crystal.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/diamond_glass.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/large_sculk_bud.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/medium_sculk_bud.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/quartz_glass.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_glass.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/sculk_cluster.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/sculk_crystal.json create mode 100644 common/src/generated/resources/assets/wwizardry/blockstates/small_sculk_bud.json create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/BuddingBlock.java create mode 100644 common/src/main/resources/assets/wwizardry/models/block/amethyst_glass.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/budding_sculk_crystal.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/diamond_glass.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/large_sculk_bud.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/medium_sculk_bud.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/quartz_glass.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/rose_quartz_glass.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/sculk_cluster.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/sculk_crystal.json create mode 100644 common/src/main/resources/assets/wwizardry/models/block/small_sculk_bud.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/amethyst_glass.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/budding_sculk_crystal.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/diamond_glass.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/large_sculk_bud.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/medium_sculk_bud.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/quartz_glass.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/rose_quartz_glass.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/sculk_cluster.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/sculk_crystal.json create mode 100644 common/src/main/resources/assets/wwizardry/models/item/small_sculk_bud.json create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/amethyst_glass.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/budding_sculk_crystal.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/diamond_glass.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/large_sculk_bud.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/medium_sculk_bud.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/quartz_glass.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/rose_quartz_glass.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/sculk_cluster.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/sculk_crystal.png create mode 100644 common/src/main/resources/assets/wwizardry/textures/block/small_sculk_bud.png create mode 100644 data/blockstate/amethyst_glass.fennec create mode 100644 data/blockstate/budding_sculk_crystal.fennec create mode 100644 data/blockstate/diamond_glass.fennec create mode 100644 data/blockstate/large_sculk_bud.fennec create mode 100644 data/blockstate/medium_sculk_bud.fennec create mode 100644 data/blockstate/quartz_glass.fennec create mode 100644 data/blockstate/rose_quartz_glass.fennec create mode 100644 data/blockstate/sculk_cluster.fennec create mode 100644 data/blockstate/sculk_crystal.fennec create mode 100644 data/blockstate/small_sculk_bud.fennec diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/amethyst_glass.json b/common/src/generated/resources/assets/wwizardry/blockstates/amethyst_glass.json new file mode 100644 index 00000000..aa797bf2 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/amethyst_glass.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "wwizardry:block/amethyst_glass" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/budding_sculk_crystal.json b/common/src/generated/resources/assets/wwizardry/blockstates/budding_sculk_crystal.json new file mode 100644 index 00000000..7ac3e0d2 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/budding_sculk_crystal.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "wwizardry:block/budding_sculk_crystal" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/diamond_glass.json b/common/src/generated/resources/assets/wwizardry/blockstates/diamond_glass.json new file mode 100644 index 00000000..1578bb67 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/diamond_glass.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "wwizardry:block/diamond_glass" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/large_sculk_bud.json b/common/src/generated/resources/assets/wwizardry/blockstates/large_sculk_bud.json new file mode 100644 index 00000000..a0210f25 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/large_sculk_bud.json @@ -0,0 +1,30 @@ +{ + "variants": { + "facing=down": { + "model": "wwizardry:block/large_sculk_bud", + "x": 180 + }, + "facing=east": { + "model": "wwizardry:block/large_sculk_bud", + "x": 90, + "y": 90 + }, + "facing=north": { + "model": "wwizardry:block/large_sculk_bud", + "x": 90 + }, + "facing=south": { + "model": "wwizardry:block/large_sculk_bud", + "x": 90, + "y": 180 + }, + "facing=up": { + "model": "wwizardry:block/large_sculk_bud" + }, + "facing=west": { + "model": "wwizardry:block/large_sculk_bud", + "x": 90, + "y": 270 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/medium_sculk_bud.json b/common/src/generated/resources/assets/wwizardry/blockstates/medium_sculk_bud.json new file mode 100644 index 00000000..be5efb40 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/medium_sculk_bud.json @@ -0,0 +1,30 @@ +{ + "variants": { + "facing=down": { + "model": "wwizardry:block/medium_sculk_bud", + "x": 180 + }, + "facing=east": { + "model": "wwizardry:block/medium_sculk_bud", + "x": 90, + "y": 90 + }, + "facing=north": { + "model": "wwizardry:block/medium_sculk_bud", + "x": 90 + }, + "facing=south": { + "model": "wwizardry:block/medium_sculk_bud", + "x": 90, + "y": 180 + }, + "facing=up": { + "model": "wwizardry:block/medium_sculk_bud" + }, + "facing=west": { + "model": "wwizardry:block/medium_sculk_bud", + "x": 90, + "y": 270 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/quartz_glass.json b/common/src/generated/resources/assets/wwizardry/blockstates/quartz_glass.json new file mode 100644 index 00000000..6e277541 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/quartz_glass.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "wwizardry:block/quartz_glass" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_glass.json b/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_glass.json new file mode 100644 index 00000000..25005be8 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/rose_quartz_glass.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "wwizardry:block/rose_quartz_glass" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/sculk_cluster.json b/common/src/generated/resources/assets/wwizardry/blockstates/sculk_cluster.json new file mode 100644 index 00000000..896e62b2 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/sculk_cluster.json @@ -0,0 +1,30 @@ +{ + "variants": { + "facing=down": { + "model": "wwizardry:block/sculk_cluster", + "x": 180 + }, + "facing=east": { + "model": "wwizardry:block/sculk_cluster", + "x": 90, + "y": 90 + }, + "facing=north": { + "model": "wwizardry:block/sculk_cluster", + "x": 90 + }, + "facing=south": { + "model": "wwizardry:block/sculk_cluster", + "x": 90, + "y": 180 + }, + "facing=up": { + "model": "wwizardry:block/sculk_cluster" + }, + "facing=west": { + "model": "wwizardry:block/sculk_cluster", + "x": 90, + "y": 270 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/sculk_crystal.json b/common/src/generated/resources/assets/wwizardry/blockstates/sculk_crystal.json new file mode 100644 index 00000000..29f8df81 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/sculk_crystal.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "wwizardry:block/sculk_crystal" + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/small_sculk_bud.json b/common/src/generated/resources/assets/wwizardry/blockstates/small_sculk_bud.json new file mode 100644 index 00000000..542eb0f2 --- /dev/null +++ b/common/src/generated/resources/assets/wwizardry/blockstates/small_sculk_bud.json @@ -0,0 +1,30 @@ +{ + "variants": { + "facing=down": { + "model": "wwizardry:block/small_sculk_bud", + "x": 180 + }, + "facing=east": { + "model": "wwizardry:block/small_sculk_bud", + "x": 90, + "y": 90 + }, + "facing=north": { + "model": "wwizardry:block/small_sculk_bud", + "x": 90 + }, + "facing=south": { + "model": "wwizardry:block/small_sculk_bud", + "x": 90, + "y": 180 + }, + "facing=up": { + "model": "wwizardry:block/small_sculk_bud" + }, + "facing=west": { + "model": "wwizardry:block/small_sculk_bud", + "x": 90, + "y": 270 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index 35e48115..939cb1cf 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -67,6 +67,16 @@ "block.wwizardry.indigo_caeruleum": "Indigo Caeruleum", "block.wwizardry.mycelial_sand": "Mycelial Sand", "block.wwizardry.snail_shell": "Snail Shell", + "block.wwizardry.small_sculk_bud": "Small Sculk Bud", + "block.wwizardry.medium_sculk_bud": "Medium Sculk Bud", + "block.wwizardry.large_sculk_bud": "Large Sculk Bud", + "block.wwizardry.sculk_cluster": "Sculk Cluster", + "block.wwizardry.sculk_crystal": "Sculk Crystal", + "block.wwizardry.budding_sculk_crystal": "Budding Sculk Crystal", + "block.wwizardry.quartz_glass": "Quartz Glass", + "block.wwizardry.rose_quartz_glass": "Rose Quartz Glass", + "block.wwizardry.diamond_glass": "Diamond Glass", + "block.wwizardry.amethyst_glass": "Amethyst Glass", "block.wwizardry.altar_pedestal": "Altar Pedestal", "block.wwizardry.altar_catalyzer": "Altar Catalyzer", "block.wwizardry.stripped_denia_log": "Stripped Denia Log", diff --git a/common/src/generated/resources/data/c/tags/block/glass_blocks.json b/common/src/generated/resources/data/c/tags/block/glass_blocks.json index e9e4db76..2093e393 100644 --- a/common/src/generated/resources/data/c/tags/block/glass_blocks.json +++ b/common/src/generated/resources/data/c/tags/block/glass_blocks.json @@ -4,6 +4,22 @@ { "required": false, "id": "wwizardry:reinforced_glass" + }, + { + "required": false, + "id": "wwizardry:quartz_glass" + }, + { + "required": false, + "id": "wwizardry:rose_quartz_glass" + }, + { + "required": false, + "id": "wwizardry:diamond_glass" + }, + { + "required": false, + "id": "wwizardry:amethyst_glass" } ] } \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java b/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java index f3beed80..ad43ed49 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/client/content/RenderLayers.java @@ -36,7 +36,17 @@ public static void init() { (Supplier)(Object) BlockInitializer.WAXED_COPPER_LENS, (Supplier)(Object) BlockInitializer.WAXED_EXPOSED_COPPER_LENS, (Supplier)(Object) BlockInitializer.WAXED_WEATHERED_COPPER_LENS, - (Supplier)(Object) BlockInitializer.WAXED_OXIDIZED_COPPER_LENS + (Supplier)(Object) BlockInitializer.WAXED_OXIDIZED_COPPER_LENS, + BlockInitializer.SMALL_SCULK_BUD, + BlockInitializer.MEDIUM_SCULK_BUD, + BlockInitializer.LARGE_SCULK_BUD, + BlockInitializer.SCULK_CLUSTER + ); + put(RenderType.translucent(), + BlockInitializer.QUARTZ_GLASS, + BlockInitializer.ROSE_QUARTZ_GLASS, + BlockInitializer.DIAMOND_GLASS, + BlockInitializer.AMETHYST_GLASS ); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java index 18855aed..e523aa0e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java @@ -9,10 +9,7 @@ import dev.sweetberry.wwizardry.content.block.entity.AltarCatalyzerBlockEntity; import dev.sweetberry.wwizardry.content.block.entity.AltarPedestalBlockEntity; import dev.sweetberry.wwizardry.content.block.entity.LogicGateBlockEntity; -import dev.sweetberry.wwizardry.content.block.nature.FallingDecayableBlock; -import dev.sweetberry.wwizardry.content.block.nature.RootedFlowerBlock; -import dev.sweetberry.wwizardry.content.block.nature.RootedPlantBlock; -import dev.sweetberry.wwizardry.content.block.nature.SculkflowerBlock; +import dev.sweetberry.wwizardry.content.block.nature.*; import dev.sweetberry.wwizardry.content.block.redstone.CopperLensBlock; import dev.sweetberry.wwizardry.content.block.redstone.LogicGateBlock; import dev.sweetberry.wwizardry.content.block.redstone.ResonatorBlock; @@ -23,6 +20,7 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -331,6 +329,104 @@ public class BlockInitializer { ) ); + public static final Lazy SMALL_SCULK_BUD = registerBlock( + "small_sculk_bud", + () -> new AmethystClusterBlock( + 3, 4, + BlockBehaviour.Properties + .ofFullCopy(Blocks.SMALL_AMETHYST_BUD) + .mapColor(MapColor.ICE) + ) + ); + + public static final Lazy MEDIUM_SCULK_BUD = registerBlock( + "medium_sculk_bud", + () -> new AmethystClusterBlock( + 4, 3, + BlockBehaviour.Properties + .ofFullCopy(Blocks.MEDIUM_AMETHYST_BUD) + .mapColor(MapColor.ICE) + ) + ); + + public static final Lazy LARGE_SCULK_BUD = registerBlock( + "large_sculk_bud", + () -> new AmethystClusterBlock( + 5, 3, + BlockBehaviour.Properties + .ofFullCopy(Blocks.LARGE_AMETHYST_BUD) + .mapColor(MapColor.ICE) + ) + ); + + public static final Lazy SCULK_CLUSTER = registerBlock( + "sculk_cluster", + () -> new AmethystClusterBlock( + 7, 3, + BlockBehaviour.Properties + .ofFullCopy(Blocks.AMETHYST_CLUSTER) + .mapColor(MapColor.ICE) + ) + ); + + public static final Lazy SCULK_CRYSTAL = registerBlock( + "sculk_crystal", + () -> new Block( + BlockBehaviour.Properties + .ofFullCopy(Blocks.AMETHYST_BLOCK) + .mapColor(MapColor.ICE) + ) + ); + + public static final Lazy BUDDING_SCULK_CRYSTAL = registerBlock( + "budding_sculk_crystal", + () -> new BuddingBlock( + BlockBehaviour.Properties + .ofFullCopy(Blocks.AMETHYST_BLOCK) + .mapColor(MapColor.ICE), + SMALL_SCULK_BUD, + MEDIUM_SCULK_BUD, + LARGE_SCULK_BUD, + SCULK_CLUSTER + ) + ); + + public static final Lazy QUARTZ_GLASS = registerBlock( + "quartz_glass", + () -> new StainedGlassBlock( + DyeColor.WHITE, + BlockBehaviour.Properties + .ofFullCopy(Blocks.GLASS) + ) + ); + + public static final Lazy ROSE_QUARTZ_GLASS = registerBlock( + "rose_quartz_glass", + () -> new StainedGlassBlock( + DyeColor.PINK, + BlockBehaviour.Properties + .ofFullCopy(Blocks.GLASS) + ) + ); + + public static final Lazy DIAMOND_GLASS = registerBlock( + "diamond_glass", + () -> new StainedGlassBlock( + DyeColor.CYAN, + BlockBehaviour.Properties + .ofFullCopy(Blocks.GLASS) + ) + ); + + public static final Lazy AMETHYST_GLASS = registerBlock( + "amethyst_glass", + () -> new StainedGlassBlock( + DyeColor.MAGENTA, + BlockBehaviour.Properties + .ofFullCopy(Blocks.GLASS) + ) + ); + public static final Lazy> ALTAR_PEDESTAL_TYPE = registerBlockEntity( "altar_pedestal", () -> BlockEntityType.Builder diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/BuddingBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/BuddingBlock.java new file mode 100644 index 00000000..367d9084 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/nature/BuddingBlock.java @@ -0,0 +1,64 @@ +package dev.sweetberry.wwizardry.content.block.nature; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluids; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +public class BuddingBlock extends Block { + public static final int GROWTH_CHANCE = 5; + private static final Direction[] DIRECTIONS = Direction.values(); + public final Supplier smallBud; + public final Supplier mediumBud; + public final Supplier largeBud; + public final Supplier cluster; + + public BuddingBlock(BlockBehaviour.Properties properties, Supplier smallBud, Supplier mediumBud, Supplier largeBud, Supplier cluster) { + super(properties); + this.smallBud = smallBud; + this.mediumBud = mediumBud; + this.largeBud = largeBud; + this.cluster = cluster; + } + + @Override + protected void randomTick(@NotNull BlockState state, @NotNull ServerLevel level, @NotNull BlockPos pos, RandomSource rand) { + if (rand.nextInt(GROWTH_CHANCE) != 0) + return; + var direction = DIRECTIONS[rand.nextInt(DIRECTIONS.length)]; + var budPos = pos.relative(direction); + var budState = level.getBlockState(budPos); + Block block = null; + if (canClusterGrowAtState(budState)) { + block = smallBud.get(); + } else if (budState.is(smallBud.get()) && budState.getValue(AmethystClusterBlock.FACING) == direction) { + block = mediumBud.get(); + } else if (budState.is(mediumBud.get()) && budState.getValue(AmethystClusterBlock.FACING) == direction) { + block = largeBud.get(); + } else if (budState.is(largeBud.get()) && budState.getValue(AmethystClusterBlock.FACING) == direction) { + block = cluster.get(); + } + + if (block != null) { + var newBugState = block + .defaultBlockState() + .setValue(AmethystClusterBlock.FACING, direction) + .setValue(AmethystClusterBlock.WATERLOGGED, budState.getFluidState().getType() == Fluids.WATER); + level.setBlockAndUpdate(budPos, newBugState); + } + } + + public static boolean canClusterGrowAtState(BlockState state) { + return state.isAir() || state.is(Blocks.WATER) && state.getFluidState().getAmount() == 8; + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java index cf274285..9dcec2da 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/item/ItemInitializer.java @@ -384,6 +384,96 @@ public class ItemInitializer { BLOCKS_STACKS ); + public static final Lazy SMALL_SCULK_BUD = registerItem( + "small_sculk_bud", + () -> new BlockItem( + BlockInitializer.SMALL_SCULK_BUD.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy MEDIUM_SCULK_BUD = registerItem( + "medium_sculk_bud", + () -> new BlockItem( + BlockInitializer.MEDIUM_SCULK_BUD.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy LARGE_SCULK_BUD = registerItem( + "large_sculk_bud", + () -> new BlockItem( + BlockInitializer.LARGE_SCULK_BUD.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy SCULK_CLUSTER = registerItem( + "sculk_cluster", + () -> new BlockItem( + BlockInitializer.SCULK_CLUSTER.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy SCULK_CRYSTAL = registerItem( + "sculk_crystal", + () -> new BlockItem( + BlockInitializer.SCULK_CRYSTAL.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy BUDDING_SCULK_CRYSTAL = registerItem( + "budding_sculk_crystal", + () -> new BlockItem( + BlockInitializer.BUDDING_SCULK_CRYSTAL.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy QUARTZ_GLASS = registerItem( + "quartz_glass", + () -> new BlockItem( + BlockInitializer.QUARTZ_GLASS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy ROSE_QUARTZ_GLASS = registerItem( + "rose_quartz_glass", + () -> new BlockItem( + BlockInitializer.ROSE_QUARTZ_GLASS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy DIAMOND_GLASS = registerItem( + "diamond_glass", + () -> new BlockItem( + BlockInitializer.DIAMOND_GLASS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + + public static final Lazy AMETHYST_GLASS = registerItem( + "amethyst_glass", + () -> new BlockItem( + BlockInitializer.AMETHYST_GLASS.get(), + new Item.Properties() + ), + BLOCKS_STACKS + ); + public static Lazy registerItem(String id, Supplier item, List> group) { var lazy = ITEMS.register(WanderingWizardry.id(id), (Supplier)item); group.add(lazy); diff --git a/common/src/main/resources/assets/wwizardry/models/block/amethyst_glass.json b/common/src/main/resources/assets/wwizardry/models/block/amethyst_glass.json new file mode 100644 index 00000000..d6bf69de --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/amethyst_glass.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "wwizardry:block/amethyst_glass" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/budding_sculk_crystal.json b/common/src/main/resources/assets/wwizardry/models/block/budding_sculk_crystal.json new file mode 100644 index 00000000..8dafbd7c --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/budding_sculk_crystal.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "wwizardry:block/budding_sculk_crystal" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/diamond_glass.json b/common/src/main/resources/assets/wwizardry/models/block/diamond_glass.json new file mode 100644 index 00000000..e898a238 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/diamond_glass.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "wwizardry:block/diamond_glass" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/large_sculk_bud.json b/common/src/main/resources/assets/wwizardry/models/block/large_sculk_bud.json new file mode 100644 index 00000000..c0e2761e --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/large_sculk_bud.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "wwizardry:block/large_sculk_bud" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/medium_sculk_bud.json b/common/src/main/resources/assets/wwizardry/models/block/medium_sculk_bud.json new file mode 100644 index 00000000..b93675f0 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/medium_sculk_bud.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "wwizardry:block/medium_sculk_bud" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/quartz_glass.json b/common/src/main/resources/assets/wwizardry/models/block/quartz_glass.json new file mode 100644 index 00000000..58c7f13b --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/quartz_glass.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "wwizardry:block/quartz_glass" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/rose_quartz_glass.json b/common/src/main/resources/assets/wwizardry/models/block/rose_quartz_glass.json new file mode 100644 index 00000000..fc220eef --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/rose_quartz_glass.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "wwizardry:block/rose_quartz_glass" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/sculk_cluster.json b/common/src/main/resources/assets/wwizardry/models/block/sculk_cluster.json new file mode 100644 index 00000000..f152358a --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/sculk_cluster.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "wwizardry:block/sculk_cluster" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/sculk_crystal.json b/common/src/main/resources/assets/wwizardry/models/block/sculk_crystal.json new file mode 100644 index 00000000..15412b06 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/sculk_crystal.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "wwizardry:block/sculk_crystal" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/block/small_sculk_bud.json b/common/src/main/resources/assets/wwizardry/models/block/small_sculk_bud.json new file mode 100644 index 00000000..ce14f8d6 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/small_sculk_bud.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "wwizardry:block/small_sculk_bud" + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/amethyst_glass.json b/common/src/main/resources/assets/wwizardry/models/item/amethyst_glass.json new file mode 100644 index 00000000..fc8b913d --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/amethyst_glass.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/amethyst_glass" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/budding_sculk_crystal.json b/common/src/main/resources/assets/wwizardry/models/item/budding_sculk_crystal.json new file mode 100644 index 00000000..db80f08e --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/budding_sculk_crystal.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/budding_sculk_crystal" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/diamond_glass.json b/common/src/main/resources/assets/wwizardry/models/item/diamond_glass.json new file mode 100644 index 00000000..6543bb28 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/diamond_glass.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/diamond_glass" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/large_sculk_bud.json b/common/src/main/resources/assets/wwizardry/models/item/large_sculk_bud.json new file mode 100644 index 00000000..78ef10e5 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/large_sculk_bud.json @@ -0,0 +1,16 @@ +{ + "parent": "item/amethyst_bud", + "textures": { + "layer0": "wwizardry:block/large_sculk_bud" + }, + "display": { + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ 0, 6, 0 ], + "scale": [ 0.68, 0.68, 0.68 ] + }, + "fixed": { + "translation": [ 0, 7, 0 ] + } + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/medium_sculk_bud.json b/common/src/main/resources/assets/wwizardry/models/item/medium_sculk_bud.json new file mode 100644 index 00000000..e87d8923 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/medium_sculk_bud.json @@ -0,0 +1,16 @@ +{ + "parent": "item/amethyst_bud", + "textures": { + "layer0": "wwizardry:block/medium_sculk_bud" + }, + "display": { + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ 0, 6, 0 ], + "scale": [ 0.68, 0.68, 0.68 ] + }, + "fixed": { + "translation": [ 0, 7, 0 ] + } + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/quartz_glass.json b/common/src/main/resources/assets/wwizardry/models/item/quartz_glass.json new file mode 100644 index 00000000..fa7c28ef --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/quartz_glass.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/quartz_glass" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/rose_quartz_glass.json b/common/src/main/resources/assets/wwizardry/models/item/rose_quartz_glass.json new file mode 100644 index 00000000..01d82c38 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/rose_quartz_glass.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/rose_quartz_glass" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/sculk_cluster.json b/common/src/main/resources/assets/wwizardry/models/item/sculk_cluster.json new file mode 100644 index 00000000..634aee2d --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/sculk_cluster.json @@ -0,0 +1,16 @@ +{ + "parent": "item/amethyst_bud", + "textures": { + "layer0": "wwizardry:block/sculk_cluster" + }, + "display": { + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ 0, 6, 0 ], + "scale": [ 0.68, 0.68, 0.68 ] + }, + "fixed": { + "translation": [ 0, 7, 0 ] + } + } +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/sculk_crystal.json b/common/src/main/resources/assets/wwizardry/models/item/sculk_crystal.json new file mode 100644 index 00000000..47dbc946 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/sculk_crystal.json @@ -0,0 +1,3 @@ +{ + "parent": "wwizardry:block/sculk_crystal" +} diff --git a/common/src/main/resources/assets/wwizardry/models/item/small_sculk_bud.json b/common/src/main/resources/assets/wwizardry/models/item/small_sculk_bud.json new file mode 100644 index 00000000..acfcadbd --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/item/small_sculk_bud.json @@ -0,0 +1,16 @@ +{ + "parent": "item/amethyst_bud", + "textures": { + "layer0": "wwizardry:block/small_sculk_bud" + }, + "display": { + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ 0, 6, 0 ], + "scale": [ 0.68, 0.68, 0.68 ] + }, + "fixed": { + "translation": [ 0, 7, 0 ] + } + } +} diff --git a/common/src/main/resources/assets/wwizardry/textures/block/amethyst_glass.png b/common/src/main/resources/assets/wwizardry/textures/block/amethyst_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..eaefade935bbc41be7fc610061d23777097c445b GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|0z6$DLo9le z@7(!b$;iywz!~e{*5TNm!<^D0Q8I5&@(!nIj88J!q#f3!?O=S81!Qnam^LsmCumO7 uVV-cA_axf_b*o7{2c{)?8Zkt7u`(zcN`1M>qqzZSHiM_DpUXO@geCyj4=iH< literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/budding_sculk_crystal.png b/common/src/main/resources/assets/wwizardry/textures/block/budding_sculk_crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..325433c2a4ed454352d6a9c844d789200e6a7edf GIT binary patch literal 519 zcmV+i0{H!jP)8mBw`T=h!%mM*w_jA0!d}a- zJU@v9O|1ozX$eH*(s`+iVHQg^K_Kd$m-WCn03?y+lyvWIJrZET*>y4e`5oJyHN|MX zOQi8Coy3xM!Q1!+3C>K{4gXrf)}ppyxg^Pq1QLtxC;)Le=Ryxv>7_DSL8nT94abN+ zR^_K>=^@lf0%Fv${2^1?D>>b(1`q^m&~EDNJZ$CiDq!&DQo#VCJ1mTie@1-oz=oPs znzNDwAcAo#+yQuQza-z4i;)Xd9kT~=Ss7IC#CKJ3Z*_!KXBuzb%@a0GfQSB~P3nO? zG+`zH#<;41=Yrz^EgBaLI+)dKPdJQ9!Ciu34yeI2n28M4Yf94J*cycl1c)-gw2KER z7~_mQ@Si$?j%gz_2=5l<_vmnB)o>&z&V^C_9@f40y@U!p_8^sze-{Q>V(EckxVxa$A_002ov JPDHLkV1gn3=m7u# literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/diamond_glass.png b/common/src/main/resources/assets/wwizardry/textures/block/diamond_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4b877135b0d16805309f96624a2a2536ac4f22 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|0z6$DLo9le zV}ATT%EZRSAiS%AlY2hjO|}^uKD?as^YcrtNVW-!CG!||&U(l;VKtDUns9}Ii>F~} v#3mjGKXVo7hIubMj2NQ3R8KPGXo@kM)>d{oBiy6|G@HTG)z4*}Q$iB}WW+8s literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/large_sculk_bud.png b/common/src/main/resources/assets/wwizardry/textures/block/large_sculk_bud.png new file mode 100644 index 0000000000000000000000000000000000000000..876391e620ff8bcb71fc619b332a9aec30e3fdfd GIT binary patch literal 324 zcmV-K0lWT*P))6{r`>+3lY=YUs6_W{eKDq%Q zgC!H<8Llgeg7v};fJwj%;qVFn&m_x3tL=Y#lW7ln^7g!BSTZxzx%J`qUTdBmJdTDAB|qE#pXj>C+wd{oo$bKag%S;G z9^P)OP}1g4JAA}}O|hE& zD8srLXa3jA*|R*?pWr4S{e(-RLGnlL$&xp54?b}I=MQ3GRyeCLJF%_lh+~rdwlyu% c3=BTW;esc3hMWO9n!(f6&t;ucLK6c600C22F8}}l literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/quartz_glass.png b/common/src/main/resources/assets/wwizardry/textures/block/quartz_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..11e810d6c69b286b9406aa78a8084c5359bbdd0b GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|0z6$DLo9le z_f$W-DXRadMFzPdziO)-W!{>pLQ&vWa5W;1xY`njxgN@xNA46H4O literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/rose_quartz_glass.png b/common/src/main/resources/assets/wwizardry/textures/block/rose_quartz_glass.png new file mode 100644 index 0000000000000000000000000000000000000000..8a5bb1cb977f2e4d5aa15a3b4d317340dab1604f GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|0z6$DLo9le z_gvmw!N|MZUeb_fpH zN+1|wDv6#O?<4UwMer`k%X{a$=bjgX{#iypeYtTEyE~hG&*W}GJUBH;-P;zqr-!-c zdTu}rX8^ok-%+7nr#vSbK*VVP-t!ps7#pcLdgJUBo_o~HnEL-=l_ z7XkqQn;0eNI2pk2^9%^vZL002*hyB()nWYlXj!^)?{BlFp^)<4$wmDb@fN*$e zk-YOJ+XX;e`1T78jMsP#5gN)nhaxVJv^71$a|;A65FmiE$IgC!E|n@E5?FGFNpR>4 z0G?=o0>D2zVr}MHimMwj4oP=Bi}MR?SzM&W8UX1-B!#Z9icqC6O8STT0*_S5%E9TK RQUCw|07*qoM6N<$f&g=cvdRDe literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/sculk_crystal.png b/common/src/main/resources/assets/wwizardry/textures/block/sculk_crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..cab15a710dc04953ad1490b90c82a8a73e74704a GIT binary patch literal 471 zcmV;|0Vw{7P)Z|L8^I!QUl3AR`#n~6VwcX=53m#)1w};=BqW*y zJ&SeU+|J&fxvB1UXWqOw^H$9r#=5rOrt(&kCYOCe{EUXAzNhA6O1i#8m3ly^v`@8sd_aS6u|QV68&Q5 zNUlg5K%#Rc0AOWkLbC6~B0J9j0zhU^?Zlalt;^6+RwiqkmEbwirztv%oG63k8Hkab z|IMNJT?{t9zjH5>H?z6QYi1uTU-UKh?RNd|+45}g5)Fv|=wxPpIb13DWboGj00000 NNkvXXu0mjf003;q%trtK literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/wwizardry/textures/block/small_sculk_bud.png b/common/src/main/resources/assets/wwizardry/textures/block/small_sculk_bud.png new file mode 100644 index 0000000000000000000000000000000000000000..c832c42ee3869c8609874ceba0215c42611a7f31 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ZJsWUAr}70DGLM)f>z8=yu#3S z(SSis>DF@Qbu-TVzdz0Ac&1>Sc!SAiO>N^p7S*#J9-lTf;%X8H*Ol*o*q`!GSXMvZ z-gv`_Q^tROf9PvGd_!bTuARxW1uq;QD%|F{#KYvXXHP=2gUJbjlIsg34y3*RDxdOr s{&D_?vu3iiJgAv*XMOYS2fr9%-kA!1T4?hh=pqJBS3j3^P6 Date: Thu, 29 Aug 2024 20:29:45 -0500 Subject: [PATCH 32/46] Create sculk geode feature and use that in the forgotten fields --- .../worldgen/biome/forgotten_fields.json | 2 +- .../configured_feature/sculk_geode.json | 102 ++++++++++++++++++ .../worldgen/placed_feature/sculk_geode.json | 27 +++++ .../content/block/BlockInitializer.java | 3 +- .../content/world/WorldgenInitializer.java | 1 + data/world/biome/forgotten_fields.fennec | 2 +- .../configured_feature/sculk_geode.fennec | 102 ++++++++++++++++++ data/world/placed_feature/sculk_geode.fennec | 26 +++++ 8 files changed, 262 insertions(+), 3 deletions(-) create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/sculk_geode.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/sculk_geode.json create mode 100644 data/world/configured_feature/sculk_geode.fennec create mode 100644 data/world/placed_feature/sculk_geode.fennec diff --git a/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json b/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json index 0c07431b..87804ef2 100644 --- a/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json +++ b/common/src/generated/resources/data/wwizardry/worldgen/biome/forgotten_fields.json @@ -31,7 +31,7 @@ "lake_lava_surface" ], [ - "amethyst_geode" + "wwizardry:sculk_geode" ], [ "monster_room", diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/sculk_geode.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/sculk_geode.json new file mode 100644 index 00000000..0b5c23c8 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/sculk_geode.json @@ -0,0 +1,102 @@ +{ + "type": "geode", + "config": { + "blocks": { + "cannot_replace": "#features_cannot_replace", + "alternate_inner_layer_provider": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:budding_sculk_crystal" + } + }, + "filling_provider": { + "type": "simple_state_provider", + "state": { + "Name": "air" + } + }, + "inner_layer_provider": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:sculk_crystal" + } + }, + "inner_placements": [ + { + "Name": "wwizardry:small_sculk_bud", + "Properties": { + "facing": "up", + "waterlogged": "false" + } + }, + { + "Name": "wwizardry:medium_sculk_bud", + "Properties": { + "facing": "up", + "waterlogged": "false" + } + }, + { + "Name": "wwizardry:large_sculk_bud", + "Properties": { + "facing": "up", + "waterlogged": "false" + } + }, + { + "Name": "wwizardry:sculk_cluster", + "Properties": { + "facing": "up", + "waterlogged": "false" + } + } + ], + "invalid_blocks": "#geode_invalid_blocks", + "middle_layer_provider": { + "type": "simple_state_provider", + "state": { + "Name": "calcite" + } + }, + "outer_layer_provider": { + "type": "simple_state_provider", + "state": { + "Name": "smooth_basalt" + } + } + }, + "crack": { + "base_crack_size": 2, + "crack_point_offset": 2, + "generate_crack_chance": 0.95 + }, + "distribution_points": { + "type": "uniform", + "max_inclusive": 4, + "min_inclusive": 3 + }, + "invalid_blocks_threshold": 1, + "layers": { + "filling": 1.7, + "inner_layer": 2.2, + "middle_layer": 3.2, + "outer_layer": 4.2 + }, + "max_gen_offset": 16, + "min_gen_offset": -16, + "noise_multiplier": 0.05, + "outer_wall_distance": { + "type": "uniform", + "max_inclusive": 6, + "min_inclusive": 4 + }, + "placements_require_layer0_alternate": true, + "point_offset": { + "type": "uniform", + "max_inclusive": 2, + "min_inclusive": 1 + }, + "use_alternate_layer0_chance": 0.083, + "use_potential_placements_chance": 0.35 + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/sculk_geode.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/sculk_geode.json new file mode 100644 index 00000000..0afadfb6 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/sculk_geode.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:sculk_geode", + "placement": [ + { + "type": "rarity_filter", + "chance": 24 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "uniform", + "max_inclusive": { + "absolute": 30 + }, + "min_inclusive": { + "above_bottom": 6 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java index e523aa0e..b7ebff73 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/BlockInitializer.java @@ -383,7 +383,8 @@ public class BlockInitializer { () -> new BuddingBlock( BlockBehaviour.Properties .ofFullCopy(Blocks.AMETHYST_BLOCK) - .mapColor(MapColor.ICE), + .mapColor(MapColor.ICE) + .randomTicks(), SMALL_SCULK_BUD, MEDIUM_SCULK_BUD, LARGE_SCULK_BUD, diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java index d871f2ef..7a87e5ba 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java @@ -9,6 +9,7 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.feature.GeodeFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; diff --git a/data/world/biome/forgotten_fields.fennec b/data/world/biome/forgotten_fields.fennec index 3388f7c4..4d9c86b6 100644 --- a/data/world/biome/forgotten_fields.fennec +++ b/data/world/biome/forgotten_fields.fennec @@ -34,7 +34,7 @@ features [ "lake_lava_surface" ] [ - "amethyst_geode" + "wwizardry:sculk_geode" ] [ "monster_room" diff --git a/data/world/configured_feature/sculk_geode.fennec b/data/world/configured_feature/sculk_geode.fennec new file mode 100644 index 00000000..c2a4c740 --- /dev/null +++ b/data/world/configured_feature/sculk_geode.fennec @@ -0,0 +1,102 @@ +type = "geode" + +config { + blocks { + cannot_replace = "#features_cannot_replace" + + alternate_inner_layer_provider { + type = "simple_state_provider" + state { + Name = "wwizardry:budding_sculk_crystal" + } + } + filling_provider { + type = "simple_state_provider" + state { + Name = "air" + } + } + inner_layer_provider { + type = "simple_state_provider" + state { + Name = "wwizardry:sculk_crystal" + } + } + inner_placements [ + { + Name = "wwizardry:small_sculk_bud" + Properties { + facing = "up" + waterlogged = "false" + } + } + { + Name = "wwizardry:medium_sculk_bud" + Properties { + facing = "up" + waterlogged = "false" + } + } + { + Name = "wwizardry:large_sculk_bud" + Properties { + facing = "up" + waterlogged = "false" + } + } + { + Name = "wwizardry:sculk_cluster" + Properties { + facing = "up" + waterlogged = "false" + } + } + ] + invalid_blocks = "#geode_invalid_blocks" + middle_layer_provider { + type = "simple_state_provider" + state { + Name = "calcite" + } + } + outer_layer_provider { + type = "simple_state_provider" + state { + Name = "smooth_basalt" + } + } + } + crack { + base_crack_size = 2 + crack_point_offset = 2 + generate_crack_chance = 0.95 + } + distribution_points { + type = "uniform" + max_inclusive = 4 + min_inclusive = 3 + } + invalid_blocks_threshold = 1 + layers { + filling = 1.7 + inner_layer = 2.2 + middle_layer = 3.2 + outer_layer = 4.2 + } + max_gen_offset = 16 + min_gen_offset = -16 + noise_multiplier = 0.05 + outer_wall_distance { + type = "uniform" + max_inclusive = 6 + min_inclusive = 4 + } + placements_require_layer0_alternate = true + point_offset { + type = "uniform" + max_inclusive = 2 + min_inclusive = 1 + } + use_alternate_layer0_chance = 0.083 + use_potential_placements_chance = 0.35 +} diff --git a/data/world/placed_feature/sculk_geode.fennec b/data/world/placed_feature/sculk_geode.fennec new file mode 100644 index 00000000..1951bcb4 --- /dev/null +++ b/data/world/placed_feature/sculk_geode.fennec @@ -0,0 +1,26 @@ +feature = "wwizardry:sculk_geode" + +placement [ + { + type = "rarity_filter" + chance = 24 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "uniform" + max_inclusive { + absolute = 30 + } + min_inclusive { + above_bottom = 6 + } + } + } + { + type = "biome" + } +] From 53b40f0ee61322f97675924b3945e34bd5cf579b Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 29 Aug 2024 20:56:42 -0500 Subject: [PATCH 33/46] Misc fixes --- .../wwizardry/tags/block/damages_snail.json | 32 +++++++++++++++++++ .../content/block/CandleSconceBlock.java | 4 +-- .../wwizardry/content/block/SconceBlock.java | 6 ++-- ...iour.java => Accessor_BlockBehaviour.java} | 2 +- .../src/main/resources/wwizardry.mixins.json | 4 +-- data/tags/wwizardry.fennec | 2 +- 6 files changed, 41 insertions(+), 9 deletions(-) rename common/src/main/java/dev/sweetberry/wwizardry/mixin/{Invoker_BlockBehaviour.java => Accessor_BlockBehaviour.java} (93%) diff --git a/common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json b/common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json index 2a4fa48a..33f64448 100644 --- a/common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json +++ b/common/src/generated/resources/data/wwizardry/tags/block/damages_snail.json @@ -288,6 +288,38 @@ { "required": false, "id": "waxed_oxidized_copper_trapdoor" + }, + { + "required": false, + "id": "copper_lens" + }, + { + "required": false, + "id": "exposed_copper_lens" + }, + { + "required": false, + "id": "weathered_copper_lens" + }, + { + "required": false, + "id": "oxidized_copper_lens" + }, + { + "required": false, + "id": "waxed_copper_lens" + }, + { + "required": false, + "id": "waxed_exposed_copper_lens" + }, + { + "required": false, + "id": "waxed_weathered_copper_lens" + }, + { + "required": false, + "id": "waxed_oxidized_copper_lens" } ] } \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java index 44522ff9..9add4681 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/CandleSconceBlock.java @@ -1,6 +1,6 @@ package dev.sweetberry.wwizardry.content.block; -import dev.sweetberry.wwizardry.mixin.Invoker_BlockBehaviour; +import dev.sweetberry.wwizardry.mixin.Accessor_BlockBehaviour; import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.EquipmentSlot; import org.jetbrains.annotations.Nullable; @@ -48,7 +48,7 @@ public CandleSconceBlock(Properties settings, CandleBlock candleBlock) { @Override public List getDrops(BlockState state, LootParams.Builder builder) { - var stacks = new ArrayList<>(((Invoker_BlockBehaviour) BlockInitializer.SCONCE.get()).invokeGetDrops(state, builder)); + var stacks = new ArrayList<>(((Accessor_BlockBehaviour) BlockInitializer.SCONCE.get()).invokeGetDrops(state, builder)); stacks.add(new ItemStack(candleBlock)); return stacks; } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java index f68c7892..b85db35f 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java @@ -1,6 +1,6 @@ package dev.sweetberry.wwizardry.content.block; -import dev.sweetberry.wwizardry.mixin.Invoker_BlockBehaviour; +import dev.sweetberry.wwizardry.mixin.Accessor_BlockBehaviour; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleOptions; @@ -133,7 +133,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level world, BlockP var stackEntity = new ItemEntity(world, pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5, droppedBlock.asItem().getDefaultInstance()); world.addFreshEntity(stackEntity); } - var soundGroup = ((Invoker_BlockBehaviour)droppedBlock).invokeGetSoundType(droppedBlock.defaultBlockState()); + var soundGroup = ((Accessor_BlockBehaviour)droppedBlock).invokeGetSoundType(droppedBlock.defaultBlockState()); world.playSound(player, pos, soundGroup.getBreakSound(), SoundSource.BLOCKS); world.setBlockAndUpdate(pos, BlockInitializer.SCONCE.get().defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, state.getValue(BlockStateProperties.HORIZONTAL_FACING))); return InteractionResult.SUCCESS; @@ -160,7 +160,7 @@ public ItemInteractionResult useEmpty(BlockState state, Level world, BlockPos po var block = item.getBlock(); var holder = ITEM_LOOKUP.get(block); - var soundGroup = ((Invoker_BlockBehaviour) block).invokeGetSoundType(block.defaultBlockState()); + var soundGroup = ((Accessor_BlockBehaviour) block).invokeGetSoundType(block.defaultBlockState()); world.playSound(player, pos, soundGroup.getPlaceSound(), SoundSource.BLOCKS); world.setBlockAndUpdate(pos, holder.defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, state.getValue(BlockStateProperties.HORIZONTAL_FACING))); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Invoker_BlockBehaviour.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BlockBehaviour.java similarity index 93% rename from common/src/main/java/dev/sweetberry/wwizardry/mixin/Invoker_BlockBehaviour.java rename to common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BlockBehaviour.java index 2468ba96..29e7c434 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Invoker_BlockBehaviour.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_BlockBehaviour.java @@ -11,7 +11,7 @@ import java.util.List; @Mixin(BlockBehaviour.class) -public interface Invoker_BlockBehaviour { +public interface Accessor_BlockBehaviour { @Invoker("getSoundType") SoundType invokeGetSoundType(BlockState state); diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index 61781302..2a8e23a4 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -13,7 +13,7 @@ "Accessor_ServerPlayer", "Accessor_StructureProcessor", "Accessor_WoodType", - "Invoker_BlockBehaviour", + "Accessor_BlockBehaviour", "Mixin_BeaconBlockEntity", "Mixin_Boat", "Mixin_ChestBoat", @@ -25,7 +25,7 @@ "Mixin_RedStoneWireBlock", "Mixin_ReloadableResourceManager", "Mixin_SculkVeinBlock_SculkVeinSpreaderConfig", - "Mixin_StructureTemplate", + "Mixin_StructureTemplate" ], "injectors": { "defaultRequire": 1 diff --git a/data/tags/wwizardry.fennec b/data/tags/wwizardry.fennec index 2182f784..1133ecb9 100644 --- a/data/tags/wwizardry.fennec +++ b/data/tags/wwizardry.fennec @@ -106,7 +106,7 @@ block { "waxed_copper_lens" "waxed_exposed_copper_lens" "waxed_weathered_copper_lens" - "waxed_oxidized_copper_lens + "waxed_oxidized_copper_lens" ] mycha_growable [ From 0d0c074243d5b36cc034f5b950c64f06ede016eb Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 29 Aug 2024 22:52:21 -0500 Subject: [PATCH 34/46] Crystal shard feature --- .../wwizardry/content/ContentInitializer.java | 3 + .../content/world/WorldgenInitializer.java | 19 ++++- .../world/feature/CrystalShardFeature.java | 73 +++++++++++++++++ .../content/world/feature/FeatureHelper.java | 81 +++++++++++++++++++ .../WaterLoggingFixProcessor.java | 2 +- 5 files changed, 175 insertions(+), 3 deletions(-) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java rename common/src/main/java/dev/sweetberry/wwizardry/content/world/{processors => processor}/WaterLoggingFixProcessor.java (97%) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index 373b722c..c7307a09 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -22,6 +22,7 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; import net.minecraft.world.level.saveddata.maps.MapDecorationType; @@ -34,6 +35,7 @@ public static void init() { EventInitializer.init(); } + @SuppressWarnings("unchecked") public static void listenToAll(RegistryCallback listener) { BlockInitializer.BLOCKS.listen((RegistryCallback) listener); BlockInitializer.BLOCK_ENTITIES.listen((RegistryCallback>) listener); @@ -43,6 +45,7 @@ public static void listenToAll(RegistryCallback listener) { RecipeInitializer.RECIPE_SERIALIZERS.listen((RegistryCallback>) listener); RecipeInitializer.RECIPES.listen((RegistryCallback>) listener); WorldgenInitializer.STRUCTURE_PROCESSORS.listen((RegistryCallback>) listener); + WorldgenInitializer.FEATURES.listen((RegistryCallback>) listener); SoundInitializer.SOUNDS.listen((RegistryCallback) listener); EntityInitializer.ENTITIES.listen((RegistryCallback>) listener); MapInitializer.MAP_DECORATION_TYPE.listen((RegistryCallback) listener); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java index 7a87e5ba..d6ce9e33 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java @@ -3,13 +3,15 @@ import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.Lazy; import dev.sweetberry.wwizardry.api.registry.RegistryContext; -import dev.sweetberry.wwizardry.content.world.processors.WaterLoggingFixProcessor; +import dev.sweetberry.wwizardry.content.world.feature.CrystalShardFeature; +import dev.sweetberry.wwizardry.content.world.processor.WaterLoggingFixProcessor; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraft.world.level.levelgen.feature.GeodeFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; @@ -22,6 +24,7 @@ public class WorldgenInitializer { public static final RegistryContext> STRUCTURE_PROCESSORS = new RegistryContext<>(BuiltInRegistries.STRUCTURE_PROCESSOR); + public static final RegistryContext> FEATURES = new RegistryContext<>(BuiltInRegistries.FEATURE); public static final ResourceKey FORGOTTEN_FIELDS = key("forgotten_fields"); @@ -36,6 +39,12 @@ public class WorldgenInitializer { () -> () -> WaterLoggingFixProcessor.CODEC ); + public static final Lazy CRYSTAL_SHARD = registerFeature("crystal_shard", + () -> new CrystalShardFeature( + CrystalShardFeature.Config.CODEC + ) + ); + public static ResourceKey key(String path) { return ResourceKey.create(Registries.BIOME, WanderingWizardry.id(path)); } @@ -53,7 +62,13 @@ public static void init() { addOverworldModification(GenerationStep.Decoration.UNDERGROUND_ORES, ROSE_QUARTZ); } + @SuppressWarnings("unchecked") private static Lazy> registerStructureProcessor(String id, Supplier> type) { return (Lazy>)(Object) STRUCTURE_PROCESSORS.register(WanderingWizardry.id(id), (Supplier>)(Object) type); } + + @SuppressWarnings("unchecked") + private static , FC extends FeatureConfiguration> Lazy registerFeature(String id, Supplier feature) { + return (Lazy) FEATURES.register(WanderingWizardry.id(id), (Supplier>) feature); + } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java new file mode 100644 index 00000000..ea406070 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java @@ -0,0 +1,73 @@ +package dev.sweetberry.wwizardry.content.world.feature; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import dev.sweetberry.wwizardry.WanderingWizardry; +import net.minecraft.core.BlockPos; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; +import org.jetbrains.annotations.NotNull; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +public class CrystalShardFeature extends Feature { + public CrystalShardFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(@NotNull FeaturePlaceContext context) { + var origin = context.origin(); + var rand = context.random(); + var conf = context.config(); + + // Get a random rotation + final var ftau = (float) Math.TAU; + var q = new Quaternionf() + .rotateLocalX(rand.nextFloat() * ftau) + .rotateLocalY(rand.nextFloat() * ftau); + + var length = context.config().length.sample(rand); + var projected = new Vector3f( + 0, + length, + 0 + ).rotate(q); + var dest = origin.offset((int)projected.x, (int)projected.y, (int)projected.z); + + // Draw the lines + drawLines(context, origin, dest, conf.radius.sample(rand), conf.state); + + return true; + } + + private void drawLines(@NotNull FeaturePlaceContext context, BlockPos origin, BlockPos dest, int radius, BlockStateProvider state) { + for (int x = -radius; x <= radius; x++) { + for (int y = -radius; y <= radius; y++) { + for (int z = -radius; z <= radius; z++) { + float dist = (float)Math.sqrt((x * x) + (y * y) + (z * z)); + if (dist > radius) + continue; + var pos = origin.offset(x, y, z); + FeatureHelper.drawLine(context, pos, dest, state); + } + } + } + } + + public record Config( + BlockStateProvider state, + IntProvider radius, + IntProvider length + ) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(inst -> inst.group( + BlockStateProvider.CODEC.fieldOf("state").forGetter(Config::state), + IntProvider.CODEC.fieldOf("radius").forGetter(Config::radius), + IntProvider.CODEC.fieldOf("length").forGetter(Config::length) + ).apply(inst, Config::new)); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java new file mode 100644 index 00000000..cc8d89ac --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java @@ -0,0 +1,81 @@ +package dev.sweetberry.wwizardry.content.world.feature; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; +import org.jetbrains.annotations.NotNull; + +public class FeatureHelper { + // Fast voxel traversal algorithm + public static void drawLine(@NotNull FeaturePlaceContext context, BlockPos origin, BlockPos dest, BlockStateProvider provider) { + var level = context.level(); + var rand = context.random(); + + float + originX = origin.getX(), + originY = origin.getY(), + originZ = origin.getZ(), + destX = dest.getX(), + destY = dest.getY(), + destZ = dest.getZ(), + deltaX = destX - originX, + deltaY = destY - originY, + deltaZ = destZ - originZ, + stepX = Math.signum(deltaX), + stepY = Math.signum(deltaY), + stepZ = Math.signum(deltaZ), + tDeltaX = 1 / Math.abs(deltaX), + tDeltaY = 1 / Math.abs(deltaY), + tDeltaZ = 1 / Math.abs(deltaZ), + tMaxX = getTMax(originX, tDeltaX, stepX), + tMaxY = getTMax(originY, tDeltaY, stepY), + tMaxZ = getTMax(originZ, tDeltaZ, stepZ), + x = originX, + y = originY, + z = originZ, + maxDist = (float)Math.sqrt((deltaX * deltaX) + (deltaY * deltaY) + (deltaZ * deltaZ)); + + final int MAX_ITER = 1024; + + for (int i = 0; i < MAX_ITER; i++) { + float + traversedX = x - originX, + traversedY = y - originY, + traversedZ = z - originZ, + dist = (float)Math.sqrt((traversedX * traversedX) + (traversedY * traversedY) + (traversedZ * traversedZ)); + + var blockPos = new BlockPos((int)Math.floor(x), (int)Math.floor(y), (int)Math.floor(z)); + + if (level.ensureCanWrite(blockPos)) + level.setBlock(blockPos, provider.getState(rand, blockPos), Block.UPDATE_ALL); + else + break; + + if (blockPos.equals(dest) || dist > maxDist) + break; + + if (tMaxX < tMaxY && tMaxX < tMaxZ) { + x += stepX; + tMaxX += tDeltaX; + } else if (tMaxY < tMaxZ) { + y += stepY; + tMaxY += tDeltaY; + } else { + z += stepZ; + tMaxZ += tDeltaZ; + } + } + } + + private static float mod1(float value) { + return (value % 1 + 1) % 1; + } + private static float fixNaN(float value) { + return Float.isNaN(value) ? 0 : value; + } + private static float getTMax(float start, float tDelta, float step) { + return fixNaN(tDelta * (step > 0 ? 1 - mod1(start) : mod1(start))); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/processor/WaterLoggingFixProcessor.java similarity index 97% rename from common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java rename to common/src/main/java/dev/sweetberry/wwizardry/content/world/processor/WaterLoggingFixProcessor.java index 4e4c90a6..016f03c5 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/processors/WaterLoggingFixProcessor.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/processor/WaterLoggingFixProcessor.java @@ -1,4 +1,4 @@ -package dev.sweetberry.wwizardry.content.world.processors; +package dev.sweetberry.wwizardry.content.world.processor; import com.mojang.serialization.MapCodec; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; From 7fd94bda32bccea4552af620dda4e201bceeadc3 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 29 Aug 2024 22:55:55 -0500 Subject: [PATCH 35/46] Make the crystal shard feature use floats instead of ints --- .../world/feature/CrystalShardFeature.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java index ea406070..254445a2 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java @@ -4,6 +4,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.sweetberry.wwizardry.WanderingWizardry; import net.minecraft.core.BlockPos; +import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.feature.Feature; @@ -45,12 +46,14 @@ public boolean place(@NotNull FeaturePlaceContext context) { return true; } - private void drawLines(@NotNull FeaturePlaceContext context, BlockPos origin, BlockPos dest, int radius, BlockStateProvider state) { - for (int x = -radius; x <= radius; x++) { - for (int y = -radius; y <= radius; y++) { - for (int z = -radius; z <= radius; z++) { + private void drawLines(@NotNull FeaturePlaceContext context, BlockPos origin, BlockPos dest, float radius, BlockStateProvider state) { + final int intRadius = (int) Math.ceil(radius); + + for (int x = -intRadius; x <= intRadius; x++) { + for (int y = -intRadius; y <= intRadius; y++) { + for (int z = -intRadius; z <= intRadius; z++) { float dist = (float)Math.sqrt((x * x) + (y * y) + (z * z)); - if (dist > radius) + if (dist > intRadius) continue; var pos = origin.offset(x, y, z); FeatureHelper.drawLine(context, pos, dest, state); @@ -61,13 +64,13 @@ private void drawLines(@NotNull FeaturePlaceContext context, BlockPos or public record Config( BlockStateProvider state, - IntProvider radius, - IntProvider length + FloatProvider radius, + FloatProvider length ) implements FeatureConfiguration { public static final Codec CODEC = RecordCodecBuilder.create(inst -> inst.group( BlockStateProvider.CODEC.fieldOf("state").forGetter(Config::state), - IntProvider.CODEC.fieldOf("radius").forGetter(Config::radius), - IntProvider.CODEC.fieldOf("length").forGetter(Config::length) + FloatProvider.CODEC.fieldOf("radius").forGetter(Config::radius), + FloatProvider.CODEC.fieldOf("length").forGetter(Config::length) ).apply(inst, Config::new)); } } From 0e9655a546a1e12c7938d2693c85349041fa9269 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 29 Aug 2024 22:56:27 -0500 Subject: [PATCH 36/46] Fix radius check --- .../wwizardry/content/world/feature/CrystalShardFeature.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java index 254445a2..c307ac88 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java @@ -53,7 +53,7 @@ private void drawLines(@NotNull FeaturePlaceContext context, BlockPos or for (int y = -intRadius; y <= intRadius; y++) { for (int z = -intRadius; z <= intRadius; z++) { float dist = (float)Math.sqrt((x * x) + (y * y) + (z * z)); - if (dist > intRadius) + if (dist > radius) continue; var pos = origin.offset(x, y, z); FeatureHelper.drawLine(context, pos, dest, state); From 45a6ff2aa22cc4568a647da603c6adac6eee5d82 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 29 Aug 2024 23:12:47 -0500 Subject: [PATCH 37/46] Check for air when setting a block --- .../wwizardry/content/world/feature/CrystalShardFeature.java | 3 --- .../wwizardry/content/world/feature/FeatureHelper.java | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java index c307ac88..9c80cb7e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java @@ -2,11 +2,8 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import dev.sweetberry.wwizardry.WanderingWizardry; import net.minecraft.core.BlockPos; import net.minecraft.util.valueproviders.FloatProvider; -import net.minecraft.util.valueproviders.IntProvider; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java index cc8d89ac..13d0665c 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java @@ -48,7 +48,7 @@ public static void drawLine(@NotNull FeaturePl var blockPos = new BlockPos((int)Math.floor(x), (int)Math.floor(y), (int)Math.floor(z)); - if (level.ensureCanWrite(blockPos)) + if (level.ensureCanWrite(blockPos) && level.getBlockState(blockPos).isAir()) level.setBlock(blockPos, provider.getState(rand, blockPos), Block.UPDATE_ALL); else break; From 83a2ad7a37e9f345543ceb5fba10dfdf2dd9d5e3 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 29 Aug 2024 23:43:55 -0500 Subject: [PATCH 38/46] Fix some broken stuff --- .../small_rose_quartz_shard.json | 21 +++++++++++++++++++ .../world/feature/CrystalShardFeature.java | 3 ++- .../content/world/feature/FeatureHelper.java | 2 -- .../small_rose_quartz_shard.fennec | 20 ++++++++++++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/small_rose_quartz_shard.json create mode 100644 data/world/configured_feature/small_rose_quartz_shard.fennec diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/small_rose_quartz_shard.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/small_rose_quartz_shard.json new file mode 100644 index 00000000..188e158a --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/small_rose_quartz_shard.json @@ -0,0 +1,21 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:rose_quartz_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 2, + "min_inclusive": 1 + }, + "length": { + "type": "uniform", + "max_exclusive": 20, + "min_inclusive": 10 + } + } +} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java index 9c80cb7e..6bc78a5e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java @@ -2,6 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import dev.sweetberry.wwizardry.WanderingWizardry; import net.minecraft.core.BlockPos; import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.world.level.levelgen.feature.Feature; @@ -26,7 +27,7 @@ public boolean place(@NotNull FeaturePlaceContext context) { // Get a random rotation final var ftau = (float) Math.TAU; var q = new Quaternionf() - .rotateLocalX(rand.nextFloat() * ftau) + .rotateLocalX(rand.nextFloat() * ftau / 4) .rotateLocalY(rand.nextFloat() * ftau); var length = context.config().length.sample(rand); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java index 13d0665c..36783747 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java @@ -50,8 +50,6 @@ public static void drawLine(@NotNull FeaturePl if (level.ensureCanWrite(blockPos) && level.getBlockState(blockPos).isAir()) level.setBlock(blockPos, provider.getState(rand, blockPos), Block.UPDATE_ALL); - else - break; if (blockPos.equals(dest) || dist > maxDist) break; diff --git a/data/world/configured_feature/small_rose_quartz_shard.fennec b/data/world/configured_feature/small_rose_quartz_shard.fennec new file mode 100644 index 00000000..05909508 --- /dev/null +++ b/data/world/configured_feature/small_rose_quartz_shard.fennec @@ -0,0 +1,20 @@ +type = "wwizardry:crystal_shard" + +config { + state { + type = "simple_state_provider" + state { + Name = "wwizardry:rose_quartz_glass" + } + } + radius { + type = "uniform" + max_exclusive = 2 + min_inclusive = 1 + } + length { + type = "uniform" + max_exclusive = 20 + min_inclusive = 10 + } +} From 09d926b9dab472b071b25af748b9b5a5441d86ff Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 30 Aug 2024 04:29:01 -0500 Subject: [PATCH 39/46] Crystal Cove biome --- .../worldgen/biome/crystal_cove.json | 193 +++++++++++++++++ .../crystal_shard/large/ceiling/amethyst.json | 22 ++ .../crystal_shard/large/ceiling/diamond.json | 22 ++ .../crystal_shard/large/ceiling/quartz.json | 22 ++ .../large/ceiling/rose_quartz.json | 22 ++ .../crystal_shard/large/floor/amethyst.json | 21 ++ .../crystal_shard/large/floor/diamond.json | 21 ++ .../crystal_shard/large/floor/quartz.json | 21 ++ .../large/floor/rose_quartz.json | 21 ++ .../crystal_shard/small/ceiling/amethyst.json | 22 ++ .../crystal_shard/small/ceiling/diamond.json | 22 ++ .../crystal_shard/small/ceiling/quartz.json | 22 ++ .../small/ceiling/rose_quartz.json | 22 ++ .../crystal_shard/small/floor/amethyst.json | 21 ++ .../crystal_shard/small/floor/diamond.json | 21 ++ .../crystal_shard/small/floor/quartz.json | 21 ++ .../small/floor/rose_quartz.json} | 0 .../crystal_shard/large/ceiling/amethyst.json | 27 +++ .../crystal_shard/large/ceiling/diamond.json | 27 +++ .../crystal_shard/large/ceiling/quartz.json | 27 +++ .../large/ceiling/rose_quartz.json | 27 +++ .../crystal_shard/large/floor/amethyst.json | 27 +++ .../crystal_shard/large/floor/diamond.json | 27 +++ .../crystal_shard/large/floor/quartz.json | 27 +++ .../large/floor/rose_quartz.json | 27 +++ .../crystal_shard/small/ceiling/amethyst.json | 27 +++ .../crystal_shard/small/ceiling/diamond.json | 27 +++ .../crystal_shard/small/ceiling/quartz.json | 27 +++ .../small/ceiling/rose_quartz.json | 27 +++ .../crystal_shard/small/floor/amethyst.json | 27 +++ .../crystal_shard/small/floor/diamond.json | 27 +++ .../crystal_shard/small/floor/quartz.json | 27 +++ .../small/floor/rose_quartz.json | 27 +++ .../terrablender/TerraBlenderInitializer.java | 2 + .../region/CrystalCoveRegion.java | 29 +++ .../entity/AltarCatalyzerBlockEntity.java | 5 - .../block/redstone/LogicGateBlock.java | 1 - .../wwizardry/content/entity/Snail.java | 1 - .../recipe/AltarCatalyzationRecipe.java | 7 +- .../content/world/WorldgenInitializer.java | 2 + .../world/feature/CrystalShardFeature.java | 38 +++- .../content/world/feature/FeatureHelper.java | 21 +- .../mixin/Mixin_BeaconBlockEntity.java | 3 - .../wwizardry/mixin/Mixin_Boat.java | 1 - .../wwizardry/mixin/Mixin_ChestBoat.java | 1 - data/world/biome/crystal_cove.fennec | 194 ++++++++++++++++++ .../large/ceiling/amethyst.fennec | 21 ++ .../large/ceiling/diamond.fennec | 21 ++ .../crystal_shard/large/ceiling/quartz.fennec | 21 ++ .../large/ceiling/rose_quartz.fennec | 21 ++ .../crystal_shard/large/floor/amethyst.fennec | 20 ++ .../crystal_shard/large/floor/diamond.fennec | 20 ++ .../crystal_shard/large/floor/quartz.fennec | 20 ++ .../large/floor/rose_quartz.fennec | 20 ++ .../small/ceiling/amethyst.fennec | 21 ++ .../small/ceiling/diamond.fennec | 21 ++ .../crystal_shard/small/ceiling/quartz.fennec | 21 ++ .../small/ceiling/rose_quartz.fennec | 21 ++ .../crystal_shard/small/floor/amethyst.fennec | 20 ++ .../crystal_shard/small/floor/diamond.fennec | 20 ++ .../crystal_shard/small/floor/quartz.fennec | 20 ++ .../small/floor/rose_quartz.fennec} | 0 .../large/ceiling/amethyst.fennec | 23 +++ .../large/ceiling/diamond.fennec | 23 +++ .../crystal_shard/large/ceiling/quartz.fennec | 23 +++ .../large/ceiling/rose_quartz.fennec | 23 +++ .../crystal_shard/large/floor/amethyst.fennec | 23 +++ .../crystal_shard/large/floor/diamond.fennec | 23 +++ .../crystal_shard/large/floor/quartz.fennec | 23 +++ .../large/floor/rose_quartz.fennec | 23 +++ .../small/ceiling/amethyst.fennec | 23 +++ .../small/ceiling/diamond.fennec | 23 +++ .../crystal_shard/small/ceiling/quartz.fennec | 23 +++ .../small/ceiling/rose_quartz.fennec | 23 +++ .../crystal_shard/small/floor/amethyst.fennec | 23 +++ .../crystal_shard/small/floor/diamond.fennec | 23 +++ .../crystal_shard/small/floor/quartz.fennec | 23 +++ .../small/floor/rose_quartz.fennec | 23 +++ 78 files changed, 1902 insertions(+), 27 deletions(-) create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/biome/crystal_cove.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/amethyst.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/diamond.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/rose_quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/amethyst.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/diamond.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/rose_quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/amethyst.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/diamond.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/rose_quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/amethyst.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/diamond.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/quartz.json rename common/src/generated/resources/data/wwizardry/worldgen/configured_feature/{small_rose_quartz_shard.json => crystal_shard/small/floor/rose_quartz.json} (100%) create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/amethyst.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/diamond.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/rose_quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/amethyst.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/diamond.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/rose_quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/amethyst.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/diamond.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/rose_quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/amethyst.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/diamond.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/quartz.json create mode 100644 common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/rose_quartz.json create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/compat/terrablender/region/CrystalCoveRegion.java create mode 100644 data/world/biome/crystal_cove.fennec create mode 100644 data/world/configured_feature/crystal_shard/large/ceiling/amethyst.fennec create mode 100644 data/world/configured_feature/crystal_shard/large/ceiling/diamond.fennec create mode 100644 data/world/configured_feature/crystal_shard/large/ceiling/quartz.fennec create mode 100644 data/world/configured_feature/crystal_shard/large/ceiling/rose_quartz.fennec create mode 100644 data/world/configured_feature/crystal_shard/large/floor/amethyst.fennec create mode 100644 data/world/configured_feature/crystal_shard/large/floor/diamond.fennec create mode 100644 data/world/configured_feature/crystal_shard/large/floor/quartz.fennec create mode 100644 data/world/configured_feature/crystal_shard/large/floor/rose_quartz.fennec create mode 100644 data/world/configured_feature/crystal_shard/small/ceiling/amethyst.fennec create mode 100644 data/world/configured_feature/crystal_shard/small/ceiling/diamond.fennec create mode 100644 data/world/configured_feature/crystal_shard/small/ceiling/quartz.fennec create mode 100644 data/world/configured_feature/crystal_shard/small/ceiling/rose_quartz.fennec create mode 100644 data/world/configured_feature/crystal_shard/small/floor/amethyst.fennec create mode 100644 data/world/configured_feature/crystal_shard/small/floor/diamond.fennec create mode 100644 data/world/configured_feature/crystal_shard/small/floor/quartz.fennec rename data/world/configured_feature/{small_rose_quartz_shard.fennec => crystal_shard/small/floor/rose_quartz.fennec} (100%) create mode 100644 data/world/placed_feature/crystal_shard/large/ceiling/amethyst.fennec create mode 100644 data/world/placed_feature/crystal_shard/large/ceiling/diamond.fennec create mode 100644 data/world/placed_feature/crystal_shard/large/ceiling/quartz.fennec create mode 100644 data/world/placed_feature/crystal_shard/large/ceiling/rose_quartz.fennec create mode 100644 data/world/placed_feature/crystal_shard/large/floor/amethyst.fennec create mode 100644 data/world/placed_feature/crystal_shard/large/floor/diamond.fennec create mode 100644 data/world/placed_feature/crystal_shard/large/floor/quartz.fennec create mode 100644 data/world/placed_feature/crystal_shard/large/floor/rose_quartz.fennec create mode 100644 data/world/placed_feature/crystal_shard/small/ceiling/amethyst.fennec create mode 100644 data/world/placed_feature/crystal_shard/small/ceiling/diamond.fennec create mode 100644 data/world/placed_feature/crystal_shard/small/ceiling/quartz.fennec create mode 100644 data/world/placed_feature/crystal_shard/small/ceiling/rose_quartz.fennec create mode 100644 data/world/placed_feature/crystal_shard/small/floor/amethyst.fennec create mode 100644 data/world/placed_feature/crystal_shard/small/floor/diamond.fennec create mode 100644 data/world/placed_feature/crystal_shard/small/floor/quartz.fennec create mode 100644 data/world/placed_feature/crystal_shard/small/floor/rose_quartz.fennec diff --git a/common/src/generated/resources/data/wwizardry/worldgen/biome/crystal_cove.json b/common/src/generated/resources/data/wwizardry/worldgen/biome/crystal_cove.json new file mode 100644 index 00000000..f6a6bbe4 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/biome/crystal_cove.json @@ -0,0 +1,193 @@ +{ + "carvers": { + "air": [ + "cave", + "cave_extra_underground", + "canyon" + ] + }, + "downfall": 0.4, + "effects": { + "fog_color": 12638463, + "mood_sound": { + "block_search_extent": 8, + "offset": 2, + "sound": "ambient.cave", + "tick_delay": 6000 + }, + "music": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "music.overworld.dripstone_caves" + }, + "sky_color": 7907327, + "water_color": 4159204, + "water_fog_color": 329011 + }, + "features": [ + [], + [ + "lake_lava_underground", + "lake_lava_surface" + ], + [ + "amethyst_geode" + ], + [ + "monster_room", + "monster_room_deep" + ], + [], + [], + [ + "ore_dirt", + "ore_gravel", + "ore_granite_upper", + "ore_granite_lower", + "ore_diorite_upper", + "ore_diorite_lower", + "ore_andesite_upper", + "ore_andesite_lower", + "ore_tuff", + "ore_coal_upper", + "ore_coal_lower", + "ore_iron_upper", + "ore_iron_middle", + "ore_iron_small", + "ore_gold", + "ore_gold_lower", + "ore_redstone", + "ore_redstone_lower", + "ore_diamond", + "ore_diamond_medium", + "ore_diamond_large", + "ore_diamond_buried", + "ore_lapis", + "ore_lapis_buried", + "ore_copper_large", + "underwater_magma", + "disk_sand", + "disk_clay", + "disk_gravel" + ], + [ + "wwizardry:crystal_shard/large/ceiling/amethyst", + "wwizardry:crystal_shard/large/ceiling/diamond", + "wwizardry:crystal_shard/large/ceiling/quartz", + "wwizardry:crystal_shard/large/ceiling/rose_quartz", + "wwizardry:crystal_shard/large/floor/amethyst", + "wwizardry:crystal_shard/large/floor/diamond", + "wwizardry:crystal_shard/large/floor/quartz", + "wwizardry:crystal_shard/large/floor/rose_quartz", + "wwizardry:crystal_shard/small/ceiling/amethyst", + "wwizardry:crystal_shard/small/ceiling/diamond", + "wwizardry:crystal_shard/small/ceiling/quartz", + "wwizardry:crystal_shard/small/ceiling/rose_quartz", + "wwizardry:crystal_shard/small/floor/amethyst", + "wwizardry:crystal_shard/small/floor/diamond", + "wwizardry:crystal_shard/small/floor/quartz", + "wwizardry:crystal_shard/small/floor/rose_quartz" + ], + [ + "spring_water", + "spring_lava" + ], + [ + "glow_lichen", + "patch_tall_grass_2", + "trees_plains", + "flower_plains", + "patch_grass_plain", + "brown_mushroom_normal", + "red_mushroom_normal", + "patch_sugar_cane", + "patch_pumpkin" + ], + [ + "freeze_top_layer" + ] + ], + "has_precipitation": true, + "spawn_costs": {}, + "spawners": { + "ambient": [ + { + "type": "bat", + "maxCount": 8, + "minCount": 8, + "weight": 10 + } + ], + "axolotls": [], + "creature": [], + "misc": [], + "monster": [ + { + "type": "spider", + "maxCount": 4, + "minCount": 4, + "weight": 100 + }, + { + "type": "zombie", + "maxCount": 4, + "minCount": 4, + "weight": 95 + }, + { + "type": "zombie_villager", + "maxCount": 1, + "minCount": 1, + "weight": 5 + }, + { + "type": "skeleton", + "maxCount": 4, + "minCount": 4, + "weight": 100 + }, + { + "type": "creeper", + "maxCount": 4, + "minCount": 4, + "weight": 100 + }, + { + "type": "slime", + "maxCount": 4, + "minCount": 4, + "weight": 100 + }, + { + "type": "enderman", + "maxCount": 4, + "minCount": 1, + "weight": 10 + }, + { + "type": "witch", + "maxCount": 1, + "minCount": 1, + "weight": 5 + }, + { + "type": "drowned", + "maxCount": 4, + "minCount": 4, + "weight": 95 + } + ], + "underground_water_creature": [ + { + "type": "glow_squid", + "maxCount": 6, + "minCount": 4, + "weight": 10 + } + ], + "water_ambient": [], + "water_creature": [] + }, + "temperature": 0.8 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/amethyst.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/amethyst.json new file mode 100644 index 00000000..1566259e --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/amethyst.json @@ -0,0 +1,22 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "ceiling": true, + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:amethyst_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 3, + "min_inclusive": 2 + }, + "length": { + "type": "uniform", + "max_exclusive": 30, + "min_inclusive": 15 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/diamond.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/diamond.json new file mode 100644 index 00000000..31a7eca5 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/diamond.json @@ -0,0 +1,22 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "ceiling": true, + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:diamond_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 3, + "min_inclusive": 2 + }, + "length": { + "type": "uniform", + "max_exclusive": 30, + "min_inclusive": 15 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/quartz.json new file mode 100644 index 00000000..8b4f4ede --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/quartz.json @@ -0,0 +1,22 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "ceiling": true, + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:quartz_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 3, + "min_inclusive": 2 + }, + "length": { + "type": "uniform", + "max_exclusive": 30, + "min_inclusive": 15 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/rose_quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/rose_quartz.json new file mode 100644 index 00000000..700f06ce --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/ceiling/rose_quartz.json @@ -0,0 +1,22 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "ceiling": true, + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:rose_quartz_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 3, + "min_inclusive": 2 + }, + "length": { + "type": "uniform", + "max_exclusive": 30, + "min_inclusive": 15 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/amethyst.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/amethyst.json new file mode 100644 index 00000000..f90d8949 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/amethyst.json @@ -0,0 +1,21 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:amethyst_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 3, + "min_inclusive": 2 + }, + "length": { + "type": "uniform", + "max_exclusive": 30, + "min_inclusive": 15 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/diamond.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/diamond.json new file mode 100644 index 00000000..c3b090b7 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/diamond.json @@ -0,0 +1,21 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:diamond_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 3, + "min_inclusive": 2 + }, + "length": { + "type": "uniform", + "max_exclusive": 30, + "min_inclusive": 15 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/quartz.json new file mode 100644 index 00000000..20c2567c --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/quartz.json @@ -0,0 +1,21 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:quartz_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 3, + "min_inclusive": 2 + }, + "length": { + "type": "uniform", + "max_exclusive": 30, + "min_inclusive": 15 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/rose_quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/rose_quartz.json new file mode 100644 index 00000000..49205878 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/large/floor/rose_quartz.json @@ -0,0 +1,21 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:rose_quartz_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 3, + "min_inclusive": 2 + }, + "length": { + "type": "uniform", + "max_exclusive": 30, + "min_inclusive": 15 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/amethyst.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/amethyst.json new file mode 100644 index 00000000..738a0564 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/amethyst.json @@ -0,0 +1,22 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "ceiling": true, + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:amethyst_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 2, + "min_inclusive": 1 + }, + "length": { + "type": "uniform", + "max_exclusive": 20, + "min_inclusive": 10 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/diamond.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/diamond.json new file mode 100644 index 00000000..9f7fda84 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/diamond.json @@ -0,0 +1,22 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "ceiling": true, + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:diamond_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 2, + "min_inclusive": 1 + }, + "length": { + "type": "uniform", + "max_exclusive": 20, + "min_inclusive": 10 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/quartz.json new file mode 100644 index 00000000..f38fb055 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/quartz.json @@ -0,0 +1,22 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "ceiling": true, + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:quartz_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 2, + "min_inclusive": 1 + }, + "length": { + "type": "uniform", + "max_exclusive": 20, + "min_inclusive": 10 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/rose_quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/rose_quartz.json new file mode 100644 index 00000000..fc35350a --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/ceiling/rose_quartz.json @@ -0,0 +1,22 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "ceiling": true, + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:rose_quartz_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 2, + "min_inclusive": 1 + }, + "length": { + "type": "uniform", + "max_exclusive": 20, + "min_inclusive": 10 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/amethyst.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/amethyst.json new file mode 100644 index 00000000..dc313fbd --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/amethyst.json @@ -0,0 +1,21 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:amethyst_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 2, + "min_inclusive": 1 + }, + "length": { + "type": "uniform", + "max_exclusive": 20, + "min_inclusive": 10 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/diamond.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/diamond.json new file mode 100644 index 00000000..3a7fb369 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/diamond.json @@ -0,0 +1,21 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:diamond_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 2, + "min_inclusive": 1 + }, + "length": { + "type": "uniform", + "max_exclusive": 20, + "min_inclusive": 10 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/quartz.json new file mode 100644 index 00000000..ffbdb612 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/quartz.json @@ -0,0 +1,21 @@ +{ + "type": "wwizardry:crystal_shard", + "config": { + "state": { + "type": "simple_state_provider", + "state": { + "Name": "wwizardry:quartz_glass" + } + }, + "radius": { + "type": "uniform", + "max_exclusive": 2, + "min_inclusive": 1 + }, + "length": { + "type": "uniform", + "max_exclusive": 20, + "min_inclusive": 10 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/small_rose_quartz_shard.json b/common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/rose_quartz.json similarity index 100% rename from common/src/generated/resources/data/wwizardry/worldgen/configured_feature/small_rose_quartz_shard.json rename to common/src/generated/resources/data/wwizardry/worldgen/configured_feature/crystal_shard/small/floor/rose_quartz.json diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/amethyst.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/amethyst.json new file mode 100644 index 00000000..dd1f4d91 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/amethyst.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/large/ceiling/amethyst", + "placement": [ + { + "type": "count", + "count": 16 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/diamond.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/diamond.json new file mode 100644 index 00000000..8272c96c --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/diamond.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/large/ceiling/diamond", + "placement": [ + { + "type": "count", + "count": 16 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/quartz.json new file mode 100644 index 00000000..af306956 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/quartz.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/large/ceiling/quartz", + "placement": [ + { + "type": "count", + "count": 16 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/rose_quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/rose_quartz.json new file mode 100644 index 00000000..6781b37c --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/ceiling/rose_quartz.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/large/ceiling/rose_quartz", + "placement": [ + { + "type": "count", + "count": 16 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/amethyst.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/amethyst.json new file mode 100644 index 00000000..015f2197 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/amethyst.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/large/floor/amethyst", + "placement": [ + { + "type": "count", + "count": 16 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/diamond.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/diamond.json new file mode 100644 index 00000000..0207fae9 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/diamond.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/large/floor/diamond", + "placement": [ + { + "type": "count", + "count": 16 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/quartz.json new file mode 100644 index 00000000..29d4685f --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/quartz.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/large/floor/quartz", + "placement": [ + { + "type": "count", + "count": 16 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/rose_quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/rose_quartz.json new file mode 100644 index 00000000..5ab70979 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/large/floor/rose_quartz.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/large/floor/rose_quartz", + "placement": [ + { + "type": "count", + "count": 16 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/amethyst.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/amethyst.json new file mode 100644 index 00000000..9191af08 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/amethyst.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/small/ceiling/amethyst", + "placement": [ + { + "type": "count", + "count": 64 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/diamond.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/diamond.json new file mode 100644 index 00000000..c015c4fa --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/diamond.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/small/ceiling/diamond", + "placement": [ + { + "type": "count", + "count": 32 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/quartz.json new file mode 100644 index 00000000..46dcc31c --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/quartz.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/small/ceiling/quartz", + "placement": [ + { + "type": "count", + "count": 32 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/rose_quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/rose_quartz.json new file mode 100644 index 00000000..d108a5e5 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/ceiling/rose_quartz.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/small/ceiling/rose_quartz", + "placement": [ + { + "type": "count", + "count": 32 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/amethyst.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/amethyst.json new file mode 100644 index 00000000..a32546b9 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/amethyst.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/small/floor/amethyst", + "placement": [ + { + "type": "count", + "count": 32 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/diamond.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/diamond.json new file mode 100644 index 00000000..dfb3ee03 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/diamond.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/small/floor/diamond", + "placement": [ + { + "type": "count", + "count": 32 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/quartz.json new file mode 100644 index 00000000..00b30568 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/quartz.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/small/floor/quartz", + "placement": [ + { + "type": "count", + "count": 32 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/rose_quartz.json b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/rose_quartz.json new file mode 100644 index 00000000..74da63c3 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/worldgen/placed_feature/crystal_shard/small/floor/rose_quartz.json @@ -0,0 +1,27 @@ +{ + "feature": "wwizardry:crystal_shard/small/floor/rose_quartz", + "placement": [ + { + "type": "count", + "count": 32 + }, + { + "type": "in_square" + }, + { + "type": "height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "above_bottom": 0 + }, + "max_inclusive": { + "absolute": 64 + } + } + }, + { + "type": "biome" + } + ] +} \ No newline at end of file diff --git a/common/src/main/java/dev/sweetberry/wwizardry/compat/terrablender/TerraBlenderInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/compat/terrablender/TerraBlenderInitializer.java index d1ba6f22..ef200563 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/compat/terrablender/TerraBlenderInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/compat/terrablender/TerraBlenderInitializer.java @@ -1,6 +1,7 @@ package dev.sweetberry.wwizardry.compat.terrablender; import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.compat.terrablender.region.CrystalCoveRegion; import dev.sweetberry.wwizardry.content.block.BlockInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.minecraft.world.level.block.Blocks; @@ -14,6 +15,7 @@ public class TerraBlenderInitializer { public static void init() { Regions.register(ForgottenFieldsRegion.INSTANCE); Regions.register(FungalForestRegion.INSTANCE); + Regions.register(CrystalCoveRegion.INSTANCE); SurfaceRuleManager.addSurfaceRules( SurfaceRuleManager.RuleCategory.OVERWORLD, diff --git a/common/src/main/java/dev/sweetberry/wwizardry/compat/terrablender/region/CrystalCoveRegion.java b/common/src/main/java/dev/sweetberry/wwizardry/compat/terrablender/region/CrystalCoveRegion.java new file mode 100644 index 00000000..933fb3e6 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/compat/terrablender/region/CrystalCoveRegion.java @@ -0,0 +1,29 @@ +package dev.sweetberry.wwizardry.compat.terrablender.region; + +import com.mojang.datafixers.util.Pair; +import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Biomes; +import net.minecraft.world.level.biome.Climate; +import terrablender.api.Region; +import terrablender.api.RegionType; + +import java.util.function.Consumer; + +public class CrystalCoveRegion extends Region { + public static final CrystalCoveRegion INSTANCE = new CrystalCoveRegion(); + + public CrystalCoveRegion() { + super(WanderingWizardry.id("crystal_coves"), RegionType.OVERWORLD, 3); + } + + @Override + public void addBiomes(Registry registry, Consumer>> mapper) { + addModifiedVanillaOverworldBiomes(mapper, builder -> { + builder.replaceBiome(Biomes.DRIPSTONE_CAVES, WorldgenInitializer.CRYSTAL_COVE); + }); + } +} diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java index 6f97b2ec..c51520ef 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/entity/AltarCatalyzerBlockEntity.java @@ -1,6 +1,5 @@ package dev.sweetberry.wwizardry.content.block.entity; -import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.altar.AltarCraftable; import dev.sweetberry.wwizardry.api.altar.AltarRecipeView; import dev.sweetberry.wwizardry.api.net.PacketRegistry; @@ -69,12 +68,8 @@ public void tryCraft(BlockState state) { .anyMatch(it -> it.heldItem.isEmpty()) ) return; - WanderingWizardry.LOGGER.info("test"); - var optional = level.getRecipeManager().getRecipeFor(RecipeInitializer.ALTAR_TYPE.get(), view, level); - WanderingWizardry.LOGGER.info("{}", optional.isPresent()); - if (optional.isPresent()) { optional.get().value().tryCraft(view, level); startCrafting(view); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java index fd7adc73..9831f4fe 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/redstone/LogicGateBlock.java @@ -77,7 +77,6 @@ private int calculateOutputSignal(Level world, BlockPos pos, BlockState state) { int back = getInputSignal(world, pos, state); int side = getAlternateSignal(world, pos, state); var mode = state.getValue(MODE); - WanderingWizardry.LOGGER.info("{}, {}, {}", back, side, mode); return function.compare(state, mode, side, back); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java index 7eebc218..39bf895e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java @@ -65,7 +65,6 @@ protected void registerGoals() { } public static AttributeSupplier createAttributes() { - WanderingWizardry.LOGGER.info("god damn it"); return Mob .createMobAttributes() .add(Attributes.MOVEMENT_SPEED, 0.1) diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java index cefc04c1..2c1badb0 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/recipe/AltarCatalyzationRecipe.java @@ -29,15 +29,12 @@ public record AltarCatalyzationRecipe( public static final TagKey ALTAR_AIR_MODIFIER = TagKey.create(Registries.ITEM, WanderingWizardry.id("altar_air_modifier")); public static AltarCatalyzationRecipe create(Ingredient catalyst, List inputs, ItemStack result, boolean keepCatalyst, int bloom) { - WanderingWizardry.LOGGER.info("test"); return new AltarCatalyzationRecipe(catalyst, inputs, result, keepCatalyst, bloom); } @Override public boolean matches(AltarRecipeView inventory, Level world) { - WanderingWizardry.LOGGER.info("aaaa"); if (!catalyst.test(inventory.getItemInPedestal(AltarRecipeView.AltarDirection.CENTER))) return false; - WanderingWizardry.LOGGER.info("center"); var met = new boolean[]{false, false, false, false}; var neighbors = inventory.getOuterItems(); for (var neighbor : neighbors) { @@ -51,11 +48,9 @@ public boolean matches(AltarRecipeView inventory, Level world) { } } } - for (var b : met) { - WanderingWizardry.LOGGER.info("{}", b); + for (var b : met) if (!b) return false; - } return true; } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java index d6ce9e33..2dfb4c38 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/WorldgenInitializer.java @@ -30,6 +30,8 @@ public class WorldgenInitializer { public static final ResourceKey FUNGAL_FOREST = key("fungal_forest"); + public static final ResourceKey CRYSTAL_COVE = key("crystal_cove"); + public static final ResourceKey ROSE_QUARTZ = ResourceKey.create(Registries.PLACED_FEATURE, WanderingWizardry.id("ore/rose_quartz")); public static final Map>> OVERWORLD_MODIFICATIONS = new HashMap<>(); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java index 6bc78a5e..414fb015 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/CrystalShardFeature.java @@ -3,10 +3,12 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.minecraft.core.BlockPos; import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.GeodeFeature; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; import org.jetbrains.annotations.NotNull; @@ -23,12 +25,34 @@ public boolean place(@NotNull FeaturePlaceContext context) { var origin = context.origin(); var rand = context.random(); var conf = context.config(); + var level = context.level(); + + var block = level.getBlockState(origin); + var check = FeatureHelper.canReplace(block); + if (conf.ceiling) { + while (FeatureHelper.canReplace(block) == check) { + origin = check ? origin.above() : origin.below(); + if (origin.getY() > level.getMaxBuildHeight() || origin.getY() < level.getMinBuildHeight()) + return false; + block = level.getBlockState(origin); + } + } else { + while (FeatureHelper.canReplace(block) == check) { + origin = check ? origin.below() : origin.above(); + if (origin.getY() > level.getMaxBuildHeight() || origin.getY() < level.getMinBuildHeight()) + return false; + block = level.getBlockState(origin); + } + } + if (!level.getBiome(origin).is(WorldgenInitializer.CRYSTAL_COVE)) + return false; // Get a random rotation - final var ftau = (float) Math.TAU; + final var tau = (float) Math.TAU; + final var halfPi = (float) Math.PI / 2; var q = new Quaternionf() - .rotateLocalX(rand.nextFloat() * ftau / 4) - .rotateLocalY(rand.nextFloat() * ftau); + .rotateLocalX(rand.nextFloat() * halfPi + (conf.ceiling ? halfPi : 0)) + .rotateLocalY(rand.nextFloat() * tau); var length = context.config().length.sample(rand); var projected = new Vector3f( @@ -54,7 +78,7 @@ private void drawLines(@NotNull FeaturePlaceContext context, BlockPos or if (dist > radius) continue; var pos = origin.offset(x, y, z); - FeatureHelper.drawLine(context, pos, dest, state); + FeatureHelper.drawLine(context, pos, dest, state, this::safeSetBlock); } } } @@ -63,12 +87,14 @@ private void drawLines(@NotNull FeaturePlaceContext context, BlockPos or public record Config( BlockStateProvider state, FloatProvider radius, - FloatProvider length + FloatProvider length, + boolean ceiling ) implements FeatureConfiguration { public static final Codec CODEC = RecordCodecBuilder.create(inst -> inst.group( BlockStateProvider.CODEC.fieldOf("state").forGetter(Config::state), FloatProvider.CODEC.fieldOf("radius").forGetter(Config::radius), - FloatProvider.CODEC.fieldOf("length").forGetter(Config::length) + FloatProvider.CODEC.fieldOf("length").forGetter(Config::length), + Codec.BOOL.optionalFieldOf("ceiling", false).forGetter(Config::ceiling) ).apply(inst, Config::new)); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java index 36783747..f1ddd311 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/world/feature/FeatureHelper.java @@ -1,15 +1,25 @@ package dev.sweetberry.wwizardry.content.world.feature; import net.minecraft.core.BlockPos; +import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; import org.jetbrains.annotations.NotNull; +import java.util.function.Predicate; + public class FeatureHelper { + @FunctionalInterface + public interface SafeSet { + void safeSetBlock(WorldGenLevel level, BlockPos pos, BlockState state, Predicate predicate); + } + // Fast voxel traversal algorithm - public static void drawLine(@NotNull FeaturePlaceContext context, BlockPos origin, BlockPos dest, BlockStateProvider provider) { + public static void drawLine(@NotNull FeaturePlaceContext context, BlockPos origin, BlockPos dest, BlockStateProvider provider, SafeSet set) { var level = context.level(); var rand = context.random(); @@ -47,9 +57,10 @@ public static void drawLine(@NotNull FeaturePl dist = (float)Math.sqrt((traversedX * traversedX) + (traversedY * traversedY) + (traversedZ * traversedZ)); var blockPos = new BlockPos((int)Math.floor(x), (int)Math.floor(y), (int)Math.floor(z)); + var state = level.getBlockState(blockPos); - if (level.ensureCanWrite(blockPos) && level.getBlockState(blockPos).isAir()) - level.setBlock(blockPos, provider.getState(rand, blockPos), Block.UPDATE_ALL); + if (level.ensureCanWrite(blockPos) && canReplace(state)) + set.safeSetBlock(level, blockPos, provider.getState(rand, blockPos), a -> true); if (blockPos.equals(dest) || dist > maxDist) break; @@ -67,6 +78,10 @@ public static void drawLine(@NotNull FeaturePl } } + public static boolean canReplace(BlockState state) { + return state.isAir() || state.is(Blocks.WATER) || state.is(Blocks.LAVA); + } + private static float mod1(float value) { return (value % 1 + 1) % 1; } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java index f158844b..0bd6ef74 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_BeaconBlockEntity.java @@ -27,9 +27,7 @@ public class Mixin_BeaconBlockEntity { ) private static int checkCopperLens(BlockState instance, BlockGetter blockGetter, BlockPos pos, Operation original) { if (instance.getBlock() instanceof CopperLensBlock copperLens) { - WanderingWizardry.LOGGER.info("waaaa"); var shouldBlock = copperLens.shouldBlockBeacon(instance); - WanderingWizardry.LOGGER.info("{}. {}, {}", instance.getValue(CopperLensBlock.AXIS), instance.getValue(CopperLensBlock.FOCUS), shouldBlock); return shouldBlock ? 16 : original.call(instance, blockGetter, pos); } @@ -45,7 +43,6 @@ private static int checkCopperLens(BlockState instance, BlockGetter blockGetter, ) private static boolean checkCopperLens(BlockState instance, Block block, Operation original) { if (instance.getBlock() instanceof CopperLensBlock copperLens) { - WanderingWizardry.LOGGER.info("{}. {}", instance.getValue(CopperLensBlock.AXIS), instance.getValue(CopperLensBlock.FOCUS)); return !copperLens.shouldBlockBeacon(instance); } return original.call(instance, block); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Boat.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Boat.java index 4f2b3564..9e9c8362 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Boat.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_Boat.java @@ -41,7 +41,6 @@ public class Mixin_Boat { private void wwizardry$getDropItem(CallbackInfoReturnable cir) { var self = (Boat)(Object)this; var type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, self).type; - WanderingWizardry.LOGGER.info("{}", type); if (type == null) return; var boat = BoatComponent.BOATS.get(type); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ChestBoat.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ChestBoat.java index 9b3f22f7..8af7db7d 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ChestBoat.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Mixin_ChestBoat.java @@ -21,7 +21,6 @@ public class Mixin_ChestBoat { private void wwizardry$getDropItem(CallbackInfoReturnable cir) { var self = (Boat)(Object)this; var type = ComponentInitializer.getComponent(ComponentInitializer.BOAT, self).type; - WanderingWizardry.LOGGER.info("{}", type); if (type == null) return; var boat = BoatComponent.BOATS.get(type); diff --git a/data/world/biome/crystal_cove.fennec b/data/world/biome/crystal_cove.fennec new file mode 100644 index 00000000..ae01a409 --- /dev/null +++ b/data/world/biome/crystal_cove.fennec @@ -0,0 +1,194 @@ +carvers { + air [ + "cave" + "cave_extra_underground" + "canyon" + ] +} +downfall = 0.4 +effects { + fog_color = 12638463 + mood_sound { + block_search_extent = 8 + offset = 2 + sound = "ambient.cave" + tick_delay = 6000 + } + music { + max_delay = 24000 + min_delay = 12000 + replace_current_music = false + sound = "music.overworld.dripstone_caves" + } + sky_color = 7907327 + water_color = 4159204 + water_fog_color = 329011 +} +features [ + [] + [ + "lake_lava_underground" + "lake_lava_surface" + ] + [ + "amethyst_geode" + ] + [ + "monster_room" + "monster_room_deep" + ] + [] + [] + [ + "ore_dirt" + "ore_gravel" + "ore_granite_upper" + "ore_granite_lower" + "ore_diorite_upper" + "ore_diorite_lower" + "ore_andesite_upper" + "ore_andesite_lower" + "ore_tuff" + "ore_coal_upper" + "ore_coal_lower" + "ore_iron_upper" + "ore_iron_middle" + "ore_iron_small" + "ore_gold" + "ore_gold_lower" + "ore_redstone" + "ore_redstone_lower" + "ore_diamond" + "ore_diamond_medium" + "ore_diamond_large" + "ore_diamond_buried" + "ore_lapis" + "ore_lapis_buried" + "ore_copper_large" + "underwater_magma" + "disk_sand" + "disk_clay" + "disk_gravel" + ] + [ + "wwizardry:crystal_shard/large/ceiling/amethyst" + "wwizardry:crystal_shard/large/ceiling/diamond" + "wwizardry:crystal_shard/large/ceiling/quartz" + "wwizardry:crystal_shard/large/ceiling/rose_quartz" + + "wwizardry:crystal_shard/large/floor/amethyst" + "wwizardry:crystal_shard/large/floor/diamond" + "wwizardry:crystal_shard/large/floor/quartz" + "wwizardry:crystal_shard/large/floor/rose_quartz" + + "wwizardry:crystal_shard/small/ceiling/amethyst" + "wwizardry:crystal_shard/small/ceiling/diamond" + "wwizardry:crystal_shard/small/ceiling/quartz" + "wwizardry:crystal_shard/small/ceiling/rose_quartz" + + "wwizardry:crystal_shard/small/floor/amethyst" + "wwizardry:crystal_shard/small/floor/diamond" + "wwizardry:crystal_shard/small/floor/quartz" + "wwizardry:crystal_shard/small/floor/rose_quartz" + ] + [ + "spring_water" + "spring_lava" + ] + [ + "glow_lichen" + "patch_tall_grass_2" + "trees_plains" + "flower_plains" + "patch_grass_plain" + "brown_mushroom_normal" + "red_mushroom_normal" + "patch_sugar_cane" + "patch_pumpkin" + ] + [ + "freeze_top_layer" + ] +] +has_precipitation = true +spawn_costs {} +spawners { + ambient [ + { + type = "bat" + maxCount = 8 + minCount = 8 + weight = 10 + } + ] + axolotls [] + creature [] + misc [] + monster [ + { + type = "spider" + maxCount = 4 + minCount = 4 + weight = 100 + } + { + type = "zombie" + maxCount = 4 + minCount = 4 + weight = 95 + } + { + type = "zombie_villager" + maxCount = 1 + minCount = 1 + weight = 5 + } + { + type = "skeleton" + maxCount = 4 + minCount = 4 + weight = 100 + } + { + type = "creeper" + maxCount = 4 + minCount = 4 + weight = 100 + } + { + type = "slime" + maxCount = 4 + minCount = 4 + weight = 100 + } + { + type = "enderman" + maxCount = 4 + minCount = 1 + weight = 10 + } + { + type = "witch" + maxCount = 1 + minCount = 1 + weight = 5 + } + { + type = "drowned" + maxCount = 4 + minCount = 4 + weight = 95 + } + ] + underground_water_creature [ + { + type = "glow_squid" + maxCount = 6 + minCount = 4 + weight = 10 + } + ] + water_ambient [] + water_creature [] +} +temperature = 0.8 diff --git a/data/world/configured_feature/crystal_shard/large/ceiling/amethyst.fennec b/data/world/configured_feature/crystal_shard/large/ceiling/amethyst.fennec new file mode 100644 index 00000000..e2f756c1 --- /dev/null +++ b/data/world/configured_feature/crystal_shard/large/ceiling/amethyst.fennec @@ -0,0 +1,21 @@ +type = "wwizardry:crystal_shard" + +config { + -ceiling + state { + type = "simple_state_provider" + state { + Name = "wwizardry:amethyst_glass" + } + } + radius { + type = "uniform" + max_exclusive = 3 + min_inclusive = 2 + } + length { + type = "uniform" + max_exclusive = 30 + min_inclusive = 15 + } +} diff --git a/data/world/configured_feature/crystal_shard/large/ceiling/diamond.fennec b/data/world/configured_feature/crystal_shard/large/ceiling/diamond.fennec new file mode 100644 index 00000000..c7e85d54 --- /dev/null +++ b/data/world/configured_feature/crystal_shard/large/ceiling/diamond.fennec @@ -0,0 +1,21 @@ +type = "wwizardry:crystal_shard" + +config { + -ceiling + state { + type = "simple_state_provider" + state { + Name = "wwizardry:diamond_glass" + } + } + radius { + type = "uniform" + max_exclusive = 3 + min_inclusive = 2 + } + length { + type = "uniform" + max_exclusive = 30 + min_inclusive = 15 + } +} diff --git a/data/world/configured_feature/crystal_shard/large/ceiling/quartz.fennec b/data/world/configured_feature/crystal_shard/large/ceiling/quartz.fennec new file mode 100644 index 00000000..9695435a --- /dev/null +++ b/data/world/configured_feature/crystal_shard/large/ceiling/quartz.fennec @@ -0,0 +1,21 @@ +type = "wwizardry:crystal_shard" + +config { + -ceiling + state { + type = "simple_state_provider" + state { + Name = "wwizardry:quartz_glass" + } + } + radius { + type = "uniform" + max_exclusive = 3 + min_inclusive = 2 + } + length { + type = "uniform" + max_exclusive = 30 + min_inclusive = 15 + } +} diff --git a/data/world/configured_feature/crystal_shard/large/ceiling/rose_quartz.fennec b/data/world/configured_feature/crystal_shard/large/ceiling/rose_quartz.fennec new file mode 100644 index 00000000..4d6c4b9f --- /dev/null +++ b/data/world/configured_feature/crystal_shard/large/ceiling/rose_quartz.fennec @@ -0,0 +1,21 @@ +type = "wwizardry:crystal_shard" + +config { + -ceiling + state { + type = "simple_state_provider" + state { + Name = "wwizardry:rose_quartz_glass" + } + } + radius { + type = "uniform" + max_exclusive = 3 + min_inclusive = 2 + } + length { + type = "uniform" + max_exclusive = 30 + min_inclusive = 15 + } +} diff --git a/data/world/configured_feature/crystal_shard/large/floor/amethyst.fennec b/data/world/configured_feature/crystal_shard/large/floor/amethyst.fennec new file mode 100644 index 00000000..7d272fdf --- /dev/null +++ b/data/world/configured_feature/crystal_shard/large/floor/amethyst.fennec @@ -0,0 +1,20 @@ +type = "wwizardry:crystal_shard" + +config { + state { + type = "simple_state_provider" + state { + Name = "wwizardry:amethyst_glass" + } + } + radius { + type = "uniform" + max_exclusive = 3 + min_inclusive = 2 + } + length { + type = "uniform" + max_exclusive = 30 + min_inclusive = 15 + } +} diff --git a/data/world/configured_feature/crystal_shard/large/floor/diamond.fennec b/data/world/configured_feature/crystal_shard/large/floor/diamond.fennec new file mode 100644 index 00000000..19842c60 --- /dev/null +++ b/data/world/configured_feature/crystal_shard/large/floor/diamond.fennec @@ -0,0 +1,20 @@ +type = "wwizardry:crystal_shard" + +config { + state { + type = "simple_state_provider" + state { + Name = "wwizardry:diamond_glass" + } + } + radius { + type = "uniform" + max_exclusive = 3 + min_inclusive = 2 + } + length { + type = "uniform" + max_exclusive = 30 + min_inclusive = 15 + } +} diff --git a/data/world/configured_feature/crystal_shard/large/floor/quartz.fennec b/data/world/configured_feature/crystal_shard/large/floor/quartz.fennec new file mode 100644 index 00000000..99764dff --- /dev/null +++ b/data/world/configured_feature/crystal_shard/large/floor/quartz.fennec @@ -0,0 +1,20 @@ +type = "wwizardry:crystal_shard" + +config { + state { + type = "simple_state_provider" + state { + Name = "wwizardry:quartz_glass" + } + } + radius { + type = "uniform" + max_exclusive = 3 + min_inclusive = 2 + } + length { + type = "uniform" + max_exclusive = 30 + min_inclusive = 15 + } +} diff --git a/data/world/configured_feature/crystal_shard/large/floor/rose_quartz.fennec b/data/world/configured_feature/crystal_shard/large/floor/rose_quartz.fennec new file mode 100644 index 00000000..34e55e74 --- /dev/null +++ b/data/world/configured_feature/crystal_shard/large/floor/rose_quartz.fennec @@ -0,0 +1,20 @@ +type = "wwizardry:crystal_shard" + +config { + state { + type = "simple_state_provider" + state { + Name = "wwizardry:rose_quartz_glass" + } + } + radius { + type = "uniform" + max_exclusive = 3 + min_inclusive = 2 + } + length { + type = "uniform" + max_exclusive = 30 + min_inclusive = 15 + } +} diff --git a/data/world/configured_feature/crystal_shard/small/ceiling/amethyst.fennec b/data/world/configured_feature/crystal_shard/small/ceiling/amethyst.fennec new file mode 100644 index 00000000..f98cbfa5 --- /dev/null +++ b/data/world/configured_feature/crystal_shard/small/ceiling/amethyst.fennec @@ -0,0 +1,21 @@ +type = "wwizardry:crystal_shard" + +config { + -ceiling + state { + type = "simple_state_provider" + state { + Name = "wwizardry:amethyst_glass" + } + } + radius { + type = "uniform" + max_exclusive = 2 + min_inclusive = 1 + } + length { + type = "uniform" + max_exclusive = 20 + min_inclusive = 10 + } +} diff --git a/data/world/configured_feature/crystal_shard/small/ceiling/diamond.fennec b/data/world/configured_feature/crystal_shard/small/ceiling/diamond.fennec new file mode 100644 index 00000000..74866d4f --- /dev/null +++ b/data/world/configured_feature/crystal_shard/small/ceiling/diamond.fennec @@ -0,0 +1,21 @@ +type = "wwizardry:crystal_shard" + +config { + -ceiling + state { + type = "simple_state_provider" + state { + Name = "wwizardry:diamond_glass" + } + } + radius { + type = "uniform" + max_exclusive = 2 + min_inclusive = 1 + } + length { + type = "uniform" + max_exclusive = 20 + min_inclusive = 10 + } +} diff --git a/data/world/configured_feature/crystal_shard/small/ceiling/quartz.fennec b/data/world/configured_feature/crystal_shard/small/ceiling/quartz.fennec new file mode 100644 index 00000000..00d8dd1d --- /dev/null +++ b/data/world/configured_feature/crystal_shard/small/ceiling/quartz.fennec @@ -0,0 +1,21 @@ +type = "wwizardry:crystal_shard" + +config { + -ceiling + state { + type = "simple_state_provider" + state { + Name = "wwizardry:quartz_glass" + } + } + radius { + type = "uniform" + max_exclusive = 2 + min_inclusive = 1 + } + length { + type = "uniform" + max_exclusive = 20 + min_inclusive = 10 + } +} diff --git a/data/world/configured_feature/crystal_shard/small/ceiling/rose_quartz.fennec b/data/world/configured_feature/crystal_shard/small/ceiling/rose_quartz.fennec new file mode 100644 index 00000000..c22c12ac --- /dev/null +++ b/data/world/configured_feature/crystal_shard/small/ceiling/rose_quartz.fennec @@ -0,0 +1,21 @@ +type = "wwizardry:crystal_shard" + +config { + -ceiling + state { + type = "simple_state_provider" + state { + Name = "wwizardry:rose_quartz_glass" + } + } + radius { + type = "uniform" + max_exclusive = 2 + min_inclusive = 1 + } + length { + type = "uniform" + max_exclusive = 20 + min_inclusive = 10 + } +} diff --git a/data/world/configured_feature/crystal_shard/small/floor/amethyst.fennec b/data/world/configured_feature/crystal_shard/small/floor/amethyst.fennec new file mode 100644 index 00000000..6c67c018 --- /dev/null +++ b/data/world/configured_feature/crystal_shard/small/floor/amethyst.fennec @@ -0,0 +1,20 @@ +type = "wwizardry:crystal_shard" + +config { + state { + type = "simple_state_provider" + state { + Name = "wwizardry:amethyst_glass" + } + } + radius { + type = "uniform" + max_exclusive = 2 + min_inclusive = 1 + } + length { + type = "uniform" + max_exclusive = 20 + min_inclusive = 10 + } +} diff --git a/data/world/configured_feature/crystal_shard/small/floor/diamond.fennec b/data/world/configured_feature/crystal_shard/small/floor/diamond.fennec new file mode 100644 index 00000000..453c39a5 --- /dev/null +++ b/data/world/configured_feature/crystal_shard/small/floor/diamond.fennec @@ -0,0 +1,20 @@ +type = "wwizardry:crystal_shard" + +config { + state { + type = "simple_state_provider" + state { + Name = "wwizardry:diamond_glass" + } + } + radius { + type = "uniform" + max_exclusive = 2 + min_inclusive = 1 + } + length { + type = "uniform" + max_exclusive = 20 + min_inclusive = 10 + } +} diff --git a/data/world/configured_feature/crystal_shard/small/floor/quartz.fennec b/data/world/configured_feature/crystal_shard/small/floor/quartz.fennec new file mode 100644 index 00000000..baa04535 --- /dev/null +++ b/data/world/configured_feature/crystal_shard/small/floor/quartz.fennec @@ -0,0 +1,20 @@ +type = "wwizardry:crystal_shard" + +config { + state { + type = "simple_state_provider" + state { + Name = "wwizardry:quartz_glass" + } + } + radius { + type = "uniform" + max_exclusive = 2 + min_inclusive = 1 + } + length { + type = "uniform" + max_exclusive = 20 + min_inclusive = 10 + } +} diff --git a/data/world/configured_feature/small_rose_quartz_shard.fennec b/data/world/configured_feature/crystal_shard/small/floor/rose_quartz.fennec similarity index 100% rename from data/world/configured_feature/small_rose_quartz_shard.fennec rename to data/world/configured_feature/crystal_shard/small/floor/rose_quartz.fennec diff --git a/data/world/placed_feature/crystal_shard/large/ceiling/amethyst.fennec b/data/world/placed_feature/crystal_shard/large/ceiling/amethyst.fennec new file mode 100644 index 00000000..cdf3cfa7 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/large/ceiling/amethyst.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/large/ceiling/amethyst" +placement [ + { + type = "count" + count = 16 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/large/ceiling/diamond.fennec b/data/world/placed_feature/crystal_shard/large/ceiling/diamond.fennec new file mode 100644 index 00000000..765fc989 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/large/ceiling/diamond.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/large/ceiling/diamond" +placement [ + { + type = "count" + count = 16 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/large/ceiling/quartz.fennec b/data/world/placed_feature/crystal_shard/large/ceiling/quartz.fennec new file mode 100644 index 00000000..c3a7cf55 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/large/ceiling/quartz.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/large/ceiling/quartz" +placement [ + { + type = "count" + count = 16 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/large/ceiling/rose_quartz.fennec b/data/world/placed_feature/crystal_shard/large/ceiling/rose_quartz.fennec new file mode 100644 index 00000000..ce73eab1 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/large/ceiling/rose_quartz.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/large/ceiling/rose_quartz" +placement [ + { + type = "count" + count = 16 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/large/floor/amethyst.fennec b/data/world/placed_feature/crystal_shard/large/floor/amethyst.fennec new file mode 100644 index 00000000..1fc1caf7 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/large/floor/amethyst.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/large/floor/amethyst" +placement [ + { + type = "count" + count = 16 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/large/floor/diamond.fennec b/data/world/placed_feature/crystal_shard/large/floor/diamond.fennec new file mode 100644 index 00000000..0951ed15 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/large/floor/diamond.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/large/floor/diamond" +placement [ + { + type = "count" + count = 16 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/large/floor/quartz.fennec b/data/world/placed_feature/crystal_shard/large/floor/quartz.fennec new file mode 100644 index 00000000..116f9fc7 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/large/floor/quartz.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/large/floor/quartz" +placement [ + { + type = "count" + count = 16 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/large/floor/rose_quartz.fennec b/data/world/placed_feature/crystal_shard/large/floor/rose_quartz.fennec new file mode 100644 index 00000000..b161b75e --- /dev/null +++ b/data/world/placed_feature/crystal_shard/large/floor/rose_quartz.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/large/floor/rose_quartz" +placement [ + { + type = "count" + count = 16 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/small/ceiling/amethyst.fennec b/data/world/placed_feature/crystal_shard/small/ceiling/amethyst.fennec new file mode 100644 index 00000000..d1167ba8 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/small/ceiling/amethyst.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/small/ceiling/amethyst" +placement [ + { + type = "count" + count = 64 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/small/ceiling/diamond.fennec b/data/world/placed_feature/crystal_shard/small/ceiling/diamond.fennec new file mode 100644 index 00000000..4f63d17c --- /dev/null +++ b/data/world/placed_feature/crystal_shard/small/ceiling/diamond.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/small/ceiling/diamond" +placement [ + { + type = "count" + count = 32 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/small/ceiling/quartz.fennec b/data/world/placed_feature/crystal_shard/small/ceiling/quartz.fennec new file mode 100644 index 00000000..1843af75 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/small/ceiling/quartz.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/small/ceiling/quartz" +placement [ + { + type = "count" + count = 32 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/small/ceiling/rose_quartz.fennec b/data/world/placed_feature/crystal_shard/small/ceiling/rose_quartz.fennec new file mode 100644 index 00000000..4e952394 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/small/ceiling/rose_quartz.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/small/ceiling/rose_quartz" +placement [ + { + type = "count" + count = 32 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/small/floor/amethyst.fennec b/data/world/placed_feature/crystal_shard/small/floor/amethyst.fennec new file mode 100644 index 00000000..9c8c04f2 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/small/floor/amethyst.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/small/floor/amethyst" +placement [ + { + type = "count" + count = 32 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/small/floor/diamond.fennec b/data/world/placed_feature/crystal_shard/small/floor/diamond.fennec new file mode 100644 index 00000000..647dd246 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/small/floor/diamond.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/small/floor/diamond" +placement [ + { + type = "count" + count = 32 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/small/floor/quartz.fennec b/data/world/placed_feature/crystal_shard/small/floor/quartz.fennec new file mode 100644 index 00000000..7f57a4d7 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/small/floor/quartz.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/small/floor/quartz" +placement [ + { + type = "count" + count = 32 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] diff --git a/data/world/placed_feature/crystal_shard/small/floor/rose_quartz.fennec b/data/world/placed_feature/crystal_shard/small/floor/rose_quartz.fennec new file mode 100644 index 00000000..4d4ba177 --- /dev/null +++ b/data/world/placed_feature/crystal_shard/small/floor/rose_quartz.fennec @@ -0,0 +1,23 @@ +feature = "wwizardry:crystal_shard/small/floor/rose_quartz" +placement [ + { + type = "count" + count = 32 + } + { + type = "in_square" + } + { + type = "height_range" + height { + type = "minecraft:uniform" + min_inclusive { + above_bottom = 0 + } + max_inclusive { + absolute = 64 + } + } + } + { type = "biome" } +] From d925bc27fbd1a06c62aac107b43c7fdd06ac9596 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 30 Aug 2024 15:50:36 -0500 Subject: [PATCH 40/46] Loot tables --- .../tags/block/mineable/pickaxe.json | 72 +++++++++++++++++ .../loot_table/blocks/amethyst_glass.json | 19 +++++ .../loot_table/blocks/copper_lens.json | 19 +++++ .../loot_table/blocks/diamond_glass.json | 19 +++++ .../blocks/exposed_copper_lens.json | 19 +++++ .../loot_table/blocks/large_sculk_bud.json | 33 ++++++++ .../loot_table/blocks/medium_sculk_bud.json | 33 ++++++++ .../blocks/oxidized_copper_lens.json | 19 +++++ .../loot_table/blocks/quartz_glass.json | 19 +++++ .../loot_table/blocks/rose_quartz_glass.json | 19 +++++ .../loot_table/blocks/sculk_cluster.json | 81 +++++++++++++++++++ .../loot_table/blocks/sculk_crystal.json | 19 +++++ .../loot_table/blocks/small_sculk_bud.json | 33 ++++++++ .../loot_table/blocks/snail_shell.json | 19 +++++ .../loot_table/blocks/waxed_copper_lens.json | 19 +++++ .../blocks/waxed_exposed_copper_lens.json | 19 +++++ .../blocks/waxed_oxidized_copper_lens.json | 19 +++++ .../blocks/waxed_weathered_copper_lens.json | 19 +++++ .../blocks/weathered_copper_lens.json | 19 +++++ data/basic_block_loot.fennec | 17 ++++ data/loot/blocks/large_sculk_bud.fennec | 24 ++++++ data/loot/blocks/medium_sculk_bud.fennec | 24 ++++++ data/loot/blocks/sculk_cluster.fennec | 67 +++++++++++++++ data/loot/blocks/small_sculk_bud.fennec | 24 ++++++ data/tags/minecraft.fennec | 21 +++++ 25 files changed, 695 insertions(+) create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/amethyst_glass.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/copper_lens.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/diamond_glass.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/exposed_copper_lens.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/large_sculk_bud.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/medium_sculk_bud.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/oxidized_copper_lens.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/quartz_glass.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_glass.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/sculk_cluster.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/sculk_crystal.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/small_sculk_bud.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/snail_shell.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_copper_lens.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_exposed_copper_lens.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_oxidized_copper_lens.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_weathered_copper_lens.json create mode 100644 common/src/generated/resources/data/wwizardry/loot_table/blocks/weathered_copper_lens.json create mode 100644 data/loot/blocks/large_sculk_bud.fennec create mode 100644 data/loot/blocks/medium_sculk_bud.fennec create mode 100644 data/loot/blocks/sculk_cluster.fennec create mode 100644 data/loot/blocks/small_sculk_bud.fennec diff --git a/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index 386d4aaf..7130fddd 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -36,6 +36,78 @@ { "required": false, "id": "wwizardry:rose_quartz_block" + }, + { + "required": false, + "id": "wwizardry:quartz_glass" + }, + { + "required": false, + "id": "wwizardry:rose_quartz_glass" + }, + { + "required": false, + "id": "wwizardry:amethyst_glass" + }, + { + "required": false, + "id": "wwizardry:diamond_glass" + }, + { + "required": false, + "id": "wwizardry:copper_lens" + }, + { + "required": false, + "id": "wwizardry:exposed_copper_lens" + }, + { + "required": false, + "id": "wwizardry:weathered_copper_lens" + }, + { + "required": false, + "id": "wwizardry:oxidized_copper_lens" + }, + { + "required": false, + "id": "wwizardry:waxed_copper_lens" + }, + { + "required": false, + "id": "wwizardry:waxed_exposed_copper_lens" + }, + { + "required": false, + "id": "wwizardry:waxed_weathered_copper_lens" + }, + { + "required": false, + "id": "wwizardry:waxed_oxidized_copper_lens" + }, + { + "required": false, + "id": "wwizardry:sculk_crystal" + }, + { + "required": false, + "id": "wwizardry:budding_sculk_crystal" + }, + { + "required": false, + "id": "wwizardry:small_sculk_bud" + }, + { + "required": false, + "id": "wwizardry:medium_sculk_bud" + }, + { + "required": false, + "id": "wwizardry:large_sculk_bud" + }, + { + "required": false, + "id": "wwizardry:sculk_cluster" } ] } \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/amethyst_glass.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/amethyst_glass.json new file mode 100644 index 00000000..b5a96bb8 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/amethyst_glass.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:amethyst_glass" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/copper_lens.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/copper_lens.json new file mode 100644 index 00000000..c4438fcb --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/copper_lens.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:copper_lens" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/diamond_glass.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/diamond_glass.json new file mode 100644 index 00000000..d39b50a7 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/diamond_glass.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:diamond_glass" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/exposed_copper_lens.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/exposed_copper_lens.json new file mode 100644 index 00000000..097c244d --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/exposed_copper_lens.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:exposed_copper_lens" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/large_sculk_bud.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/large_sculk_bud.json new file mode 100644 index 00000000..de17b5d6 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/large_sculk_bud.json @@ -0,0 +1,33 @@ +{ + "type": "block", + "random_sequence": "wwizardry:blocks/large_sculk_bud", + "pools": [ + { + "bonus_rolls": 0, + "conditions": [ + { + "condition": "match_tool", + "predicate": { + "predicates": { + "enchantments": [ + { + "enchantments": "silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "entries": [ + { + "type": "item", + "name": "wwizardry:large_sculk_bud" + } + ], + "rolls": 1 + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/medium_sculk_bud.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/medium_sculk_bud.json new file mode 100644 index 00000000..98bf7071 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/medium_sculk_bud.json @@ -0,0 +1,33 @@ +{ + "type": "block", + "random_sequence": "wwizardry:blocks/medium_sculk_bud", + "pools": [ + { + "bonus_rolls": 0, + "conditions": [ + { + "condition": "match_tool", + "predicate": { + "predicates": { + "enchantments": [ + { + "enchantments": "silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "entries": [ + { + "type": "item", + "name": "wwizardry:medium_sculk_bud" + } + ], + "rolls": 1 + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/oxidized_copper_lens.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/oxidized_copper_lens.json new file mode 100644 index 00000000..76c2b672 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/oxidized_copper_lens.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:oxidized_copper_lens" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/quartz_glass.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/quartz_glass.json new file mode 100644 index 00000000..d2432a97 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/quartz_glass.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:quartz_glass" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_glass.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_glass.json new file mode 100644 index 00000000..6fc8a731 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/rose_quartz_glass.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:rose_quartz_glass" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculk_cluster.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculk_cluster.json new file mode 100644 index 00000000..104f4e51 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculk_cluster.json @@ -0,0 +1,81 @@ +{ + "type": "block", + "random_sequence": "wwizardry:blocks/sculk_cluster", + "pools": [ + { + "bonus_rolls": 0, + "rolls": 1, + "entries": [ + { + "type": "alternatives", + "children": [ + { + "type": "item", + "name": "wwizardry:sculk_cluster", + "conditions": [ + { + "condition": "match_tool", + "predicate": { + "predicates": { + "enchantments": [ + { + "enchantments": "silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ] + }, + { + "type": "alternatives", + "children": [ + { + "type": "item", + "name": "wwizardry:crystalline_sculk", + "conditions": [ + { + "condition": "match_tool", + "predicate": { + "items": "#cluster_max_harvestables" + } + } + ], + "functions": [ + { + "add": false, + "count": 4, + "function": "set_count" + }, + { + "enchantment": "fortune", + "formula": "ore_drops", + "function": "apply_bonus" + } + ] + }, + { + "type": "item", + "name": "wwizardry:crystalline_sculk", + "functions": [ + { + "add": false, + "count": 2, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ] + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculk_crystal.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculk_crystal.json new file mode 100644 index 00000000..fcaccb0c --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/sculk_crystal.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:sculk_crystal" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/small_sculk_bud.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/small_sculk_bud.json new file mode 100644 index 00000000..e7022e61 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/small_sculk_bud.json @@ -0,0 +1,33 @@ +{ + "type": "block", + "random_sequence": "wwizardry:blocks/small_sculk_bud", + "pools": [ + { + "bonus_rolls": 0, + "conditions": [ + { + "condition": "match_tool", + "predicate": { + "predicates": { + "enchantments": [ + { + "enchantments": "silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "entries": [ + { + "type": "item", + "name": "wwizardry:small_sculk_bud" + } + ], + "rolls": 1 + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/snail_shell.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/snail_shell.json new file mode 100644 index 00000000..98a10058 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/snail_shell.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:snail_shell" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_copper_lens.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_copper_lens.json new file mode 100644 index 00000000..dcdf475c --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_copper_lens.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:waxed_copper_lens" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_exposed_copper_lens.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_exposed_copper_lens.json new file mode 100644 index 00000000..d59d379e --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_exposed_copper_lens.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:waxed_exposed_copper_lens" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_oxidized_copper_lens.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_oxidized_copper_lens.json new file mode 100644 index 00000000..a46e330e --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_oxidized_copper_lens.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:waxed_oxidized_copper_lens" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_weathered_copper_lens.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_weathered_copper_lens.json new file mode 100644 index 00000000..89486dfe --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/waxed_weathered_copper_lens.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:waxed_weathered_copper_lens" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/weathered_copper_lens.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/weathered_copper_lens.json new file mode 100644 index 00000000..4b777b0f --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/weathered_copper_lens.json @@ -0,0 +1,19 @@ +{ + "type": "block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "wwizardry:weathered_copper_lens" + } + ], + "conditions": [ + { + "condition": "survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/data/basic_block_loot.fennec b/data/basic_block_loot.fennec index 26e8c5a3..8ec70bd3 100644 --- a/data/basic_block_loot.fennec +++ b/data/basic_block_loot.fennec @@ -14,6 +14,23 @@ "sculkflower" "indigo_caeruleum" + "quartz_glass" + "rose_quartz_glass" + "diamond_glass" + "amethyst_glass" + "sculk_crystal" + + "copper_lens" + "exposed_copper_lens" + "weathered_copper_lens" + "oxidized_copper_lens" + "waxed_copper_lens" + "waxed_exposed_copper_lens" + "waxed_weathered_copper_lens" + "waxed_oxidized_copper_lens" + + "snail_shell" + # Basalt Bricks "basalt_bricks" "basalt_brick_stairs" diff --git a/data/loot/blocks/large_sculk_bud.fennec b/data/loot/blocks/large_sculk_bud.fennec new file mode 100644 index 00000000..0481bdf7 --- /dev/null +++ b/data/loot/blocks/large_sculk_bud.fennec @@ -0,0 +1,24 @@ +type = "block" +random_sequence = "wwizardry:blocks/large_sculk_bud" + +pools [{ + bonus_rolls = 0 + conditions [{ + condition = "match_tool" + predicate { + predicates { + enchantments [{ + enchantments = "silk_touch" + levels { + min = 1 + } + }] + } + } + }] + entries [{ + type = "item" + name = "wwizardry:large_sculk_bud" + }] + rolls = 1 +}] diff --git a/data/loot/blocks/medium_sculk_bud.fennec b/data/loot/blocks/medium_sculk_bud.fennec new file mode 100644 index 00000000..472cf43a --- /dev/null +++ b/data/loot/blocks/medium_sculk_bud.fennec @@ -0,0 +1,24 @@ +type = "block" +random_sequence = "wwizardry:blocks/medium_sculk_bud" + +pools [{ + bonus_rolls = 0 + conditions [{ + condition = "match_tool" + predicate { + predicates { + enchantments [{ + enchantments = "silk_touch" + levels { + min = 1 + } + }] + } + } + }] + entries [{ + type = "item" + name = "wwizardry:medium_sculk_bud" + }] + rolls = 1 +}] diff --git a/data/loot/blocks/sculk_cluster.fennec b/data/loot/blocks/sculk_cluster.fennec new file mode 100644 index 00000000..74f9f147 --- /dev/null +++ b/data/loot/blocks/sculk_cluster.fennec @@ -0,0 +1,67 @@ +type = "block" +random_sequence = "wwizardry:blocks/sculk_cluster" + +pools [{ + bonus_rolls = 0 + rolls = 1 + + entries [{ + type = "alternatives" + children [ + { + type = "item" + name = "wwizardry:sculk_cluster" + conditions [{ + condition = "match_tool" + predicate { + predicates { + enchantments [{ + enchantments = "silk_touch" + levels { min = 1 } + }] + } + } + }] + } + { + type = "alternatives" + children [ + { + type = "item" + name = "wwizardry:crystalline_sculk" + conditions [{ + condition = "match_tool" + predicate { + items = "#cluster_max_harvestables" + } + }] + functions [ + { + add = false + count = 4 + function = "set_count" + } + { + enchantment = "fortune" + formula = "ore_drops" + function = "apply_bonus" + } + ] + } + { + type = "item" + name = "wwizardry:crystalline_sculk" + functions [ + { + add = false + count = 2 + function = "set_count" + } + { function = "explosion_decay" } + ] + } + ] + } + ] + }] +}] diff --git a/data/loot/blocks/small_sculk_bud.fennec b/data/loot/blocks/small_sculk_bud.fennec new file mode 100644 index 00000000..fc7ecc13 --- /dev/null +++ b/data/loot/blocks/small_sculk_bud.fennec @@ -0,0 +1,24 @@ +type = "block" +random_sequence = "wwizardry:blocks/small_sculk_bud" + +pools [{ + bonus_rolls = 0 + conditions [{ + condition = "match_tool" + predicate { + predicates { + enchantments [{ + enchantments = "silk_touch" + levels { + min = 1 + } + }] + } + } + }] + entries [{ + type = "item" + name = "wwizardry:small_sculk_bud" + }] + rolls = 1 +}] diff --git a/data/tags/minecraft.fennec b/data/tags/minecraft.fennec index 47df810b..ba194526 100644 --- a/data/tags/minecraft.fennec +++ b/data/tags/minecraft.fennec @@ -26,6 +26,27 @@ block { "wwizardry:rose_quartz_ore" "wwizardry:deepslate_rose_quartz_ore" "wwizardry:rose_quartz_block" + + "wwizardry:quartz_glass" + "wwizardry:rose_quartz_glass" + "wwizardry:amethyst_glass" + "wwizardry:diamond_glass" + + "wwizardry:copper_lens" + "wwizardry:exposed_copper_lens" + "wwizardry:weathered_copper_lens" + "wwizardry:oxidized_copper_lens" + "wwizardry:waxed_copper_lens" + "wwizardry:waxed_exposed_copper_lens" + "wwizardry:waxed_weathered_copper_lens" + "wwizardry:waxed_oxidized_copper_lens" + + "wwizardry:sculk_crystal" + "wwizardry:budding_sculk_crystal" + "wwizardry:small_sculk_bud" + "wwizardry:medium_sculk_bud" + "wwizardry:large_sculk_bud" + "wwizardry:sculk_cluster" ] } From 9aef0a65a733ae56022faad2fb3255379e12974a Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 30 Aug 2024 19:41:07 -0500 Subject: [PATCH 41/46] Add recipes for stuff --- .../data/wwizardry/recipe/amethyst_glass.json | 12 ++++++++++++ .../data/wwizardry/recipe/diamond_glass.json | 12 ++++++++++++ .../data/wwizardry/recipe/quartz_glass.json | 12 ++++++++++++ .../wwizardry/recipe/rose_quartz_glass.json | 12 ++++++++++++ .../data/wwizardry/recipe/sculk_crystal.json | 18 ++++++++++++++++++ data/recipes/amethyst_glass.fennec | 14 ++++++++++++++ data/recipes/diamond_glass.fennec | 14 ++++++++++++++ data/recipes/quartz_glass.fennec | 14 ++++++++++++++ data/recipes/rose_quartz_glass.fennec | 14 ++++++++++++++ data/recipes/sculk_crystal.fennec | 17 +++++++++++++++++ 10 files changed, 139 insertions(+) create mode 100644 common/src/generated/resources/data/wwizardry/recipe/amethyst_glass.json create mode 100644 common/src/generated/resources/data/wwizardry/recipe/diamond_glass.json create mode 100644 common/src/generated/resources/data/wwizardry/recipe/quartz_glass.json create mode 100644 common/src/generated/resources/data/wwizardry/recipe/rose_quartz_glass.json create mode 100644 common/src/generated/resources/data/wwizardry/recipe/sculk_crystal.json create mode 100644 data/recipes/amethyst_glass.fennec create mode 100644 data/recipes/diamond_glass.fennec create mode 100644 data/recipes/quartz_glass.fennec create mode 100644 data/recipes/rose_quartz_glass.fennec create mode 100644 data/recipes/sculk_crystal.fennec diff --git a/common/src/generated/resources/data/wwizardry/recipe/amethyst_glass.json b/common/src/generated/resources/data/wwizardry/recipe/amethyst_glass.json new file mode 100644 index 00000000..9748e773 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/recipe/amethyst_glass.json @@ -0,0 +1,12 @@ +{ + "type": "smelting", + "group": "rose_quartz", + "cooking_time": 200, + "experience": 1, + "ingredient": { + "item": "amethyst" + }, + "result": { + "id": "wwizardry:amethyst_glass" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/diamond_glass.json b/common/src/generated/resources/data/wwizardry/recipe/diamond_glass.json new file mode 100644 index 00000000..a05a0d88 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/recipe/diamond_glass.json @@ -0,0 +1,12 @@ +{ + "type": "smelting", + "group": "rose_quartz", + "cooking_time": 200, + "experience": 1, + "ingredient": { + "item": "diamond" + }, + "result": { + "id": "wwizardry:diamond_glass" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/quartz_glass.json b/common/src/generated/resources/data/wwizardry/recipe/quartz_glass.json new file mode 100644 index 00000000..92cd7ae2 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/recipe/quartz_glass.json @@ -0,0 +1,12 @@ +{ + "type": "smelting", + "group": "rose_quartz", + "cooking_time": 200, + "experience": 1, + "ingredient": { + "item": "quartz" + }, + "result": { + "id": "wwizardry:quartz_glass" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_glass.json b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_glass.json new file mode 100644 index 00000000..23509ae0 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/recipe/rose_quartz_glass.json @@ -0,0 +1,12 @@ +{ + "type": "smelting", + "group": "rose_quartz", + "cooking_time": 200, + "experience": 1, + "ingredient": { + "item": "wwizardry:rose_quartz" + }, + "result": { + "id": "wwizardry:rose_quartz_glass" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/sculk_crystal.json b/common/src/generated/resources/data/wwizardry/recipe/sculk_crystal.json new file mode 100644 index 00000000..f96d9096 --- /dev/null +++ b/common/src/generated/resources/data/wwizardry/recipe/sculk_crystal.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "category": "building", + "show_notification": true, + "key": { + "#": { + "item": "wwizardry:crystalline_sculk" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 1, + "id": "wwizardry:sculk_crystal" + } +} \ No newline at end of file diff --git a/data/recipes/amethyst_glass.fennec b/data/recipes/amethyst_glass.fennec new file mode 100644 index 00000000..f4c0fd6e --- /dev/null +++ b/data/recipes/amethyst_glass.fennec @@ -0,0 +1,14 @@ +type = "smelting" + +group = "rose_quartz" + +cooking_time = 200 +experience = 1 + +ingredient { + item = "amethyst" +} + +result { + id = "wwizardry:amethyst_glass" +} diff --git a/data/recipes/diamond_glass.fennec b/data/recipes/diamond_glass.fennec new file mode 100644 index 00000000..c5c49409 --- /dev/null +++ b/data/recipes/diamond_glass.fennec @@ -0,0 +1,14 @@ +type = "smelting" + +group = "rose_quartz" + +cooking_time = 200 +experience = 1 + +ingredient { + item = "diamond" +} + +result { + id = "wwizardry:diamond_glass" +} diff --git a/data/recipes/quartz_glass.fennec b/data/recipes/quartz_glass.fennec new file mode 100644 index 00000000..86566117 --- /dev/null +++ b/data/recipes/quartz_glass.fennec @@ -0,0 +1,14 @@ +type = "smelting" + +group = "rose_quartz" + +cooking_time = 200 +experience = 1 + +ingredient { + item = "quartz" +} + +result { + id = "wwizardry:quartz_glass" +} diff --git a/data/recipes/rose_quartz_glass.fennec b/data/recipes/rose_quartz_glass.fennec new file mode 100644 index 00000000..b9eac7bf --- /dev/null +++ b/data/recipes/rose_quartz_glass.fennec @@ -0,0 +1,14 @@ +type = "smelting" + +group = "rose_quartz" + +cooking_time = 200 +experience = 1 + +ingredient { + item = "wwizardry:rose_quartz" +} + +result { + id = "wwizardry:rose_quartz_glass" +} diff --git a/data/recipes/sculk_crystal.fennec b/data/recipes/sculk_crystal.fennec new file mode 100644 index 00000000..6831f06d --- /dev/null +++ b/data/recipes/sculk_crystal.fennec @@ -0,0 +1,17 @@ +type = "crafting_shaped" + +category = "building" +-show_notification + +key { + "#" { item = "wwizardry:crystalline_sculk" } +} +pattern [ + "##" + "##" +] + +result { + count = 1 + id = "wwizardry:sculk_crystal" +} From 2408f4cab5ba228f7aa97ae672299d533c1cb9f7 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 12 Sep 2024 18:56:07 -0500 Subject: [PATCH 42/46] Advancement for when you shear a snail --- README.md | 2 +- .../assets/wwizardry/lang/en_us.json | 2 ++ .../criterion/CriterionInitializer.java | 4 ++++ .../criterion/SimpleTriggerCriterion.java | 1 - .../wwizardry/content/entity/Snail.java | 4 ++++ .../advancement/story/shear_snail.json | 24 +++++++++++++++++++ data/lang/en_us.fennec | 4 ++++ 7 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 common/src/main/resources/data/wwizardry/advancement/story/shear_snail.json diff --git a/README.md b/README.md index f48d5d3e..e6ab7187 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,6 @@ If you're contributing translations or tags, make sure to use the `data` directo Data there is converted from [FennecConfig](https://github.com/Oliver-makes-code/FennecConfig) to JSON at compiletime. ## Building the mod -To build the mod, you need a JDK >= 17, as well as [Deno](https://deno.com/runtime) +To build the mod, you need a JDK >= 21, as well as [Deno](https://deno.com/runtime) Everything should be done using the `./gradlew build` command. diff --git a/common/src/generated/resources/assets/wwizardry/lang/en_us.json b/common/src/generated/resources/assets/wwizardry/lang/en_us.json index 939cb1cf..35f7f864 100644 --- a/common/src/generated/resources/assets/wwizardry/lang/en_us.json +++ b/common/src/generated/resources/assets/wwizardry/lang/en_us.json @@ -19,6 +19,8 @@ "wwizardry.soul_mirror.broken": "It is currently broken, blocking your reflection.", "advancement.wwizardry.story.quartz.title": "We Are The Crystal Gems", "advancement.wwizardry.story.quartz.description": "Mine Rose Quartz Ore to get a familiar gem", + "advancement.wwizardry.story.shear_snail.title": "Haha! Slug!", + "advancement.wwizardry.story.shear_snail.description": "Use a shear to get the shell off of a snail", "advancement.wwizardry.adventure.forgotten_fields.title": "A Strange Land...", "advancement.wwizardry.adventure.forgotten_fields.description": "Enter the Forgotten Fields", "advancement.wwizardry.adventure.sculk_lab.title": "A Time Gone By", diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/CriterionInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/CriterionInitializer.java index ab285d2a..b772aa8c 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/CriterionInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/CriterionInitializer.java @@ -24,6 +24,10 @@ public class CriterionInitializer { "place_end_crystal_in_altar" ); + public static final Lazy SHEAR_SNAIL = simple( + "shear_snail" + ); + public static Lazy simple(String id) { return register(id, SimpleTriggerCriterion::new); } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/SimpleTriggerCriterion.java b/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/SimpleTriggerCriterion.java index bfe1df17..410e6bc6 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/SimpleTriggerCriterion.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/criterion/SimpleTriggerCriterion.java @@ -7,7 +7,6 @@ import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.SimpleCriterionTrigger; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.util.ExtraCodecs; public class SimpleTriggerCriterion extends SimpleCriterionTrigger { public static final Codec CODEC = RecordCodecBuilder.create( diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java index 39bf895e..259e9160 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/entity/Snail.java @@ -1,6 +1,7 @@ package dev.sweetberry.wwizardry.content.entity; import dev.sweetberry.wwizardry.WanderingWizardry; +import dev.sweetberry.wwizardry.content.criterion.CriterionInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import net.minecraft.core.BlockPos; @@ -10,6 +11,7 @@ import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.TagKey; @@ -117,6 +119,8 @@ public InteractionResult mobInteract(Player player, InteractionHand hand) { serverLevel.addFreshEntity(item); } } + if (player instanceof ServerPlayer serverPlayer) + CriterionInitializer.SHEAR_SNAIL.get().trigger(serverPlayer); return InteractionResult.SUCCESS; } else if (variant == Variant.SLUG && stack.is(ItemInitializer.SNAIL_SHELL.get())) { setVariant(Variant.randomNonSlug(level().random)); diff --git a/common/src/main/resources/data/wwizardry/advancement/story/shear_snail.json b/common/src/main/resources/data/wwizardry/advancement/story/shear_snail.json new file mode 100644 index 00000000..697b8016 --- /dev/null +++ b/common/src/main/resources/data/wwizardry/advancement/story/shear_snail.json @@ -0,0 +1,24 @@ +{ + "display": { + "icon": { + "id": "wwizardry:snail_shell" + }, + "title": { + "translate": "advancement.wwizardry.story.shear_snail.title" + }, + "description": { + "translate": "advancement.wwizardry.story.shear_snail.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "parent": "story", + "criteria": { + "shear_snail": { + "trigger": "wwizardry:shear_snail" + } + }, + "sends_telemetry_event": false +} diff --git a/data/lang/en_us.fennec b/data/lang/en_us.fennec index ca1e943b..f3059b45 100644 --- a/data/lang/en_us.fennec +++ b/data/lang/en_us.fennec @@ -43,6 +43,10 @@ title = "We Are The Crystal Gems" description = "Mine Rose Quartz Ore to get a familiar gem" } + shear_snail { + title = "Haha! Slug!" + description = "Use a shear to get the shell off of a snail" + } } adventure { forgotten_fields { From 25167f4f352a95dd9edb5f0edc35aac303222b9d Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 12 Sep 2024 19:30:15 -0500 Subject: [PATCH 43/46] Triple stacked snail shells --- .../wwizardry/blockstates/snail_shell.json | 46 ++++++-- .../wwizardry/content/block/SconceBlock.java | 2 - .../wwizardry/content/block/ShellBlock.java | 68 ++++++++++- .../models/block/snail_shell/double.json | 35 ++++++ .../single.json} | 0 .../models/block/snail_shell/triple.json | 48 ++++++++ data/blockstate/snail_shell.fennec | 110 ++++++++++++++++-- 7 files changed, 285 insertions(+), 24 deletions(-) create mode 100644 common/src/main/resources/assets/wwizardry/models/block/snail_shell/double.json rename common/src/main/resources/assets/wwizardry/models/block/{snail_shell.json => snail_shell/single.json} (100%) create mode 100644 common/src/main/resources/assets/wwizardry/models/block/snail_shell/triple.json diff --git a/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json b/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json index a0bc1b01..3395f39a 100644 --- a/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json +++ b/common/src/generated/resources/assets/wwizardry/blockstates/snail_shell.json @@ -1,18 +1,48 @@ { "variants": { - "facing=north": { - "model": "wwizardry:block/snail_shell" + "facing=north,count=1": { + "model": "wwizardry:block/snail_shell/single" }, - "facing=south": { - "model": "wwizardry:block/snail_shell", + "facing=south,count=1": { + "model": "wwizardry:block/snail_shell/single", "y": 180 }, - "facing=east": { - "model": "wwizardry:block/snail_shell", + "facing=east,count=1": { + "model": "wwizardry:block/snail_shell/single", "y": 90 }, - "facing=west": { - "model": "wwizardry:block/snail_shell", + "facing=west,count=1": { + "model": "wwizardry:block/snail_shell/single", + "y": 270 + }, + "facing=north,count=2": { + "model": "wwizardry:block/snail_shell/double" + }, + "facing=south,count=2": { + "model": "wwizardry:block/snail_shell/double", + "y": 180 + }, + "facing=east,count=2": { + "model": "wwizardry:block/snail_shell/double", + "y": 90 + }, + "facing=west,count=2": { + "model": "wwizardry:block/snail_shell/double", + "y": 270 + }, + "facing=north,count=3": { + "model": "wwizardry:block/snail_shell/triple" + }, + "facing=south,count=3": { + "model": "wwizardry:block/snail_shell/triple", + "y": 180 + }, + "facing=east,count=3": { + "model": "wwizardry:block/snail_shell/triple", + "y": 90 + }, + "facing=west,count=3": { + "model": "wwizardry:block/snail_shell/triple", "y": 270 } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java index b85db35f..d05a14aa 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/SconceBlock.java @@ -156,8 +156,6 @@ public ItemInteractionResult useEmpty(BlockState state, Level world, BlockPos po if (!(stack.getItem() instanceof BlockItem item)) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; if (!ITEM_LOOKUP.containsKey(item.getBlock())) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - System.out.println("test 2"); - var block = item.getBlock(); var holder = ITEM_LOOKUP.get(block); var soundGroup = ((Accessor_BlockBehaviour) block).invokeGetSoundType(block.defaultBlockState()); diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/block/ShellBlock.java b/common/src/main/java/dev/sweetberry/wwizardry/content/block/ShellBlock.java index f360ffa2..67a357b8 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/block/ShellBlock.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/block/ShellBlock.java @@ -1,21 +1,52 @@ package dev.sweetberry.wwizardry.content.block; import com.mojang.serialization.MapCodec; +import dev.sweetberry.wwizardry.content.item.ItemInitializer; +import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.BooleanOp; import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class ShellBlock extends HorizontalDirectionalBlock { - public static final VoxelShape NORTH_SOUTH = box(6.5, 0, 6, 9.5, 4, 10); - public static final VoxelShape EAST_WEST = box(6, 0, 6.5, 10, 4, 9.5); + public static final VoxelShape[] NORTH_SOUTH = new VoxelShape[] { + box(6.5, 0, 6, 9.5, 4, 10), + box(4.5, 0, 6, 11.5, 4, 10), + Shapes.join( + box(4.5, 0, 6, 11.5, 4, 10), + box(6.5, 4, 6, 9.5, 8, 10), + BooleanOp.OR + ) + }; + public static final VoxelShape[] EAST_WEST = new VoxelShape[] { + box(6, 0, 6.5, 10, 4, 9.5), + box(6, 0, 4.5, 10, 4, 11.5), + Shapes.join( + box(6, 0, 4.5, 10, 4, 11.5), + box(6, 4, 6.5, 10, 8, 9.5), + BooleanOp.OR + ) + }; + + public static final IntegerProperty COUNT = IntegerProperty.create("count", 1, 3); public static final MapCodec CODEC = BlockBehaviour.simpleCodec(ShellBlock::new); @@ -25,7 +56,30 @@ public ShellBlock(Properties properties) { @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { - builder.add(HorizontalDirectionalBlock.FACING); + builder.add(HorizontalDirectionalBlock.FACING).add(COUNT); + } + + @Override + @NotNull + protected ItemInteractionResult useItemOn(@NotNull ItemStack stack, @NotNull BlockState state, @NotNull Level level, @NotNull BlockPos pos, @NotNull Player player, @NotNull InteractionHand hand, @NotNull BlockHitResult hit) { + if (player.isCrouching()) + return super.useItemOn(stack, state, level, pos, player, hand, hit); + + if (!stack.is(ItemInitializer.SNAIL_SHELL.get())) + return super.useItemOn(stack, state, level, pos, player, hand, hit); + + int count = state.getValue(COUNT); + if (count == 3) + return super.useItemOn(stack, state, level, pos, player, hand, hit); + + level.setBlock(pos, state.setValue(COUNT, count + 1), Block.UPDATE_ALL); + + if (!player.isCreative()) + stack.shrink(1); + + level.playSound(player, pos, SoundInitializer.SNAIL_PLACE.get(), SoundSource.BLOCKS); + + return ItemInteractionResult.SUCCESS; } @Override @@ -36,14 +90,16 @@ protected MapCodec codec() { @Override protected VoxelShape getShape(BlockState state, BlockGetter getter, BlockPos pos, CollisionContext context) { return switch (state.getValue(HorizontalDirectionalBlock.FACING)) { - case NORTH, SOUTH -> NORTH_SOUTH; - default -> EAST_WEST; + case NORTH, SOUTH -> NORTH_SOUTH[state.getValue(COUNT) - 1]; + default -> EAST_WEST[state.getValue(COUNT) - 1]; }; } @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext ctx) { - return defaultBlockState().setValue(HorizontalDirectionalBlock.FACING, ctx.getHorizontalDirection()); + return defaultBlockState() + .setValue(HorizontalDirectionalBlock.FACING, ctx.getHorizontalDirection()) + .setValue(COUNT, 1); } } diff --git a/common/src/main/resources/assets/wwizardry/models/block/snail_shell/double.json b/common/src/main/resources/assets/wwizardry/models/block/snail_shell/double.json new file mode 100644 index 00000000..6ae0a876 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/snail_shell/double.json @@ -0,0 +1,35 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "wwizardry:block/snail_shell", + "particle": "wwizardry:block/snail_shell" + }, + "elements": [ + { + "from": [8.5, 0, 6], + "to": [11.5, 4, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [2, 0, 0]}, + "faces": { + "north": {"uv": [4, 4, 7, 8], "texture": "#0"}, + "east": {"uv": [0, 4, 4, 8], "texture": "#0"}, + "south": {"uv": [11, 4, 14, 8], "texture": "#0"}, + "west": {"uv": [7, 4, 11, 8], "texture": "#0"}, + "up": {"uv": [7, 4, 4, 0], "texture": "#0"}, + "down": {"uv": [10, 0, 7, 4], "texture": "#0"} + } + }, + { + "from": [4.5, 0, 6], + "to": [7.5, 4, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [-2, 0, 0]}, + "faces": { + "north": {"uv": [4, 4, 7, 8], "texture": "#0"}, + "east": {"uv": [0, 4, 4, 8], "texture": "#0"}, + "south": {"uv": [11, 4, 14, 8], "texture": "#0"}, + "west": {"uv": [7, 4, 11, 8], "texture": "#0"}, + "up": {"uv": [7, 4, 4, 0], "texture": "#0"}, + "down": {"uv": [10, 0, 7, 4], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/wwizardry/models/block/snail_shell.json b/common/src/main/resources/assets/wwizardry/models/block/snail_shell/single.json similarity index 100% rename from common/src/main/resources/assets/wwizardry/models/block/snail_shell.json rename to common/src/main/resources/assets/wwizardry/models/block/snail_shell/single.json diff --git a/common/src/main/resources/assets/wwizardry/models/block/snail_shell/triple.json b/common/src/main/resources/assets/wwizardry/models/block/snail_shell/triple.json new file mode 100644 index 00000000..a6111f46 --- /dev/null +++ b/common/src/main/resources/assets/wwizardry/models/block/snail_shell/triple.json @@ -0,0 +1,48 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "wwizardry:block/snail_shell", + "particle": "wwizardry:block/snail_shell" + }, + "elements": [ + { + "from": [8.5, 0, 6], + "to": [11.5, 4, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [2, 0, 0]}, + "faces": { + "north": {"uv": [4, 4, 7, 8], "texture": "#0"}, + "east": {"uv": [0, 4, 4, 8], "texture": "#0"}, + "south": {"uv": [11, 4, 14, 8], "texture": "#0"}, + "west": {"uv": [7, 4, 11, 8], "texture": "#0"}, + "up": {"uv": [7, 4, 4, 0], "texture": "#0"}, + "down": {"uv": [10, 0, 7, 4], "texture": "#0"} + } + }, + { + "from": [4.5, 0, 6], + "to": [7.5, 4, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [-2, 0, 0]}, + "faces": { + "north": {"uv": [4, 4, 7, 8], "texture": "#0"}, + "east": {"uv": [0, 4, 4, 8], "texture": "#0"}, + "south": {"uv": [11, 4, 14, 8], "texture": "#0"}, + "west": {"uv": [7, 4, 11, 8], "texture": "#0"}, + "up": {"uv": [7, 4, 4, 0], "texture": "#0"}, + "down": {"uv": [10, 0, 7, 4], "texture": "#0"} + } + }, + { + "from": [6.5, 4, 6], + "to": [9.5, 8, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, + "faces": { + "north": {"uv": [4, 4, 7, 8], "texture": "#0"}, + "east": {"uv": [0, 4, 4, 8], "texture": "#0"}, + "south": {"uv": [11, 4, 14, 8], "texture": "#0"}, + "west": {"uv": [7, 4, 11, 8], "texture": "#0"}, + "up": {"uv": [7, 4, 4, 0], "texture": "#0"}, + "down": {"uv": [10, 0, 7, 4], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/data/blockstate/snail_shell.fennec b/data/blockstate/snail_shell.fennec index e9516d3f..b050c55a 100644 --- a/data/blockstate/snail_shell.fennec +++ b/data/blockstate/snail_shell.fennec @@ -1,29 +1,123 @@ [ { - when { facing = "north" } - apply = "wwizardry:block/snail_shell" + when { + facing = "north" + count = 1 + } + apply = "wwizardry:block/snail_shell/single" + } + + { + when { + facing = "south" + count = 1 + } + apply { + model = "wwizardry:block/snail_shell/single" + y = 180 + } + } + + { + when { + facing = "east" + count = 1 + } + apply { + model = "wwizardry:block/snail_shell/single" + y = 90 + } + } + + { + when { + facing = "west" + count = 1 + } + apply { + model = "wwizardry:block/snail_shell/single" + y = 270 + } + } + + { + when { + facing = "north" + count = 2 + } + apply = "wwizardry:block/snail_shell/double" + } + + { + when { + facing = "south" + count = 2 + } + apply { + model = "wwizardry:block/snail_shell/double" + y = 180 + } + } + + { + when { + facing = "east" + count = 2 + } + apply { + model = "wwizardry:block/snail_shell/double" + y = 90 + } } { - when { facing = "south" } + when { + facing = "west" + count = 2 + } apply { - model = "wwizardry:block/snail_shell" + model = "wwizardry:block/snail_shell/double" + y = 270 + } + } + + { + when { + facing = "north" + count = 3 + } + apply = "wwizardry:block/snail_shell/triple" + } + + { + when { + facing = "south" + count = 3 + } + apply { + model = "wwizardry:block/snail_shell/triple" y = 180 } } { - when { facing = "east" } + when { + facing = "east" + count = 3 + } apply { - model = "wwizardry:block/snail_shell" + model = "wwizardry:block/snail_shell/triple" y = 90 } } { - when { facing = "west" } + when { + facing = "west" + count = 3 + } apply { - model = "wwizardry:block/snail_shell" + model = "wwizardry:block/snail_shell/triple" y = 270 } } From e3ada2ef655648681ff17fe8f20c984aecdfde78 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 12 Sep 2024 19:53:28 -0500 Subject: [PATCH 44/46] Fungal forest villager type --- .../wwizardry/content/ContentInitializer.java | 3 ++ .../VillagerInitializer.java} | 28 ++++++++++++------ .../mixin/Accessor_VillagerType.java | 17 +++++++++++ .../src/main/resources/accesstransformer.cfg | 1 + .../entity/villager/type/fungal_forest.png | Bin 0 -> 2460 bytes .../main/resources/wwizardry.accesswidener | 2 ++ .../src/main/resources/wwizardry.mixins.json | 3 +- .../wwizardry/fabric/FabricInitializer.java | 11 +++---- .../wwizardry/neoforge/NeoForgeEvents.java | 8 ++--- .../neoforge/NeoForgeInitializer.java | 2 ++ 10 files changed, 53 insertions(+), 22 deletions(-) rename common/src/main/java/dev/sweetberry/wwizardry/content/{trades/TradeInitializer.java => villager/VillagerInitializer.java} (82%) create mode 100644 common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_VillagerType.java create mode 100644 common/src/main/resources/assets/wwizardry/textures/entity/villager/type/fungal_forest.png diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java index c7307a09..e489bfa0 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/ContentInitializer.java @@ -12,10 +12,12 @@ import dev.sweetberry.wwizardry.content.net.NetworkingInitializer; import dev.sweetberry.wwizardry.content.recipe.RecipeInitializer; import dev.sweetberry.wwizardry.content.sounds.SoundInitializer; +import dev.sweetberry.wwizardry.content.villager.VillagerInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import net.minecraft.advancements.CriterionTrigger; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.npc.VillagerType; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.crafting.RecipeSerializer; @@ -49,5 +51,6 @@ public static void listenToAll(RegistryCallback listener) { SoundInitializer.SOUNDS.listen((RegistryCallback) listener); EntityInitializer.ENTITIES.listen((RegistryCallback>) listener); MapInitializer.MAP_DECORATION_TYPE.listen((RegistryCallback) listener); + VillagerInitializer.VILLAGER_TYPES.listen((RegistryCallback) listener); } } diff --git a/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java b/common/src/main/java/dev/sweetberry/wwizardry/content/villager/VillagerInitializer.java similarity index 82% rename from common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java rename to common/src/main/java/dev/sweetberry/wwizardry/content/villager/VillagerInitializer.java index fa6c3f50..49da000e 100644 --- a/common/src/main/java/dev/sweetberry/wwizardry/content/trades/TradeInitializer.java +++ b/common/src/main/java/dev/sweetberry/wwizardry/content/villager/VillagerInitializer.java @@ -1,22 +1,24 @@ -package dev.sweetberry.wwizardry.content.trades; +package dev.sweetberry.wwizardry.content.villager; import dev.sweetberry.wwizardry.WanderingWizardry; import dev.sweetberry.wwizardry.api.Lazy; +import dev.sweetberry.wwizardry.api.registry.RegistryContext; import dev.sweetberry.wwizardry.content.datagen.DatagenInitializer; import dev.sweetberry.wwizardry.content.item.ItemInitializer; import dev.sweetberry.wwizardry.content.map.MapInitializer; +import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; +import dev.sweetberry.wwizardry.mixin.Accessor_VillagerType; import net.minecraft.core.BlockPos; -import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; -import net.minecraft.tags.StructureTags; import net.minecraft.tags.TagKey; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.npc.VillagerType; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -31,12 +33,12 @@ import java.util.Optional; import java.util.function.Supplier; -public class TradeInitializer { +public class VillagerInitializer { + public static final RegistryContext VILLAGER_TYPES = new RegistryContext<>(BuiltInRegistries.VILLAGER_TYPE); + + public static final Lazy FUNGAL_FOREST_VILLAGER = registerType("fungal_forest", () -> new VillagerType("fungal_forest")); + public static final TagKey ON_LAB_EXPLORER_MAPS = TagKey.create(Registries.STRUCTURE, WanderingWizardry.id("on_lab_explorer_maps")); - void a() { - // cost, destination, displayName, destinationType, maxUsage, villagerXp - new VillagerTrades.TreasureMapForEmeralds(13, ON_LAB_EXPLORER_MAPS, "filled_map.wwizardry.sculk_lab", MapInitializer.holder(MapInitializer.SCULK_LAB), 12, 5); - } public static final VillagerTrades.ItemListing[][] WANDERING_TRADER_OFFERS = new VillagerTrades.ItemListing[][] { { @@ -73,6 +75,14 @@ void a() { } }; + public static Lazy registerType(String id, Supplier type) { + return VILLAGER_TYPES.register(WanderingWizardry.id(id), type); + } + + public static void addToBiomes() { + Accessor_VillagerType.getBY_BIOME().put(WorldgenInitializer.FUNGAL_FOREST, FUNGAL_FOREST_VILLAGER.get()); + } + public static class TreasureMapForEmeralds implements VillagerTrades.ItemListing { private final int emeraldCost; private final TagKey destination; diff --git a/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_VillagerType.java b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_VillagerType.java new file mode 100644 index 00000000..40f89eb3 --- /dev/null +++ b/common/src/main/java/dev/sweetberry/wwizardry/mixin/Accessor_VillagerType.java @@ -0,0 +1,17 @@ +package dev.sweetberry.wwizardry.mixin; + +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.level.biome.Biome; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(VillagerType.class) +public interface Accessor_VillagerType { + @Accessor + static Map, VillagerType> getBY_BIOME() { + throw new IllegalCallerException("How?"); + } +} diff --git a/common/src/main/resources/accesstransformer.cfg b/common/src/main/resources/accesstransformer.cfg index 817045d6..041f6fcd 100644 --- a/common/src/main/resources/accesstransformer.cfg +++ b/common/src/main/resources/accesstransformer.cfg @@ -13,3 +13,4 @@ public net.minecraft.world.level.block.PressurePlateBlock (Lnet/minecraft/ public net.minecraft.world.level.block.DoorBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V public net.minecraft.world.level.block.TrapDoorBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V public net.minecraft.world.level.block.SaplingBlock (Lnet/minecraft/world/level/block/grower/TreeGrower;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V +public net.minecraft.world.entity.npc.VillagerType (Ljava/lang/String;)V diff --git a/common/src/main/resources/assets/wwizardry/textures/entity/villager/type/fungal_forest.png b/common/src/main/resources/assets/wwizardry/textures/entity/villager/type/fungal_forest.png new file mode 100644 index 0000000000000000000000000000000000000000..ce71cf99b764e970a73c587b1ba415e1fd2a6cbc GIT binary patch literal 2460 zcmV;N31jw&P)Px;JV``BRCt`#n_p;LSslkeGnvf2HUAx%F;qx*n*V>*N26` zLS+$OELBwSLC}5h!7766gUGsy_#iB-EaR-0E+l|7r!Rp$p9~29?XTYt?ev9xeYR7-md5Gcma%^NMQ7KGh`V6nAvSaImzfyCO8JW zLB|VV`gTPKlDH@*d0eo`jCr_Dde`%}-3EO7XOq4?Um;>3*og%5Gd|@)g6xnV8Y{~W<~A5V)`KV~DL5|f`X-}8834N4 z#=MH$aP9|d8y=rJ2@CUEjGahu|DK>w1jF(u{%?yy5%4!Dl{Pszp1__@v$o+;oc%J( z%Xe`%D*NbeBq-YgFX1!(nQrn+E~U~YbI0jO|oC!`65rKL#n67Ma35Nea-p9O6fz?P_ZbL!5xw!@b2 zf-~O;tK}kF!V8G2^K1z(m|y;?&s)N4zYT!!;=F2k>gYgV?3&>f)8o&jGF@gmG?zYq zln~mk0XpQunyJ5pv<2$eXF48tm}$HFtU|idG9J(~!~gvFhYi=;^ey1J@xFGaK$4b0 zlhr~tSfZ%_48shBU>L1WykC&J4}=0ERT~F9%_;9_~szpymfu+hAm@x^#KU=*?o7Ca$Qd zPhT#F=QyD{wU1$%q%DiJQgocI5>a1=l6*5r;mBxC6^3EdB1SdxQ|*8%gq3^=BV#cz zoQupWBn>mH-m;vwthzdtyk4(EF1jx_$mrx%Uy=`zQG}sC%YJG|o3_k4L#NsRARw*tEO$Ll{Z)k0Uz#9X+X>p$$kI~o z5JLixBvdj|2zs4*45W~B^7`49WOP-I8ml5Mk)iLfZuy@TDR;e$yI!tqQ0wHg{tI9X zR!HkaB;h#X5~_gIax>^;W$sXQic}jB=NqJc{JXcw9H?ba?PV`0tIu)e*KfQL+C7y} z6nS-L)wVdbS8agj2rvk#xGDfuII0kIFHuEO60w&np=9PjI(SywWSw4aMnElljtCu* zI5pRy&aGShxMxYYkpToq+4g2+gWPR<*(0uxzQD9)vQ{dFG(s=y2Cvx>fw28(=G#9j z5~ojJ@P!ck=9jk{cD(Ve&m*b^(5${4gb+OKAFJytZGuWvwG*lqMEM2!s}E}0GWYjC z?5O}!lGInfb_uAE``&kd&X0cb4TKN~As84K2*?AWXCRWCO0p68I3Y!)v>SPkJ4NE? z(G$LDnxWm5WwlNvtp-P1{YUnEQBl5tB)``QlGw>^OkDTla&p&3rhGjmyr2?}XMJn-P+U#!iFk3Ljs%&uY2IO1>13meyas z4f?Z#p>`cRN{jbr2VrM9$X!E!pU)hc0O~JA^cX?D5_QCCK!0{HuBokvy786Y2ddu- zO01TP3{>w9qqJa08nB*Nv6>>*k2*n3051-(aDz5qp;EbQa zqIQ*jW8%91(QwUhf8uO_{?Wwog<3);WA-#0Ygs0%w zMa>c5ORxRHSNq#ygOR%*0^#E$1u5%Vx$S920xDz|Up!C$!hMEw2ZA-k^@obEKB{Vj ze3PW+#?L@$Ip`Qna_$P(?oju-lLC|dOH&PIe)&Tm3b9IYXA<4_nP$WD@;94dF5#t-p*G?ooN7P*(%d}F|nbPaz9lRVX zwMexMYPr)8yal#|N0*rnzQ32MtQ#~*MBjZmR>Bq==teS1pzTI7ZJBhLX|}hw>lz#F znvt<8S=wASRHs^9m3+r*KzENB`u9bg@BHZDV<4Pm)puV)-SvEFd2d&~M@T{?_EyPD zt1ih(^k)Y{A17K>gBK;Zon&a+f!e)5Ci=!j_Xt<=CDyd)O8VMrK2Bn{Y3t{Wq-x02 zXsXc%hN`;D>n9!R1w|(kmk2aK&#XqJq;zeN#8i#>q@gYt(uu@{#Zl>LS=QS+SvW~( zJwLCb5kXILlRH%ibsC_%#VT4&lEht%bRq%)=vP_tH!3gC3ZX6G)yD}Ps0DQyA@x!d z;`4v4?y8J6y3BM(YC>d2XtxVhgR7|TbUO)=0+5Tnj2+70yfgc5;xcx}lGzDTm$3mY zb!7s0v3bE)OfS@~8^=|zHZB}ZE^>G8*1jkBKjL=+g&Sj1Pyhe`4rN$LW=%~1DgXcg a2mk;800000(o>TF0000 (Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/IronBarsBlock (Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/TransparentBlock (Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V @@ -14,6 +15,7 @@ accessible method net/minecraft/world/level/block/PressurePlateBlock (Lne accessible method net/minecraft/world/level/block/DoorBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/TrapDoorBlock (Lnet/minecraft/world/level/block/state/properties/BlockSetType;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V accessible method net/minecraft/world/level/block/SaplingBlock (Lnet/minecraft/world/level/block/grower/TreeGrower;Lnet/minecraft/world/level/block/state/BlockBehaviour$Properties;)V +accessible method net/minecraft/world/entity/npc/VillagerType (Ljava/lang/String;)V accessible method net/minecraft/world/level/block/entity/BlockEntity saveAdditional (Lnet/minecraft/nbt/CompoundTag;Lnet/minecraft/core/HolderLookup$Provider;)V accessible method net/minecraft/world/level/block/entity/BlockEntity loadAdditional (Lnet/minecraft/nbt/CompoundTag;Lnet/minecraft/core/HolderLookup$Provider;)V diff --git a/common/src/main/resources/wwizardry.mixins.json b/common/src/main/resources/wwizardry.mixins.json index 2a8e23a4..ef7243cc 100644 --- a/common/src/main/resources/wwizardry.mixins.json +++ b/common/src/main/resources/wwizardry.mixins.json @@ -6,14 +6,15 @@ "mixins": [ "Accessor_AxeItem", "Accessor_BeaconBlockEntity", + "Accessor_BlockBehaviour", "Accessor_BlockEntityType", "Accessor_BlockSetType", "Accessor_PlayerRespawnLogic", "Accessor_PotionBrewing", "Accessor_ServerPlayer", "Accessor_StructureProcessor", + "Accessor_VillagerType", "Accessor_WoodType", - "Accessor_BlockBehaviour", "Mixin_BeaconBlockEntity", "Mixin_Boat", "Mixin_ChestBoat", diff --git a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java index 3b1c93f4..4ce1a9c2 100644 --- a/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java +++ b/fabric/src/main/java/dev/sweetberry/wwizardry/fabric/FabricInitializer.java @@ -1,15 +1,12 @@ package dev.sweetberry.wwizardry.fabric; import dev.sweetberry.wwizardry.WanderingWizardry; -import dev.sweetberry.wwizardry.api.component.Component; import dev.sweetberry.wwizardry.api.net.PacketRegistry; -import dev.sweetberry.wwizardry.client.content.events.ClientEvents; import dev.sweetberry.wwizardry.content.ContentInitializer; import dev.sweetberry.wwizardry.content.block.BlockInitializer; import dev.sweetberry.wwizardry.content.component.ComponentInitializer; import dev.sweetberry.wwizardry.content.events.UseBlockHandler; -import dev.sweetberry.wwizardry.content.net.packet.ComponentSyncPacket; -import dev.sweetberry.wwizardry.content.trades.TradeInitializer; +import dev.sweetberry.wwizardry.content.villager.VillagerInitializer; import dev.sweetberry.wwizardry.content.world.WorldgenInitializer; import dev.sweetberry.wwizardry.fabric.component.FabricComponents; import net.fabricmc.api.ModInitializer; @@ -17,13 +14,11 @@ import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; import net.fabricmc.fabric.api.biome.v1.ModificationPhase; import net.fabricmc.fabric.api.event.player.UseBlockCallback; -import net.fabricmc.fabric.api.networking.v1.EntityTrackingEvents; import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper; import net.fabricmc.fabric.api.registry.OxidizableBlocksRegistry; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.core.Registry; import java.util.List; @@ -76,12 +71,14 @@ public void onInitialize() { OxidizableBlocksRegistry.registerWaxableBlockPair(waxable.getFirst().get(), waxable.getSecond().get()); for (var waxable : BlockInitializer.WEATHERABLES) OxidizableBlocksRegistry.registerOxidizableBlockPair(waxable.getFirst().get(), waxable.getSecond().get()); + + VillagerInitializer.addToBiomes(); } private static void addWanderingTradesFor(int level) { TradeOfferHelper.registerWanderingTraderOffers( level, - offers -> offers.addAll(List.of(TradeInitializer.WANDERING_TRADER_OFFERS[level-1])) + offers -> offers.addAll(List.of(VillagerInitializer.WANDERING_TRADER_OFFERS[level-1])) ); } } diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java index 508adac8..4889557a 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeEvents.java @@ -4,14 +4,12 @@ import dev.sweetberry.wwizardry.client.WanderingWizardryClient; import dev.sweetberry.wwizardry.client.content.events.ItemTooltipHandler; import dev.sweetberry.wwizardry.content.events.UseBlockHandler; -import dev.sweetberry.wwizardry.content.trades.TradeInitializer; -import net.minecraft.client.renderer.entity.BoatRenderer; +import dev.sweetberry.wwizardry.content.villager.VillagerInitializer; import net.minecraft.network.chat.FormattedText; import net.minecraft.world.InteractionResult; import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.block.TransparentBlock; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.neoforge.client.event.ClientTickEvent; import net.neoforged.neoforge.client.event.RenderTooltipEvent; @@ -28,8 +26,8 @@ public static void init() { @SubscribeEvent public static void onWanderingTrades(WandererTradesEvent ev) { - ev.getGenericTrades().addAll(Arrays.stream(TradeInitializer.WANDERING_TRADER_OFFERS[0]).toList()); - ev.getRareTrades().addAll(Arrays.stream(TradeInitializer.WANDERING_TRADER_OFFERS[1]).toList()); + ev.getGenericTrades().addAll(Arrays.stream(VillagerInitializer.WANDERING_TRADER_OFFERS[0]).toList()); + ev.getRareTrades().addAll(Arrays.stream(VillagerInitializer.WANDERING_TRADER_OFFERS[1]).toList()); } @SubscribeEvent diff --git a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java index 6838e326..861efbbb 100644 --- a/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java +++ b/neoforge/src/main/java/dev/sweetberry/wwizardry/neoforge/NeoForgeInitializer.java @@ -8,6 +8,7 @@ import dev.sweetberry.wwizardry.content.ContentInitializer; import dev.sweetberry.wwizardry.content.block.BlockInitializer; import dev.sweetberry.wwizardry.content.entity.EntityInitializer; +import dev.sweetberry.wwizardry.content.villager.VillagerInitializer; import dev.sweetberry.wwizardry.neoforge.component.NeoForgeComponents; import dev.sweetberry.wwizardry.neoforge.networking.NeoForgeNetworking; import net.minecraft.client.renderer.item.ItemProperties; @@ -72,6 +73,7 @@ public void registerToRegistries(RegisterEvent event) { })); BlockInitializer.registerSecondaryBlockFunctions(); + VillagerInitializer.addToBiomes(); } @SubscribeEvent From f1174034e7706bc04cb5715757fb69e5c8a53960 Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Thu, 12 Sep 2024 20:08:00 -0500 Subject: [PATCH 45/46] Bump version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ee87e3df..208cdb1d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.daemon=false # Mod Properties version = 1.1.0 -classification = alpha.3 +classification = alpha.4 maven_group = dev.sweetberry archives_base_name = wwizardry From a97870a595582cb02cab5a17586d6924e3223c0d Mon Sep 17 00:00:00 2001 From: Oliver-makes-code Date: Fri, 20 Sep 2024 23:02:15 -0500 Subject: [PATCH 46/46] Fix amethyst glass recipe and snail shell loot table, bump version for release --- .../loot_table/blocks/snail_shell.json | 44 ++++++++++++++++--- .../data/wwizardry/recipe/amethyst_glass.json | 2 +- data/basic_block_loot.fennec | 2 - data/loot/blocks/snail_shell.fennec | 33 ++++++++++++++ data/recipes/amethyst_glass.fennec | 2 +- gradle.properties | 2 +- 6 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 data/loot/blocks/snail_shell.fennec diff --git a/common/src/generated/resources/data/wwizardry/loot_table/blocks/snail_shell.json b/common/src/generated/resources/data/wwizardry/loot_table/blocks/snail_shell.json index 98a10058..70f9ddeb 100644 --- a/common/src/generated/resources/data/wwizardry/loot_table/blocks/snail_shell.json +++ b/common/src/generated/resources/data/wwizardry/loot_table/blocks/snail_shell.json @@ -2,18 +2,48 @@ "type": "block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0, "entries": [ { "type": "item", + "functions": [ + { + "add": false, + "conditions": [ + { + "condition": "block_state_property", + "block": "wwizardry:snail_shell", + "properties": { + "count": "2" + } + } + ], + "count": 2, + "function": "set_count" + }, + { + "add": false, + "conditions": [ + { + "condition": "block_state_property", + "block": "wwizardry:snail_shell", + "properties": { + "count": "3" + } + } + ], + "count": 3, + "function": "set_count" + }, + { + "function": "explosion_decay" + } + ], "name": "wwizardry:snail_shell" } ], - "conditions": [ - { - "condition": "survives_explosion" - } - ] + "rolls": 1 } - ] + ], + "random_sequence": "wwizardry:blocks/snail_shell" } \ No newline at end of file diff --git a/common/src/generated/resources/data/wwizardry/recipe/amethyst_glass.json b/common/src/generated/resources/data/wwizardry/recipe/amethyst_glass.json index 9748e773..820a584c 100644 --- a/common/src/generated/resources/data/wwizardry/recipe/amethyst_glass.json +++ b/common/src/generated/resources/data/wwizardry/recipe/amethyst_glass.json @@ -4,7 +4,7 @@ "cooking_time": 200, "experience": 1, "ingredient": { - "item": "amethyst" + "item": "amethyst_shard" }, "result": { "id": "wwizardry:amethyst_glass" diff --git a/data/basic_block_loot.fennec b/data/basic_block_loot.fennec index 8ec70bd3..7760d264 100644 --- a/data/basic_block_loot.fennec +++ b/data/basic_block_loot.fennec @@ -29,8 +29,6 @@ "waxed_weathered_copper_lens" "waxed_oxidized_copper_lens" - "snail_shell" - # Basalt Bricks "basalt_bricks" "basalt_brick_stairs" diff --git a/data/loot/blocks/snail_shell.fennec b/data/loot/blocks/snail_shell.fennec new file mode 100644 index 00000000..59dbd138 --- /dev/null +++ b/data/loot/blocks/snail_shell.fennec @@ -0,0 +1,33 @@ +type = "block" +pools [{ + bonus_rolls = 0.0 + entries [{ + type = "item" + functions [ + { + add = false + conditions [{ + condition = "block_state_property" + block = "wwizardry:snail_shell" + properties { count = "2" } + }] + count = 2.0 + function = "set_count" + } + { + add = false + conditions [{ + condition = "block_state_property" + block = "wwizardry:snail_shell" + properties { count = "3" } + }] + count = 3.0 + function = "set_count" + } + { function = "explosion_decay" } + ] + name = "wwizardry:snail_shell" + }] + rolls = 1.0 +}] +random_sequence = "wwizardry:blocks/snail_shell" diff --git a/data/recipes/amethyst_glass.fennec b/data/recipes/amethyst_glass.fennec index f4c0fd6e..07836441 100644 --- a/data/recipes/amethyst_glass.fennec +++ b/data/recipes/amethyst_glass.fennec @@ -6,7 +6,7 @@ cooking_time = 200 experience = 1 ingredient { - item = "amethyst" + item = "amethyst_shard" } result { diff --git a/gradle.properties b/gradle.properties index 208cdb1d..890d8e7d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.daemon=false # Mod Properties version = 1.1.0 -classification = alpha.4 +classification = maven_group = dev.sweetberry archives_base_name = wwizardry