diff --git a/src/main/generated/.cache/8ce55c2d46c78681d7eebf7cad72e9c2de67a045 b/src/main/generated/.cache/8ce55c2d46c78681d7eebf7cad72e9c2de67a045 new file mode 100644 index 0000000..c480065 --- /dev/null +++ b/src/main/generated/.cache/8ce55c2d46c78681d7eebf7cad72e9c2de67a045 @@ -0,0 +1,40 @@ +// 1.21 2024-07-20T05:31:11.5795046 MITEequilibrium/Model Definitions +e3c5f07b3b54f7f6eea5fa00ed1823c80c519c14 assets\miteequilibrium\models\item\mithril_ore.json +dccf3bc904ca2659a45b1924b2b5dd8188a0ef27 assets\miteequilibrium\blockstates\gold_block.json +6aa639f29ea4e247aa818822152bded3ec0a0ef4 assets\miteequilibrium\blockstates\mithril_block.json +a3aa407225058101f487dc2d69a2323cff577294 assets\miteequilibrium\models\block\silver_ore.json +6deb1bf7820e58ac89e2411f78d6925861ce3cf5 assets\miteequilibrium\models\item\silver_nugget.json +46bfd511f5c0f2f1afc5d77cc9dbd0144377d522 assets\miteequilibrium\models\item\mithril_nugget.json +15c22b2ffa7c2dda180ffcadd87e26e7542db7c5 assets\miteequilibrium\blockstates\silver_ore.json +c6d473a5f7fb2189afdb6f6040f9449d6355e4c9 assets\miteequilibrium\models\block\copper_block.json +904f5b6be17869c8e9b6bc8b25fd229e15163b7e assets\miteequilibrium\models\block\gold_block.json +8a2002cdb9a1c1088eac1973807e01b3db6a8fc7 assets\miteequilibrium\blockstates\gold_ore.json +37a416ce5d40380df1321db7e7272faa4858973c assets\miteequilibrium\models\item\copper_nugget.json +cabffc3950e51bb500254bcd2a47053341050615 assets\miteequilibrium\blockstates\copper_block.json +88b2592c9e57bdfd9ff42721aee23f1879810fcc assets\miteequilibrium\models\block\gold_ore.json +1c76eeb8e434a4959a45a985f71e33bee98cef47 assets\miteequilibrium\blockstates\ancient_metal_block.json +3f58a7975e017e6f5e0aefeb9d6a28b58502a0d5 assets\miteequilibrium\models\item\ancient_metal_block.json +acd36f849f7545835bcd7c024a9c9c54e8d9e1c0 assets\miteequilibrium\models\item\gold_ore.json +d7f20ad7d635c2505ea669d0de4c217d2ea182ef assets\miteequilibrium\models\block\mithril_ore.json +c877c93eb6dc6b7db3a9f39f1d1a04de0e86dff7 assets\miteequilibrium\models\item\copper_ore.json +dd63bef5ea7f82d06c0c162106a2c5a9a1efee37 assets\miteequilibrium\blockstates\mithril_ore.json +d23ecf679ccfafb2cf9b62c3aec46729ba685fa0 assets\miteequilibrium\models\item\ancient_metal_nugget.json +ddd198fb1a94b797709f8a13de207a162ca83920 assets\miteequilibrium\blockstates\silver_block.json +3a0550b68023aeb8d1f2e05c3bc8b1683a5ec457 assets\miteequilibrium\models\block\copper_ore.json +daac16a0ec15119c4965bf7b42998bf7c30f46fc assets\miteequilibrium\blockstates\adamantium_ore.json +17f4433121884390a787d54ad0545574cd77e44e assets\miteequilibrium\models\item\adamantium_ore.json +ebbf1665c7578e664e339d1379497b8e68ceb9f9 assets\miteequilibrium\blockstates\adamantium_block.json +9ec74d6fe87cfb75b15b03a4686b020726e9a03a assets\miteequilibrium\models\item\adamantium_block.json +47b83ac7ffdcd4f349e7b9d2c9ecbaa7296cd2c1 assets\miteequilibrium\models\block\adamantium_ore.json +7167477d055461b8c0d0dd1ddff296c3e8739c1b assets\miteequilibrium\models\item\gold_nugget.json +71230db95fb36a59ca886b42a8578a7e5289f27e assets\miteequilibrium\models\block\mithril_block.json +9a8cfa18c20d09c688f214eb5e9fe03d14db7761 assets\miteequilibrium\models\item\gold_block.json +9c2092f86b72ce8167788a7d59bb2f6915f0caf6 assets\miteequilibrium\models\block\ancient_metal_block.json +f34fa81117489a9a66ea93f728f5f2bcbec9b953 assets\miteequilibrium\models\block\silver_block.json +e5733a090f394c136335c8aa0dc7e5083ef31458 assets\miteequilibrium\models\item\silver_ore.json +b834efa7e8d540313d35956439827b44a4cee03e assets\miteequilibrium\models\block\adamantium_block.json +72ccce82992032390968c1c5fd7bb5aba9f4b253 assets\miteequilibrium\models\item\silver_block.json +a4b0acfc4293fcf495f36a76bdda910db3f426ee assets\miteequilibrium\models\item\mithril_block.json +d918fe036accbdb8c8dad219ff5b3f769ac1b7ab assets\miteequilibrium\models\item\adamantium_nugget.json +5af9fa21466ac378f1f8783fc5934cb0e6c77eca assets\miteequilibrium\blockstates\copper_ore.json +8dc735515e111bfc53d1a0a639d4fb027e58abfe assets\miteequilibrium\models\item\copper_block.json diff --git a/src/main/java/com/equilibrium/MITEequilibrium.java b/src/main/java/com/equilibrium/MITEequilibrium.java index c2b4e71..b6d474d 100644 --- a/src/main/java/com/equilibrium/MITEequilibrium.java +++ b/src/main/java/com/equilibrium/MITEequilibrium.java @@ -2,21 +2,20 @@ import com.equilibrium.block.ModBlocks; -import com.equilibrium.entity.ModEntities; -import com.equilibrium.entity.mob.TestZombieEntity; -import com.equilibrium.item.Ingots; +import com.equilibrium.event.BreakBlockEvent; +import com.equilibrium.item.Metal; import com.equilibrium.item.ModItemGroup; import com.equilibrium.item.ModItems; import com.equilibrium.item.Tools; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; -import net.minecraft.util.Identifier; +import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static com.equilibrium.entity.ModEntities.TEST_ZOMBIE; import static com.equilibrium.entity.ModEntities.registerModEntities; -import static com.equilibrium.worldgen.ModOreGenerator.registerModOre; +import static com.equilibrium.util.LootTableModifier.modifierLootTables; + +import static com.equilibrium.worldgen.ModPlacementGenerator.registerModOre; public class MITEequilibrium implements ModInitializer { @@ -45,20 +44,23 @@ public void onInitialize() { //添加工具物品 Tools.registerModItemTools(); //添加锭 - Ingots.registerModItemIngots(); + Metal.registerModItemIngots(); + //添加金属颗粒 + Metal.registerModItemNuggets(); //注册矿物 registerModOre(); - - + //注册实体 registerModEntities(); + //修改战利品表 + modifierLootTables(); - - + //注册事件 + PlayerBlockBreakEvents.AFTER.register(new BreakBlockEvent()); LOGGER.info("Hello Fabric world!"); } diff --git a/src/main/java/com/equilibrium/MITEequilibriumClient.java b/src/main/java/com/equilibrium/MITEequilibriumClient.java index 92f9ac6..7335801 100644 --- a/src/main/java/com/equilibrium/MITEequilibriumClient.java +++ b/src/main/java/com/equilibrium/MITEequilibriumClient.java @@ -2,7 +2,7 @@ import com.equilibrium.client.render.entity.InvisibleStalker; -import com.equilibrium.client.render.entity.ZombieEntityRendererTransparent; +import com.equilibrium.client.render.entity.TestZombie; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; @@ -16,7 +16,7 @@ public void onInitializeClient() { //将注册的实体和模型结合起来 - EntityRendererRegistry.register(TEST_ZOMBIE, ZombieEntityRendererTransparent::new); + EntityRendererRegistry.register(TEST_ZOMBIE, TestZombie::new); EntityRendererRegistry.register(INVISIBLE_STALKER, InvisibleStalker::new); diff --git a/src/main/java/com/equilibrium/MITEequilibriumDataGenerator.java b/src/main/java/com/equilibrium/MITEequilibriumDataGenerator.java index 91e10a0..7a18443 100644 --- a/src/main/java/com/equilibrium/MITEequilibriumDataGenerator.java +++ b/src/main/java/com/equilibrium/MITEequilibriumDataGenerator.java @@ -1,5 +1,6 @@ package com.equilibrium; +import com.equilibrium.gen.ModModelProvider; import com.equilibrium.gen.ModRecipeGenerator; import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; @@ -10,7 +11,8 @@ public class MITEequilibriumDataGenerator implements DataGeneratorEntrypoint { @Override public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator){ FabricDataGenerator.Pack pack=fabricDataGenerator.createPack(); - pack.addProvider(ModRecipeGenerator::new); +// pack.addProvider(ModRecipeGenerator::new); + pack.addProvider(ModModelProvider::new); } } diff --git a/src/main/java/com/equilibrium/block/ModBlocks.java b/src/main/java/com/equilibrium/block/ModBlocks.java index f645058..2e87fd6 100644 --- a/src/main/java/com/equilibrium/block/ModBlocks.java +++ b/src/main/java/com/equilibrium/block/ModBlocks.java @@ -15,45 +15,95 @@ public class ModBlocks { public static final Block EXAMPLE_BLOCK = new Block(Block.Settings.create().strength(4.0f)); - //strength中第一个为硬度,第二个为爆炸抗性 - public static final Block UNDERWORLD_PORTAL = - new UnderworldPortalBlock( - AbstractBlock.Settings.create() - .noCollision() - .ticksRandomly() - .strength(-1.0F) - .sounds(BlockSoundGroup.GLASS) - .luminance(state -> 11) - .pistonBehavior(PistonBehavior.BLOCK) - ); - public static final Block OVERWORLD_PORTAL = - new UnderworldPortalBlock( - AbstractBlock.Settings.create() - .noCollision() - .ticksRandomly() - .strength(-1.0F) - .sounds(BlockSoundGroup.GLASS) - .luminance(state -> 11) - .pistonBehavior(PistonBehavior.BLOCK) - ); + public static final Block ADAMANTIUM_ORE = new Block(Block.Settings.create().strength(4.0f)); + public static final Block ADAMANTIUM_BLOCK = new Block(Block.Settings.create().strength(4.0f)); + public static final Block ANCIENT_METAL_BLOCK = new Block(Block.Settings.create().strength(4.0f)); + public static final Block COPPER_ORE = new Block(Block.Settings.create().strength(4.0f)); + public static final Block COPPER_BLOCK = new Block(Block.Settings.create().strength(4.0f)); + public static final Block MITHRIL_ORE = new Block(Block.Settings.create().strength(4.0f)); + public static final Block MITHRIL_BLOCK = new Block(Block.Settings.create().strength(4.0f)); + public static final Block SILVER_ORE = new Block(Block.Settings.create().strength(4.0f)); + public static final Block SILVER_BLOCK = new Block(Block.Settings.create().strength(4.0f)); + public static final Block GOLD_ORE = new Block(Block.Settings.create().strength(4.0f)); + public static final Block GOLD_BLOCK = new Block(Block.Settings.create().strength(4.0f)); + //strength中第一个为硬度,第二个为爆炸抗性 +// public static final Block UNDERWORLD_PORTAL = +// new UnderworldPortalBlock( +// AbstractBlock.Settings.create() +// .noCollision() +// .ticksRandomly() +// .strength(-1.0F) +// .sounds(BlockSoundGroup.GLASS) +// .luminance(state -> 11) +// .pistonBehavior(PistonBehavior.BLOCK) +// ); +// public static final Block OVERWORLD_PORTAL = +// new UnderworldPortalBlock( +// AbstractBlock.Settings.create() +// .noCollision() +// .ticksRandomly() +// .strength(-1.0F) +// .sounds(BlockSoundGroup.GLASS) +// .luminance(state -> 11) +// .pistonBehavior(PistonBehavior.BLOCK) +// ); public static void registerModBlocks(){ Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "example_block"), EXAMPLE_BLOCK); Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "example_block"), new BlockItem(EXAMPLE_BLOCK, new Item.Settings())); - Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "underworld_portalblock"), UNDERWORLD_PORTAL); - Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "underworld_portalblock"), new BlockItem(UNDERWORLD_PORTAL, new Item.Settings())); + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "adamantium_ore"), ADAMANTIUM_ORE); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "adamantium_ore"), new BlockItem(ADAMANTIUM_ORE, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "adamantium_block"), ADAMANTIUM_BLOCK); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "adamantium_block"), new BlockItem(ADAMANTIUM_BLOCK, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "ancient_metal_block"), ANCIENT_METAL_BLOCK); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "ancient_metal_block"), new BlockItem(ANCIENT_METAL_BLOCK, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "copper_ore"), COPPER_ORE); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "copper_ore"), new BlockItem(COPPER_ORE, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "copper_block"), COPPER_BLOCK); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "copper_block"), new BlockItem(COPPER_BLOCK, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "mithril_ore"), MITHRIL_ORE); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "mithril_ore"), new BlockItem(MITHRIL_ORE, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "mithril_block"), MITHRIL_BLOCK); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "mithril_block"), new BlockItem(MITHRIL_BLOCK, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "silver_ore"), SILVER_ORE); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "silver_ore"), new BlockItem(SILVER_ORE, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "silver_block"), SILVER_BLOCK); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "silver_block"), new BlockItem(SILVER_BLOCK, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "gold_ore"), GOLD_ORE); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "gold_ore"), new BlockItem(GOLD_ORE, new Item.Settings())); + + Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "gold_block"), GOLD_BLOCK); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "gold_block"), new BlockItem(GOLD_BLOCK, new Item.Settings())); + + + + + + - Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "overworld_portalblock"), OVERWORLD_PORTAL); - Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "overworld_portalblock"), new BlockItem(OVERWORLD_PORTAL, new Item.Settings())); +// Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "underworld_portalblock"), UNDERWORLD_PORTAL); +// Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "underworld_portalblock"), new BlockItem(UNDERWORLD_PORTAL, new Item.Settings())); +// +// Registry.register(Registries.BLOCK, Identifier.of("miteequilibrium", "overworld_portalblock"), OVERWORLD_PORTAL); +// Registry.register(Registries.ITEM, Identifier.of("miteequilibrium", "overworld_portalblock"), new BlockItem(OVERWORLD_PORTAL, new Item.Settings())); } diff --git a/src/main/java/com/equilibrium/client/render/entity/AbstractZombieEntityRenderer.java b/src/main/java/com/equilibrium/client/render/entity/AbstractZombieEntityRenderer.java new file mode 100644 index 0000000..9f99384 --- /dev/null +++ b/src/main/java/com/equilibrium/client/render/entity/AbstractZombieEntityRenderer.java @@ -0,0 +1,22 @@ +package com.equilibrium.client.render.entity; + +import com.equilibrium.client.render.entity.model.TransparentZombieEntityModelAbstractZombieModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRendererFactory; +import net.minecraft.entity.mob.ZombieEntity; + +@Environment(EnvType.CLIENT) +public abstract class AbstractZombieEntityRenderer > extends BipedEntityRenderer { + + + protected AbstractZombieEntityRenderer(EntityRendererFactory.Context ctx, M bodyModel, M legsArmorModel, M bodyArmorModel) { + super(ctx, bodyModel, 0.5F); + + } + + + protected boolean isShaking(T zombieEntity) { + return super.isShaking(zombieEntity) || zombieEntity.isConvertingInWater(); + } +} diff --git a/src/main/java/com/equilibrium/client/render/entity/TransparentBipedEntityRenderer.java b/src/main/java/com/equilibrium/client/render/entity/BipedEntityRenderer.java similarity index 68% rename from src/main/java/com/equilibrium/client/render/entity/TransparentBipedEntityRenderer.java rename to src/main/java/com/equilibrium/client/render/entity/BipedEntityRenderer.java index efdbe8f..c428942 100644 --- a/src/main/java/com/equilibrium/client/render/entity/TransparentBipedEntityRenderer.java +++ b/src/main/java/com/equilibrium/client/render/entity/BipedEntityRenderer.java @@ -8,19 +8,18 @@ import net.minecraft.client.render.entity.feature.ElytraFeatureRenderer; import net.minecraft.client.render.entity.feature.HeadFeatureRenderer; import net.minecraft.client.render.entity.feature.HeldItemFeatureRenderer; -import net.minecraft.client.render.entity.model.BipedEntityModel; import net.minecraft.entity.mob.MobEntity; @Environment(EnvType.CLIENT) -public abstract class TransparentBipedEntityRenderer> extends MobEntityRenderer { - public TransparentBipedEntityRenderer(EntityRendererFactory.Context ctx, M model, float shadowRadius) { +public abstract class BipedEntityRenderer> extends MobEntityRenderer { + public BipedEntityRenderer(EntityRendererFactory.Context ctx, M model, float shadowRadius) { this(ctx, model, shadowRadius, 1.0F, 1.0F, 1.0F); } - public TransparentBipedEntityRenderer(EntityRendererFactory.Context ctx, M model, float shadowRadius, float scaleX, float scaleY, float scaleZ) { + public BipedEntityRenderer(EntityRendererFactory.Context ctx, M model, float shadowRadius, float scaleX, float scaleY, float scaleZ) { super(ctx, model, shadowRadius); this.addFeature(new HeadFeatureRenderer<>(this, ctx.getModelLoader(), scaleX, scaleY, scaleZ, ctx.getHeldItemRenderer())); this.addFeature(new ElytraFeatureRenderer<>(this, ctx.getModelLoader())); this.addFeature(new HeldItemFeatureRenderer<>(this, ctx.getHeldItemRenderer())); } -} \ No newline at end of file +} diff --git a/src/main/java/com/equilibrium/client/render/entity/InvisibleStalker.java b/src/main/java/com/equilibrium/client/render/entity/InvisibleStalker.java index 80c4d6e..9c58ff3 100644 --- a/src/main/java/com/equilibrium/client/render/entity/InvisibleStalker.java +++ b/src/main/java/com/equilibrium/client/render/entity/InvisibleStalker.java @@ -1,14 +1,13 @@ package com.equilibrium.client.render.entity; -import com.equilibrium.client.render.entity.model.SZombieEntityModel; +import com.equilibrium.client.render.entity.model.TransparentZombieEntityModelAbstractZombieModel; import net.minecraft.client.render.entity.EntityRendererFactory; import net.minecraft.client.render.entity.model.EntityModelLayer; import net.minecraft.client.render.entity.model.EntityModelLayers; -import net.minecraft.client.render.entity.model.ZombieEntityModel; import net.minecraft.entity.mob.ZombieEntity; import net.minecraft.util.Identifier; -public class InvisibleStalker extends TransparentZombieEntityRenderer> { +public class InvisibleStalker extends AbstractZombieEntityRenderer> { private static final Identifier TEXTURE = Identifier.of("miteequilibrium","textures/entity/invisible_stalker.png"); public Identifier getTexture(ZombieEntity zombieEntity) { @@ -21,7 +20,7 @@ public InvisibleStalker(EntityRendererFactory.Context context) { public InvisibleStalker(EntityRendererFactory.Context ctx, EntityModelLayer layer, EntityModelLayer legsArmorLayer, EntityModelLayer bodyArmorLayer) { super( - ctx, new ZombieEntityModel<>(ctx.getPart(layer)), new ZombieEntityModel<>(ctx.getPart(legsArmorLayer)), new ZombieEntityModel<>(ctx.getPart(bodyArmorLayer)) + ctx, new TransparentZombieEntityModelAbstractZombieModel<>(ctx.getPart(layer)),new TransparentZombieEntityModelAbstractZombieModel<>(ctx.getPart(layer)), new TransparentZombieEntityModelAbstractZombieModel<>(ctx.getPart(layer)) ); } diff --git a/src/main/java/com/equilibrium/client/render/entity/ZombieEntityRendererTransparent.java b/src/main/java/com/equilibrium/client/render/entity/TestZombie.java similarity index 53% rename from src/main/java/com/equilibrium/client/render/entity/ZombieEntityRendererTransparent.java rename to src/main/java/com/equilibrium/client/render/entity/TestZombie.java index 36f24c5..c7a1d6d 100644 --- a/src/main/java/com/equilibrium/client/render/entity/ZombieEntityRendererTransparent.java +++ b/src/main/java/com/equilibrium/client/render/entity/TestZombie.java @@ -1,6 +1,6 @@ package com.equilibrium.client.render.entity; -import com.equilibrium.client.render.entity.model.SZombieEntityModel; +import com.equilibrium.client.render.entity.model.TransparentZombieEntityModelAbstractZombieModel; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.render.entity.EntityRendererFactory; @@ -10,20 +10,20 @@ import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) -public class ZombieEntityRendererTransparent extends TransparentZombieEntityRenderer> { +public class TestZombie extends AbstractZombieEntityRenderer> { private static final Identifier TEXTURE = Identifier.ofVanilla("textures/entity/player/wide/steve.png"); public Identifier getTexture(ZombieEntity zombieEntity) { return TEXTURE; } - public ZombieEntityRendererTransparent(EntityRendererFactory.Context context) { + public TestZombie(EntityRendererFactory.Context context) { this(context, EntityModelLayers.ZOMBIE, EntityModelLayers.ZOMBIE_INNER_ARMOR, EntityModelLayers.ZOMBIE_OUTER_ARMOR); } - public ZombieEntityRendererTransparent(EntityRendererFactory.Context ctx, EntityModelLayer layer, EntityModelLayer legsArmorLayer, EntityModelLayer bodyArmorLayer) { + public TestZombie(EntityRendererFactory.Context ctx, EntityModelLayer layer, EntityModelLayer legsArmorLayer, EntityModelLayer bodyArmorLayer) { super( - ctx, new SZombieEntityModel<>(ctx.getPart(layer)), new SZombieEntityModel<>(ctx.getPart(legsArmorLayer)), new SZombieEntityModel<>(ctx.getPart(bodyArmorLayer)) + ctx, new TransparentZombieEntityModelAbstractZombieModel<>(ctx.getPart(layer)), new TransparentZombieEntityModelAbstractZombieModel<>(ctx.getPart(layer)), new TransparentZombieEntityModelAbstractZombieModel<>(ctx.getPart(layer)) ); } diff --git a/src/main/java/com/equilibrium/client/render/entity/TransparentArmorFeatureRenderer.java b/src/main/java/com/equilibrium/client/render/entity/TransparentArmorFeatureRenderer.java deleted file mode 100644 index eef57af..0000000 --- a/src/main/java/com/equilibrium/client/render/entity/TransparentArmorFeatureRenderer.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.equilibrium.client.render.entity; - -import com.equilibrium.client.render.entity.model.TransparentBipedEntityModel; -import com.google.common.collect.Maps; -import java.util.Map; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.render.OverlayTexture; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.TexturedRenderLayers; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.entity.feature.FeatureRenderer; -import net.minecraft.client.render.entity.feature.FeatureRendererContext; -import net.minecraft.client.render.entity.model.BipedEntityModel; -import net.minecraft.client.render.model.BakedModelManager; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.texture.SpriteAtlasTexture; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.DyedColorComponent; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ArmorItem; -import net.minecraft.item.ArmorMaterial; -import net.minecraft.item.ItemStack; -import net.minecraft.item.trim.ArmorTrim; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.tag.ItemTags; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.ColorHelper; - -@Environment(EnvType.CLIENT) -public class TransparentArmorFeatureRenderer, A extends TransparentBipedEntityModel> extends FeatureRenderer { - private static final Map ARMOR_TEXTURE_CACHE = Maps.newHashMap(); - private final A innerModel; - private final A outerModel; - private final SpriteAtlasTexture armorTrimsAtlas; - - public TransparentArmorFeatureRenderer(FeatureRendererContext context, A innerModel, A outerModel, BakedModelManager bakery) { - super(context); - this.innerModel = innerModel; - this.outerModel = outerModel; - this.armorTrimsAtlas = bakery.getAtlas(TexturedRenderLayers.ARMOR_TRIMS_ATLAS_TEXTURE); - } - - public void render( - MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, T livingEntity, float f, float g, float h, float j, float k, float l - ) { - this.renderArmor(matrixStack, vertexConsumerProvider, livingEntity, EquipmentSlot.CHEST, i, this.getModel(EquipmentSlot.CHEST)); - this.renderArmor(matrixStack, vertexConsumerProvider, livingEntity, EquipmentSlot.LEGS, i, this.getModel(EquipmentSlot.LEGS)); - this.renderArmor(matrixStack, vertexConsumerProvider, livingEntity, EquipmentSlot.FEET, i, this.getModel(EquipmentSlot.FEET)); - this.renderArmor(matrixStack, vertexConsumerProvider, livingEntity, EquipmentSlot.HEAD, i, this.getModel(EquipmentSlot.HEAD)); - } - - private void renderArmor(MatrixStack matrices, VertexConsumerProvider vertexConsumers, T entity, EquipmentSlot armorSlot, int light, A model) { - ItemStack itemStack = entity.getEquippedStack(armorSlot); - if (itemStack.getItem() instanceof ArmorItem armorItem) { - if (armorItem.getSlotType() == armorSlot) { - this.getContextModel().copyBipedStateTo(model); - this.setVisible(model, armorSlot); - boolean bl = this.usesInnerModel(armorSlot); - ArmorMaterial armorMaterial = armorItem.getMaterial().value(); - int i = itemStack.isIn(ItemTags.DYEABLE) ? ColorHelper.Argb.fullAlpha(DyedColorComponent.getColor(itemStack, -6265536)) : -1; - - for (ArmorMaterial.Layer layer : armorMaterial.layers()) { - int j = layer.isDyeable() ? i : -1; - this.renderArmorParts(matrices, vertexConsumers, light, model, j, layer.getTexture(bl)); - } - - ArmorTrim armorTrim = itemStack.get(DataComponentTypes.TRIM); - if (armorTrim != null) { - this.renderTrim(armorItem.getMaterial(), matrices, vertexConsumers, light, armorTrim, model, bl); - } - - if (itemStack.hasGlint()) { - this.renderGlint(matrices, vertexConsumers, light, model); - } - } - } - } - - protected void setVisible(A bipedModel, EquipmentSlot slot) { - bipedModel.setVisible(false); - switch (slot) { - case HEAD: - bipedModel.head.visible = true; - bipedModel.hat.visible = true; - break; - case CHEST: - bipedModel.body.visible = true; - bipedModel.rightArm.visible = true; - bipedModel.leftArm.visible = true; - break; - case LEGS: - bipedModel.body.visible = true; - bipedModel.rightLeg.visible = true; - bipedModel.leftLeg.visible = true; - break; - case FEET: - bipedModel.rightLeg.visible = true; - bipedModel.leftLeg.visible = true; - } - } - - private void renderArmorParts(MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, A model, int i, Identifier identifier) { - VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getArmorCutoutNoCull(identifier)); - model.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV, i); - } - - private void renderTrim( - RegistryEntry armorMaterial, - MatrixStack matrices, - VertexConsumerProvider vertexConsumers, - int light, - ArmorTrim trim, - A model, - boolean leggings - ) { - Sprite sprite = this.armorTrimsAtlas.getSprite(leggings ? trim.getLeggingsModelId(armorMaterial) : trim.getGenericModelId(armorMaterial)); - VertexConsumer vertexConsumer = sprite.getTextureSpecificVertexConsumer( - vertexConsumers.getBuffer(TexturedRenderLayers.getArmorTrims(trim.getPattern().value().decal())) - ); - model.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); - } - - private void renderGlint(MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, A model) { - model.render(matrices, vertexConsumers.getBuffer(RenderLayer.getArmorEntityGlint()), light, OverlayTexture.DEFAULT_UV); - } - - private A getModel(EquipmentSlot slot) { - return this.usesInnerModel(slot) ? this.innerModel : this.outerModel; - } - - private boolean usesInnerModel(EquipmentSlot slot) { - return slot == EquipmentSlot.LEGS; - } -} diff --git a/src/main/java/com/equilibrium/client/render/entity/TransparentZombieEntityRenderer.java b/src/main/java/com/equilibrium/client/render/entity/TransparentZombieEntityRenderer.java deleted file mode 100644 index 2b5d631..0000000 --- a/src/main/java/com/equilibrium/client/render/entity/TransparentZombieEntityRenderer.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.equilibrium.client.render.entity; - -import com.equilibrium.client.render.entity.model.SZombieEntityModel; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.render.entity.BipedEntityRenderer; -import net.minecraft.client.render.entity.EntityRendererFactory; -import net.minecraft.client.render.entity.feature.ArmorFeatureRenderer; -import net.minecraft.client.render.entity.model.ZombieEntityModel; -import net.minecraft.entity.mob.ZombieEntity; -import net.minecraft.util.Identifier; - -@Environment(EnvType.CLIENT) -public abstract class TransparentZombieEntityRenderer> extends BipedEntityRenderer { - - - protected TransparentZombieEntityRenderer(EntityRendererFactory.Context ctx, M bodyModel, M legsArmorModel, M bodyArmorModel) { - super(ctx, bodyModel, 0.5F); - this.addFeature(new ArmorFeatureRenderer<>(this, legsArmorModel, bodyArmorModel, ctx.getModelManager())); - } - - - protected boolean isShaking(T zombieEntity) { - return super.isShaking(zombieEntity) || zombieEntity.isConvertingInWater(); - } -} diff --git a/src/main/java/com/equilibrium/client/render/entity/model/TransparentAbstractZombieModel.java b/src/main/java/com/equilibrium/client/render/entity/model/TransparentAbstractZombieModel.java index 78b7ad8..f4d85be 100644 --- a/src/main/java/com/equilibrium/client/render/entity/model/TransparentAbstractZombieModel.java +++ b/src/main/java/com/equilibrium/client/render/entity/model/TransparentAbstractZombieModel.java @@ -1,7 +1,5 @@ package com.equilibrium.client.render.entity.model; - - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.ModelPart; diff --git a/src/main/java/com/equilibrium/client/render/entity/model/TransparentBipedEntityModel.java b/src/main/java/com/equilibrium/client/render/entity/model/TransparentBipedEntityModel.java index 8012bc8..636c158 100644 --- a/src/main/java/com/equilibrium/client/render/entity/model/TransparentBipedEntityModel.java +++ b/src/main/java/com/equilibrium/client/render/entity/model/TransparentBipedEntityModel.java @@ -1,15 +1,8 @@ package com.equilibrium.client.render.entity.model; import com.google.common.collect.ImmutableList; -import java.util.function.Function; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.model.Dilation; -import net.minecraft.client.model.ModelData; -import net.minecraft.client.model.ModelPart; -import net.minecraft.client.model.ModelPartBuilder; -import net.minecraft.client.model.ModelPartData; -import net.minecraft.client.model.ModelTransform; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.entity.model.*; import net.minecraft.client.util.math.MatrixStack; @@ -18,23 +11,14 @@ import net.minecraft.util.Hand; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; -import com.google.common.collect.ImmutableList; + import java.util.function.Function; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; import net.minecraft.client.model.Dilation; import net.minecraft.client.model.ModelData; import net.minecraft.client.model.ModelPart; import net.minecraft.client.model.ModelPartBuilder; import net.minecraft.client.model.ModelPartData; import net.minecraft.client.model.ModelTransform; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.LivingEntity; -import net.minecraft.util.Arm; -import net.minecraft.util.Hand; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; /** * Represents the model of a biped living entity. @@ -90,13 +74,13 @@ public class TransparentBipedEntityModel extends AnimalM public final ModelPart leftArm; public final ModelPart rightLeg; public final ModelPart leftLeg; - public BipedEntityModel.ArmPose leftArmPose = BipedEntityModel.ArmPose.EMPTY; - public BipedEntityModel.ArmPose rightArmPose = BipedEntityModel.ArmPose.EMPTY; + public net.minecraft.client.render.entity.model.BipedEntityModel.ArmPose leftArmPose = net.minecraft.client.render.entity.model.BipedEntityModel.ArmPose.EMPTY; + public net.minecraft.client.render.entity.model.BipedEntityModel.ArmPose rightArmPose = net.minecraft.client.render.entity.model.BipedEntityModel.ArmPose.EMPTY; public boolean sneaking; public float leaningPitch; public TransparentBipedEntityModel(ModelPart root) { - this(root, RenderLayer::getEntityCutout); + this(root, RenderLayer::getEntityTranslucentCull); } public TransparentBipedEntityModel(ModelPart root, Function renderLayerFactory) { @@ -265,11 +249,11 @@ public void setAngles(T livingEntity, float f, float g, float h, float i, float this.rightArm.pivotY = 2.0F; } - if (this.rightArmPose != BipedEntityModel.ArmPose.SPYGLASS) { + if (this.rightArmPose != net.minecraft.client.render.entity.model.BipedEntityModel.ArmPose.SPYGLASS) { CrossbowPosing.swingArm(this.rightArm, h, 1.0F); } - if (this.leftArmPose != BipedEntityModel.ArmPose.SPYGLASS) { + if (this.leftArmPose != net.minecraft.client.render.entity.model.BipedEntityModel.ArmPose.SPYGLASS) { CrossbowPosing.swingArm(this.leftArm, h, -1.0F); } @@ -449,7 +433,7 @@ private float method_2807(float f) { return -65.0F * f + f * f; } - public void copyBipedStateTo(BipedEntityModel model) { + public void copyBipedStateTo(net.minecraft.client.render.entity.model.BipedEntityModel model) { super.copyStateTo(model); model.leftArmPose = this.leftArmPose; model.rightArmPose = this.rightArmPose; diff --git a/src/main/java/com/equilibrium/client/render/entity/model/SZombieEntityModel.java b/src/main/java/com/equilibrium/client/render/entity/model/TransparentZombieEntityModelAbstractZombieModel.java similarity index 63% rename from src/main/java/com/equilibrium/client/render/entity/model/SZombieEntityModel.java rename to src/main/java/com/equilibrium/client/render/entity/model/TransparentZombieEntityModelAbstractZombieModel.java index a547464..abd8320 100644 --- a/src/main/java/com/equilibrium/client/render/entity/model/SZombieEntityModel.java +++ b/src/main/java/com/equilibrium/client/render/entity/model/TransparentZombieEntityModelAbstractZombieModel.java @@ -3,17 +3,15 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.model.ModelPart; -import net.minecraft.client.render.entity.model.AbstractZombieModel; import net.minecraft.entity.mob.ZombieEntity; @Environment(EnvType.CLIENT) -public class SZombieEntityModel extends TransparentAbstractZombieModel { - public SZombieEntityModel(ModelPart modelPart) { +public class TransparentZombieEntityModelAbstractZombieModel extends TransparentAbstractZombieModel { + public TransparentZombieEntityModelAbstractZombieModel(ModelPart modelPart) { super(modelPart); - } + public boolean isAttacking(T zombieEntity) { return zombieEntity.isAttacking(); } - } diff --git a/src/main/java/com/equilibrium/entity/ModEntities.java b/src/main/java/com/equilibrium/entity/ModEntities.java index ddecbf1..38bbbab 100644 --- a/src/main/java/com/equilibrium/entity/ModEntities.java +++ b/src/main/java/com/equilibrium/entity/ModEntities.java @@ -2,18 +2,14 @@ import com.equilibrium.entity.mob.TestZombieEntity; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; -import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityType; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder; import net.minecraft.entity.EntityDimensions; import net.minecraft.entity.EntityType; import net.minecraft.entity.SpawnGroup; -import net.minecraft.entity.mob.ZombieEntity; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.util.Identifier; -import java.util.function.UnaryOperator; - public class ModEntities { //注册实体 diff --git a/src/main/java/com/equilibrium/entity/mob/TestZombieEntity.java b/src/main/java/com/equilibrium/entity/mob/TestZombieEntity.java index 69c124d..19d8cac 100644 --- a/src/main/java/com/equilibrium/entity/mob/TestZombieEntity.java +++ b/src/main/java/com/equilibrium/entity/mob/TestZombieEntity.java @@ -1,10 +1,6 @@ package com.equilibrium.entity.mob; -import net.minecraft.client.render.entity.EntityRendererFactory; -import net.minecraft.client.render.entity.model.AbstractZombieModel; -import net.minecraft.client.render.entity.model.EntityModelLayers; import net.minecraft.entity.EntityType; -import net.minecraft.entity.mob.CaveSpiderEntity; import net.minecraft.entity.mob.ZombieEntity; import net.minecraft.world.World; diff --git a/src/main/java/com/equilibrium/event/BreakBlockEvent.java b/src/main/java/com/equilibrium/event/BreakBlockEvent.java new file mode 100644 index 0000000..ac998bc --- /dev/null +++ b/src/main/java/com/equilibrium/event/BreakBlockEvent.java @@ -0,0 +1,109 @@ +package com.equilibrium.event; +import net.fabricmc.fabric.api.client.message.v1.ClientSendMessageEvents; +import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.component.type.ItemEnchantmentsComponent; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.EnchantmentLevelEntry; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.*; +import net.minecraft.network.message.SentMessage; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.util.Identifier; +import net.minecraft.util.ItemScatterer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; + +import java.util.Random; + +import static com.equilibrium.MITEequilibrium.LOGGER; +public class BreakBlockEvent implements PlayerBlockBreakEvents.After{ + + /** + * Called after a block is successfully broken. + * + * @param world the world where the block was broken + * @param player the player who broke the block + * @param pos the position where the block was broken + * @param state the block state before the block was broken + * @param blockEntity the block entity of the broken block, can be {@code null} + */ + @Override + public void afterBlockBreak(World world, PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity) { + if (state.getBlock() == Blocks.GRAVEL) { + + ItemStack itemStack =player.getMainHandStack(); + int funtuneLevel=EnchantmentHelper.getLevel(world.getRegistryManager().get(RegistryKeys.ENCHANTMENT).getEntry(Enchantments.FORTUNE).get(),itemStack); + int slikTouch=EnchantmentHelper.getLevel(world.getRegistryManager().get(RegistryKeys.ENCHANTMENT).getEntry(Enchantments.SILK_TOUCH).get(),itemStack); + + if (slikTouch==1){ + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.GRAVEL))); + return; + } + Random random =new Random(); + int randomNumber1 = random.nextInt(100); + if(randomNumber1<75-funtuneLevel*15){ + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.GRAVEL))); + return; + } + + + + + int randomNumber2 = random.nextInt(100); + + + ItemEntity itemDrop; + if(randomNumber2==0){ + //0,就1个,1% + itemDrop = new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.GOLD_BLOCK)); + } else if(randomNumber2<=8) { + //1-8,共8个 8% + itemDrop = new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.GOLD_INGOT)); + } else if (randomNumber2 <= 24) { + //9-24,共16个 16% + itemDrop = new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.GOLD_NUGGET)); + } else if (randomNumber2 <= 46) { + //25-46,共22个 22% + itemDrop = new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.GOLD_NUGGET)); + }else{ + //47-99,共53个 75% + itemDrop = new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.STONE)); + } + world.spawnEntity(itemDrop); + }else{ + return; + } + } + + + + + + +} + + + + + + + + + diff --git a/src/main/java/com/equilibrium/gen/ModModelProvider.java b/src/main/java/com/equilibrium/gen/ModModelProvider.java new file mode 100644 index 0000000..d40f1b6 --- /dev/null +++ b/src/main/java/com/equilibrium/gen/ModModelProvider.java @@ -0,0 +1,60 @@ +package com.equilibrium.gen; + +import com.equilibrium.block.ModBlocks; +import com.equilibrium.item.Metal; +import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; +import net.minecraft.data.client.BlockStateModelGenerator; +import net.minecraft.data.client.ItemModelGenerator; +import net.minecraft.data.client.Models; +import net.minecraft.item.Item; + +public class ModModelProvider extends FabricModelProvider { + public ModModelProvider(FabricDataOutput output) { + super(output); + } + + + @Override + public void generateBlockStateModels(BlockStateModelGenerator blockStateModelGenerator) { + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.ADAMANTIUM_BLOCK); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.COPPER_BLOCK); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SILVER_BLOCK); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.MITHRIL_BLOCK); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.ANCIENT_METAL_BLOCK); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.GOLD_BLOCK); + + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.ADAMANTIUM_ORE); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.COPPER_ORE); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.SILVER_ORE); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.MITHRIL_ORE); + blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.GOLD_ORE); + +// blockStateModelGenerator.registerItemModel(ModBlocks.ADAMANTIUM_BLOCK); +// blockStateModelGenerator.registerItemModel(ModBlocks.COPPER_BLOCK); +// blockStateModelGenerator.registerItemModel(ModBlocks.SILVER_BLOCK); +// blockStateModelGenerator.registerItemModel(ModBlocks.MITHRIL_BLOCK); +// blockStateModelGenerator.registerItemModel(ModBlocks.ANCIENT_METAL_BLOCK); +// blockStateModelGenerator.registerItemModel(ModBlocks.GOLD_BLOCK); +// +// blockStateModelGenerator.registerItemModel(ModBlocks.ADAMANTIUM_ORE); +// blockStateModelGenerator.registerItemModel(ModBlocks.COPPER_ORE); +// blockStateModelGenerator.registerItemModel(ModBlocks.SILVER_ORE); +// blockStateModelGenerator.registerItemModel(ModBlocks.MITHRIL_ORE); +// blockStateModelGenerator.registerItemModel(ModBlocks.GOLD_ORE); + } + + + @Override + public void generateItemModels(ItemModelGenerator itemModelGenerator) { + itemModelGenerator.register(Metal.adamantium_nugget, Models.GENERATED); + itemModelGenerator.register(Metal.ancient_metal_nugget, Models.GENERATED); + itemModelGenerator.register(Metal.copper_nugget, Models.GENERATED); + itemModelGenerator.register(Metal.gold_nugget, Models.GENERATED); + itemModelGenerator.register(Metal.mithril_nugget, Models.GENERATED); + itemModelGenerator.register(Metal.silver_nugget, Models.GENERATED); + + + + } +} diff --git a/src/main/java/com/equilibrium/gen/ModRecipeGenerator.java b/src/main/java/com/equilibrium/gen/ModRecipeGenerator.java index 85ac8c8..a4b9e5b 100644 --- a/src/main/java/com/equilibrium/gen/ModRecipeGenerator.java +++ b/src/main/java/com/equilibrium/gen/ModRecipeGenerator.java @@ -1,15 +1,12 @@ package com.equilibrium.gen; -import com.equilibrium.item.Ingots; +import com.equilibrium.item.Metal; import com.equilibrium.item.Tools; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; -import net.minecraft.block.Blocks; import net.minecraft.data.server.recipe.RecipeExporter; import net.minecraft.data.server.recipe.ShapedRecipeJsonBuilder; -import net.minecraft.item.Item; import net.minecraft.item.Items; -import net.minecraft.recipe.ShapedRecipe; import net.minecraft.recipe.book.RecipeCategory; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; @@ -27,10 +24,10 @@ public void generate(RecipeExporter exporter) { pattern("XX"). pattern("XY"). pattern(" Y"). - input('X', Ingots.adamantium). + input('X', Metal.adamantium). input('Y',Items.STICK). - criterion(FabricRecipeProvider.hasItem(Ingots.adamantium), - FabricRecipeProvider.conditionsFromItem(Ingots.adamantium)).offerTo(exporter, Identifier.of("adamantium_axe")); + criterion(FabricRecipeProvider.hasItem(Metal.adamantium), + FabricRecipeProvider.conditionsFromItem(Metal.adamantium)).offerTo(exporter, Identifier.of("adamantium_axe")); } diff --git a/src/main/java/com/equilibrium/item/Ingots.java b/src/main/java/com/equilibrium/item/Metal.java similarity index 50% rename from src/main/java/com/equilibrium/item/Ingots.java rename to src/main/java/com/equilibrium/item/Metal.java index dbb5d0e..9bb7bc0 100644 --- a/src/main/java/com/equilibrium/item/Ingots.java +++ b/src/main/java/com/equilibrium/item/Metal.java @@ -1,12 +1,14 @@ package com.equilibrium.item; +import net.minecraft.block.Blocks; import net.minecraft.item.Item; +import net.minecraft.item.Items; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.util.Identifier; -public class Ingots { +public class Metal { //以下开始添加物品: public static final Item adamantium= new Item(new Item.Settings()); @@ -17,7 +19,12 @@ public class Ingots { public static final Item silver = new Item(new Item.Settings()); - + public static final Item adamantium_nugget= new Item(new Item.Settings()); + public static final Item ancient_metal_nugget= new Item(new Item.Settings()); + public static final Item copper_nugget = new Item(new Item.Settings()); + public static final Item gold_nugget = new Item(new Item.Settings()); + public static final Item mithril_nugget = new Item(new Item.Settings()); + public static final Item silver_nugget = new Item(new Item.Settings()); public static void registerModItemIngots() { Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","adamantium"), adamantium); @@ -26,9 +33,19 @@ public static void registerModItemIngots() { Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","gold"), gold); Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","mithril"), mithril); Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","silver"), silver); + } + public static void registerModItemNuggets(){ + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","adamantium_nugget"), adamantium_nugget); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","ancient_metal_nugget"), ancient_metal_nugget); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","copper_nugget"), copper_nugget); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","gold_nugget"), gold_nugget); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","mithril_nugget"), mithril_nugget); + Registry.register(Registries.ITEM, Identifier.of("miteequilibrium","silver_nugget"), silver_nugget); + + } + - } } diff --git a/src/main/java/com/equilibrium/item/ModItemGroup.java b/src/main/java/com/equilibrium/item/ModItemGroup.java index e3556cf..7d7eb9e 100644 --- a/src/main/java/com/equilibrium/item/ModItemGroup.java +++ b/src/main/java/com/equilibrium/item/ModItemGroup.java @@ -37,17 +37,39 @@ public class ModItemGroup { } ).build()); - //锭栏 - public static final ItemGroup modIngots = Registry.register(Registries.ITEM_GROUP, Identifier.of(MITEequilibrium.MOD_ID,"ingotsgroup"), - FabricItemGroup.builder().displayName(Text.translatable("itemgroup.ingotsgroup")) - .icon(()->new ItemStack(Ingots.adamantium)).entries((displayContext, entries) -> + //金属栏 + public static final ItemGroup modIngots = Registry.register(Registries.ITEM_GROUP, Identifier.of(MITEequilibrium.MOD_ID,"metalgroup"), + FabricItemGroup.builder().displayName(Text.translatable("itemgroup.metalgroup")) + .icon(()->new ItemStack(Metal.adamantium)).entries((displayContext, entries) -> { - entries.add(Ingots.adamantium); - entries.add(Ingots.copper); - entries.add(Ingots.ancient_metal); - entries.add(Ingots.gold); - entries.add(Ingots.mithril); - entries.add(Ingots.silver); + entries.add(Metal.adamantium); + entries.add(Metal.copper); + entries.add(Metal.ancient_metal); + entries.add(Metal.gold); + entries.add(Metal.mithril); + entries.add(Metal.silver); + + entries.add(Metal.adamantium_nugget); + entries.add(Metal.ancient_metal_nugget); + entries.add(Metal.copper_nugget); + entries.add(Metal.gold_nugget); + entries.add(Metal.silver_nugget); + entries.add(Metal.mithril_nugget); + + entries.add(ModBlocks.SILVER_BLOCK); + entries.add(ModBlocks.COPPER_BLOCK); + entries.add(ModBlocks.ADAMANTIUM_BLOCK); + entries.add(ModBlocks.ANCIENT_METAL_BLOCK); + entries.add(ModBlocks.MITHRIL_BLOCK); + entries.add(ModBlocks.GOLD_BLOCK); + + entries.add(ModBlocks.GOLD_ORE); + entries.add(ModBlocks.ADAMANTIUM_ORE); + entries.add(ModBlocks.COPPER_ORE); + entries.add(ModBlocks.MITHRIL_ORE); + entries.add(ModBlocks.SILVER_ORE); + + } ).build()); @@ -55,6 +77,7 @@ public class ModItemGroup { + public static void registerModItemGroup(){ } diff --git a/src/main/java/com/equilibrium/mixin/AbstractFireBlockMixin.java b/src/main/java/com/equilibrium/mixin/AbstractFireBlockMixin.java index f99ae39..520df36 100644 --- a/src/main/java/com/equilibrium/mixin/AbstractFireBlockMixin.java +++ b/src/main/java/com/equilibrium/mixin/AbstractFireBlockMixin.java @@ -1,6 +1,6 @@ package com.equilibrium.mixin; -import com.equilibrium.world.dimension.UnderworldPortal; + import net.minecraft.block.AbstractBlock; import net.minecraft.block.AbstractFireBlock; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/equilibrium/mixin/BiomeMixin.java b/src/main/java/com/equilibrium/mixin/BiomeMixin.java new file mode 100644 index 0000000..c9f7789 --- /dev/null +++ b/src/main/java/com/equilibrium/mixin/BiomeMixin.java @@ -0,0 +1,46 @@ +package com.equilibrium.mixin; + +import com.equilibrium.util.ColorAdjuster; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeEffects; +import net.minecraft.world.biome.GrassColors; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + + +@Mixin(Biome.class) +public abstract class BiomeMixin { + @Shadow + @Final + private BiomeEffects effects; + + + + + @Inject(method = "getSkyColor",at =@At(value = "HEAD"),cancellable = true) + public void getSkyColor(CallbackInfoReturnable cir) { + + int baseColor = this.effects.getSkyColor(); + int modifiedColor = ColorAdjuster.adjustColor(baseColor,0,0,0); + cir.setReturnValue(modifiedColor); + } + + @Inject(method = "getFogColor",at =@At(value = "HEAD"),cancellable = true) + public void getFogColor(CallbackInfoReturnable cir) { + int baseColor = this.effects.getFogColor(); + int modifiedColor = ColorAdjuster.adjustColor(baseColor,0,0,0); + cir.setReturnValue(modifiedColor); + } + + + + + + + +} diff --git a/src/main/java/com/equilibrium/mixin/BlockModelRendererMixin.java b/src/main/java/com/equilibrium/mixin/BlockModelRendererMixin.java new file mode 100644 index 0000000..8a76ba5 --- /dev/null +++ b/src/main/java/com/equilibrium/mixin/BlockModelRendererMixin.java @@ -0,0 +1,30 @@ +package com.equilibrium.mixin; + +import net.minecraft.block.BlockState; +import net.minecraft.client.color.block.BlockColors; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.block.BlockModelRenderer; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.BakedQuad; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.random.Random; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +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.List; + +@Mixin(BlockModelRenderer.class) +public abstract class BlockModelRendererMixin { + @Final + @Shadow + private BlockColors colors; + + +} diff --git a/src/main/java/com/equilibrium/mixin/GrassColorsMixin.java b/src/main/java/com/equilibrium/mixin/GrassColorsMixin.java new file mode 100644 index 0000000..58bc6e2 --- /dev/null +++ b/src/main/java/com/equilibrium/mixin/GrassColorsMixin.java @@ -0,0 +1,35 @@ +package com.equilibrium.mixin; + +import com.equilibrium.util.ColorAdjuster; +import net.minecraft.world.biome.GrassColors; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(GrassColors.class) +public abstract class GrassColorsMixin { + @Shadow + private static int[] colorMap; + + + @Inject(method = "getColor",at = @At(value = "HEAD"), cancellable = true) + private static void getColor(double temperature, double humidity, CallbackInfoReturnable cir) { + cir.cancel(); + humidity *= temperature; + int i = (int)((1.0 - temperature) * 255.0); + int j = (int)((1.0 - humidity) * 255.0); + int k = j << 8 | i; + int baseColor = colorMap[k] ; + int modifiedColor = ColorAdjuster.adjustColor(baseColor,0,0,0); + + cir.setReturnValue(k >= colorMap.length ? -65281 : modifiedColor); + + } + + + + + +} diff --git a/src/main/java/com/equilibrium/mixin/NetherPortalBlockMixin.java b/src/main/java/com/equilibrium/mixin/NetherPortalBlockMixin.java index 4e2e642..0917529 100644 --- a/src/main/java/com/equilibrium/mixin/NetherPortalBlockMixin.java +++ b/src/main/java/com/equilibrium/mixin/NetherPortalBlockMixin.java @@ -3,29 +3,41 @@ import net.minecraft.block.Block; import net.minecraft.block.NetherPortalBlock; import net.minecraft.block.Portal; +import net.minecraft.enchantment.effect.AllOfEnchantmentEffects; import net.minecraft.entity.Entity; +import net.minecraft.entity.effect.StatusEffect; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffectUtil; +import net.minecraft.entity.effect.StatusEffects; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.TeleportTarget; import net.minecraft.world.World; import net.minecraft.world.border.WorldBorder; import net.minecraft.world.dimension.DimensionType; import org.jetbrains.annotations.Nullable; +import org.slf4j.Logger; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.util.Set; + @Mixin(NetherPortalBlock.class) public abstract class NetherPortalBlockMixin extends Block implements Portal { @Shadow @Nullable protected abstract TeleportTarget getOrCreateExitPortalTarget(ServerWorld world, Entity entity, BlockPos pos, BlockPos scaledPos, boolean inNether, WorldBorder worldBorder); + @Shadow @Final private static Logger LOGGER; + public NetherPortalBlockMixin(Settings settings) { super(settings); } @@ -69,6 +81,42 @@ public void createTeleportTarget(ServerWorld world, Entity entity, BlockPos pos, teleport=underworld; } else if (world.getRegistryKey()==overworld && !atBottom) { teleport=overworld; + if(entity.isPlayer()){ + serverWorld=world.getServer().getWorld(teleport); + + StatusEffectInstance statusEffectInstance1 = new StatusEffectInstance(StatusEffects.BLINDNESS, 60,255, false,false,false); + StatusEffectUtil.addEffectToPlayersWithinDistance(world, entity, entity.getPos(), 4, statusEffectInstance1,100); + + StatusEffectInstance statusEffectInstance4 = new StatusEffectInstance(StatusEffects.SLOWNESS,40,255, false,false,false); + StatusEffectUtil.addEffectToPlayersWithinDistance(world, entity, entity.getPos(), 4, statusEffectInstance4,100); + + StatusEffectInstance statusEffectInstance3 = new StatusEffectInstance(StatusEffects.NAUSEA,100,255, false,false,false); + StatusEffectUtil.addEffectToPlayersWithinDistance(world, entity, entity.getPos(), 4, statusEffectInstance3,100); + + + + BlockPos spawnPos=world.getSpawnPos(); + + + for(int i=0;i<=3;i++){ + world.breakBlock(spawnPos.add(1,i,1),true); + world.breakBlock(spawnPos.add(1,i,0),true); + world.breakBlock(spawnPos.add(1,i,-1),true); + world.breakBlock(spawnPos.add(0,i,1),true); + world.breakBlock(spawnPos.add(0,i,0),true); + world.breakBlock(spawnPos.add(0,i,-1),true); + world.breakBlock(spawnPos.add(-1,i,1),true); + world.breakBlock(spawnPos.add(-1,i,0),true); + world.breakBlock(spawnPos.add(-1,i,-1),true); + } + + + + entity.teleport(serverWorld,spawnPos.getX(),spawnPos.getY(),spawnPos.getZ(), Set.of(),entity.getYaw(), entity.getPitch()); + + return; + } + } else if (world.getRegistryKey()==underworld && !atBottom) { teleport=overworld; } else if (world.getRegistryKey()==underworld && atBottom) { diff --git a/src/main/java/com/equilibrium/mixin/PlayerEntityMixin.java b/src/main/java/com/equilibrium/mixin/PlayerEntityMixin.java index f9380cb..6ade4b5 100644 --- a/src/main/java/com/equilibrium/mixin/PlayerEntityMixin.java +++ b/src/main/java/com/equilibrium/mixin/PlayerEntityMixin.java @@ -8,9 +8,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; -import net.minecraft.entity.data.DataTracker; -import net.minecraft.entity.data.TrackedData; -import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.entity.player.HungerManager; import net.minecraft.entity.player.PlayerAbilities; import net.minecraft.entity.player.PlayerEntity; @@ -23,7 +20,6 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -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; @@ -47,7 +43,6 @@ public void PlayerEntity(World world, BlockPos pos, float yaw, GameProfile gameP @Inject(method = "jump", at = @At("TAIL")) public void jump(CallbackInfo ci) { - } @@ -73,7 +68,6 @@ public void jump(CallbackInfo ci) { @Shadow public abstract void tick(); - @Shadow @Final private PlayerAbilities abilities; @@ -90,7 +84,7 @@ public void getBlockInteractionRange(CallbackInfoReturnable cir) { //以下修改实体交互距离 @Inject(method = "getEntityInteractionRange", at = @At("HEAD"), cancellable = true) public void getEntityInteractionRange(CallbackInfoReturnable cir) { - cir.setReturnValue(1.0); + cir.setReturnValue(8.0); } //玩家基础属性 @@ -124,14 +118,13 @@ private static void createPlayerAttributes(CallbackInfoReturnable cir) { - hungerManager.setFoodLevel(0); - hungerManager.setSaturationLevel(0); + int level = this.experienceLevel; float speed = cir.getReturnValue(); - System.out.println(speed); + float finalSpeed = speed * (0.025F) * (1 + level * 0.02F); - System.out.println(finalSpeed); + cir.setReturnValue(finalSpeed); } diff --git a/src/main/java/com/equilibrium/mixin/PortalForcerMixin.java b/src/main/java/com/equilibrium/mixin/PortalForcerMixin.java index b565987..6c63d09 100644 --- a/src/main/java/com/equilibrium/mixin/PortalForcerMixin.java +++ b/src/main/java/com/equilibrium/mixin/PortalForcerMixin.java @@ -27,7 +27,7 @@ import java.util.Comparator; import java.util.Optional; -import static com.equilibrium.block.ModBlocks.UNDERWORLD_PORTAL; + import static net.minecraft.world.poi.PointOfInterestType.*; @Mixin(PortalForcer.class) diff --git a/src/main/java/com/equilibrium/mixin/WorldRendererMixin.java b/src/main/java/com/equilibrium/mixin/WorldRendererMixin.java index 324a9fc..85c580a 100644 --- a/src/main/java/com/equilibrium/mixin/WorldRendererMixin.java +++ b/src/main/java/com/equilibrium/mixin/WorldRendererMixin.java @@ -16,6 +16,8 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.RotationAxis; import net.minecraft.util.math.Vec3d; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeEffects; import org.joml.Matrix4f; import org.slf4j.Logger; import org.spongepowered.asm.mixin.Final; @@ -34,7 +36,7 @@ public abstract class WorldRendererMixin { private static final Identifier MOON_PHASES = Identifier.of("miteequilibrium","textures/environment/moon_phases.png"); - private static final Identifier END_SKY = Identifier.of("miteequilibrium","textures/environment/end_sky.png"); + private static final Identifier END_SKY = Identifier.ofVanilla("textures/environment/end_sky.png"); private static final Identifier BLOOD_MOON = Identifier.of("miteequilibrium","textures/environment/blood_moon.png"); private static final Identifier BLUE_MOON = Identifier.of("miteequilibrium","textures/environment/blue_moon.png"); @@ -63,6 +65,9 @@ public abstract class WorldRendererMixin { @Shadow public abstract ChunkBuilder getChunkBuilder(); + + + private void renderEndSkyMixin(MatrixStack matrices) { RenderSystem.enableBlend(); RenderSystem.depthMask(false); @@ -184,8 +189,8 @@ public void renderSky(Matrix4f matrix4f, Matrix4f projectionMatrix, float tickDe BufferRenderer.drawWithGlobalProgram(bufferBuilder2.end()); //获取世界时间 - float time = this.world.getTimeOfDay(); - //LOGGER.info("The time is "+time); + long time = this.world.getTimeOfDay(); +// LOGGER.info("The time is "+time); //发送时间,获取月相 setMoonType(time); String moonType =getMoonType(); @@ -378,7 +383,7 @@ else if(moonType.equals("harvestMoon")){ matrixStack.pop(); } - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderColor(1F, 1F, 1F, 1F); RenderSystem.depthMask(true); } } diff --git a/src/main/java/com/equilibrium/mixin/color/LightmapTextureManagerMixin.java b/src/main/java/com/equilibrium/mixin/color/LightmapTextureManagerMixin.java new file mode 100644 index 0000000..de3539c --- /dev/null +++ b/src/main/java/com/equilibrium/mixin/color/LightmapTextureManagerMixin.java @@ -0,0 +1,205 @@ +package com.equilibrium.mixin.color; + +import com.equilibrium.util.MoonlightController; +import com.equilibrium.util.WorldMoonPhasesSelector; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.LightmapTextureManager; +import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.texture.NativeImageBackedTexture; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.dimension.DimensionType; +import org.joml.Vector3f; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +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.Objects; + +import static com.equilibrium.MITEequilibrium.LOGGER; +import static net.minecraft.client.render.LightmapTextureManager.getBrightness; + +@Mixin(LightmapTextureManager.class) + +public abstract class LightmapTextureManagerMixin { + + @Shadow + @Final + private NativeImageBackedTexture texture; + @Shadow + @Final + private NativeImage image; + + @Shadow + @Final + private Identifier textureIdentifier; + @Shadow + private boolean dirty; + @Shadow + private float flickerIntensity; + @Shadow + @Final + private GameRenderer renderer; + @Shadow + @Final + private MinecraftClient client; + + private float getDarkness(LivingEntity entity, float factor, float delta) { + float f = 0.45F * factor; + return Math.max(0.0F, MathHelper.cos(((float)entity.age - delta) * (float) Math.PI * 0.025F) * f); + } + private float getDarknessFactor(float delta) { + StatusEffectInstance statusEffectInstance = this.client.player.getStatusEffect(StatusEffects.DARKNESS); + return statusEffectInstance != null ? statusEffectInstance.getFadeFactor(this.client.player, delta) : 0.0F; + } + + + private static void clamp(Vector3f vec) { + vec.set(MathHelper.clamp(vec.x, 0.0F, 1.0F), MathHelper.clamp(vec.y, 0.0F, 1.0F), MathHelper.clamp(vec.z, 0.0F, 1.0F)); + } + private float easeOutQuart(float x) { + float f = 1.0F - x; + return 1.0F - f * f * f * f; + } + + @Inject(method = "update",at = @At(value = "HEAD"),cancellable = true) + public void update(float delta, CallbackInfo ci) { + ci.cancel(); + if (this.dirty) { + this.dirty = false; + this.client.getProfiler().push("lightTex"); + ClientWorld clientWorld = this.client.world; + if (clientWorld != null) { + float f = clientWorld.getSkyBrightness(1.0F); + float g; + if (clientWorld.getLightningTicksLeft() > 0) { + g = 1.0F; + } else { + g = f * 0.95F + 0.05F; + } + + float h = this.client.options.getDarknessEffectScale().getValue().floatValue(); + float i = this.getDarknessFactor(delta) * h; + float j = this.getDarkness(this.client.player, i, delta) * h; + //水下清晰 + float k = this.client.player.getUnderwaterVisibility(); + float l; + //设定特殊gamma值 + if (this.client.player.hasStatusEffect(StatusEffects.NIGHT_VISION)) { + l = GameRenderer.getNightVisionStrength(this.client.player, delta); + } else if (k > 0.0F && this.client.player.hasStatusEffect(StatusEffects.CONDUIT_POWER)) { + l = k; + } else { + l = 0.0F; + } + + Vector3f vector3f = new Vector3f(f, f, 1.0F).lerp(new Vector3f(1.0F, 1.0F, 1.0F), 0.35F); + float m = this.flickerIntensity + 1.5F; + Vector3f vector3f2 = new Vector3f(); + + for (int n = 0; n < 16; n++) { + for (int o = 0; o < 16; o++) { + float p = getBrightness(clientWorld.getDimension(), n) * g; + float q = getBrightness(clientWorld.getDimension(), o) * m; + float s = q * ((q * 0.6F + 0.4F) * 0.6F + 0.4F); + float t = q * (q * q * 0.6F + 0.4F); + vector3f2.set(q, s, t); + //雷电闪烁 + boolean bl = clientWorld.getDimensionEffects().shouldBrightenLighting(); + if (bl) { + vector3f2.lerp(new Vector3f(0.99F, 1.12F, 1.0F), 0.25F); + clamp(vector3f2); + } else { + Vector3f vector3f3 = new Vector3f(vector3f).mul(p); + vector3f2.add(vector3f3); + vector3f2.lerp(new Vector3f(0.75F, 0.75F, 0.75F), 0.04F); + if (this.renderer.getSkyDarkness(delta) > 0.0F) { + float u = this.renderer.getSkyDarkness(delta); + Vector3f vector3f4 = new Vector3f(vector3f2).mul(0.7F, 0.6F, 0.6F); + vector3f2.lerp(vector3f4, u); + } + } + + if (l > 0.0F) { + float v = Math.max(vector3f2.x(), Math.max(vector3f2.y(), vector3f2.z())); + if (v < 1.0F) { + float u = 1.0F / v; + Vector3f vector3f4 = new Vector3f(vector3f2).mul(u); + vector3f2.lerp(vector3f4, l); + } + } + + if (!bl) { + if (j > 0.0F) { + vector3f2.add(-j, -j, -j); + } + + clamp(vector3f2); + } + + float v = this.client.options.getGamma().getValue().floatValue(); + Vector3f vector3f5 = new Vector3f(this.easeOutQuart(vector3f2.x), this.easeOutQuart(vector3f2.y), this.easeOutQuart(vector3f2.z)); + //伽马值修正 + vector3f2.lerp(vector3f5, 0F); + + //原来的代码: + //vector3f2.lerp(vector3f5, Math.max(0.0F, v - i)); + //方块底色,可以用来表现月光 + + //获取月相 + String moonType = WorldMoonPhasesSelector.getMoonType(); + //可能出现同步问题,如果这一行没能抢过实时渲染的线程,那就自己发送时间自己算 + if(moonType==null){ + LOGGER.info("moonType is null"); + WorldMoonPhasesSelector.setMoonType(clientWorld.getTimeOfDay()); + } + + //返回方块底色颜色浓淡的因子 + float factor = MoonlightController.calculateFactor(clientWorld.getTimeOfDay()); +// LOGGER.info("light factor is " +factor); + if(Objects.equals(moonType, "blueMoon")|| Objects.equals(moonType, "haloMoon")){ + //蓝色月亮渲染 +// LOGGER.info("Blue Moonlight rendering."); + vector3f2.lerp(new Vector3f(0F, 0F, factor), 0.04F); + } else if (Objects.equals(moonType, "harvestMoon")) { + //黄色月亮渲染 +// LOGGER.info("Yellow Moonlight rendering."); + vector3f2.lerp(new Vector3f(factor, factor, 0F), 0.04F); + } else if (Objects.equals(moonType, "bloodMoon")) { + //红色月亮渲染 +// LOGGER.info("Blood Moonlight rendering."); + vector3f2.lerp(new Vector3f(factor,0F, 0F), 0.04F); + }else { +// LOGGER.info("Normal Moonlight rendering."); + vector3f2.lerp(new Vector3f(0.75F, 0.75F, 0.75F), 0F); + } + + + + + + + clamp(vector3f2); + vector3f2.mul(255.0F); + int w = 255; + int x = (int)vector3f2.x(); + int y = (int)vector3f2.y(); + int z = (int)vector3f2.z(); + this.image.setColor(o, n, 0xFF000000 | z << 16 | y << 8 | x); + } + } + + this.texture.upload(); + this.client.getProfiler().pop(); + } + } + } +} diff --git a/src/main/java/com/equilibrium/mixin/loot_table/BlockLootTableMixin.java b/src/main/java/com/equilibrium/mixin/loot_table/BlockLootTableMixin.java new file mode 100644 index 0000000..2d45d1e --- /dev/null +++ b/src/main/java/com/equilibrium/mixin/loot_table/BlockLootTableMixin.java @@ -0,0 +1,49 @@ +package com.equilibrium.mixin.loot_table; + +import net.minecraft.block.*; +import net.minecraft.block.enums.BedPart; +import net.minecraft.block.enums.DoubleBlockHalf; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.data.server.loottable.BlockLootTableGenerator; +import net.minecraft.data.server.loottable.vanilla.VanillaBlockLootTableGenerator; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.item.Item; +import net.minecraft.item.Items; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.LootTable; +import net.minecraft.loot.condition.*; +import net.minecraft.loot.context.LootContext; +import net.minecraft.loot.entry.*; +import net.minecraft.loot.function.ApplyBonusLootFunction; +import net.minecraft.loot.function.CopyComponentsLootFunction; +import net.minecraft.loot.function.LimitCountLootFunction; +import net.minecraft.loot.function.SetCountLootFunction; +import net.minecraft.loot.operator.BoundedIntUnaryOperator; +import net.minecraft.loot.provider.number.ConstantLootNumberProvider; +import net.minecraft.loot.provider.number.UniformLootNumberProvider; +import net.minecraft.predicate.StatePredicate; +import net.minecraft.predicate.item.ItemPredicate; +import net.minecraft.registry.*; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.resource.featuretoggle.FeatureSet; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.List; +import java.util.Set; +import java.util.function.UnaryOperator; + + +import static com.equilibrium.MITEequilibrium.LOGGER; +import static net.minecraft.util.PathUtil.validatePath; + +@Mixin(AbstractBlock.class) +public abstract class BlockLootTableMixin{ + +} diff --git a/src/main/java/com/equilibrium/test.java b/src/main/java/com/equilibrium/test.java index 399a5a2..f7827d0 100644 --- a/src/main/java/com/equilibrium/test.java +++ b/src/main/java/com/equilibrium/test.java @@ -1,9 +1,18 @@ package com.equilibrium; +import com.equilibrium.util.ColorAdjuster; +import com.equilibrium.util.MoonlightController; import net.minecraft.world.dimension.NetherPortal; public class test { + public static void main(String[] args) { - System.out.println(1); + System.out.println(MoonlightController.calculateFactor(22331)); } + + } + + + + diff --git a/src/main/java/com/equilibrium/util/ColorAdjuster.java b/src/main/java/com/equilibrium/util/ColorAdjuster.java new file mode 100644 index 0000000..020b442 --- /dev/null +++ b/src/main/java/com/equilibrium/util/ColorAdjuster.java @@ -0,0 +1,44 @@ +package com.equilibrium.util; + +public class ColorAdjuster { + private static int color; + + // 设置颜色 + public static void setColor(int color) { + ColorAdjuster.color = color; + } + + // 增加红色通道的值 + public static int increaseRedComponent(int redIncrement) { + int red = (color >> 16) & 0xFF; + red = Math.min(255, red + redIncrement); + return (color & 0x00FFFF) | (red << 16); + } + + // 增加绿色通道的值 + public static int increaseGreenComponent(int greenIncrement) { + int green = (color >> 8) & 0xFF; + green = Math.min(255, green + greenIncrement); + return (color & 0xFF00FF) | (green << 8); + } + + // 增加蓝色通道的值 + public static int increaseBlueComponent(int blueIncrement) { + int blue = color & 0xFF; + blue = Math.min(255, blue + blueIncrement); + return (color & 0xFFFF00) | blue; + } + + // 调整颜色 + public static int adjustColor(int color, int redIncrement, int greenIncrement, int blueIncrement) { + setColor(color); + + int newRed = increaseRedComponent(redIncrement); + int newGreen = increaseGreenComponent(greenIncrement); + int newBlue = increaseBlueComponent(blueIncrement); + + return newRed | newGreen | newBlue; + } +} + + diff --git a/src/main/java/com/equilibrium/util/LootTableModifier.java b/src/main/java/com/equilibrium/util/LootTableModifier.java new file mode 100644 index 0000000..f0c7c3a --- /dev/null +++ b/src/main/java/com/equilibrium/util/LootTableModifier.java @@ -0,0 +1,49 @@ +package com.equilibrium.util; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.JsonOps; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import net.fabricmc.fabric.api.event.Event; +import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; +import net.fabricmc.fabric.api.loot.v2.LootTableEvents; +import net.minecraft.block.Blocks; +import net.minecraft.item.Items; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.LootTable; +import net.minecraft.loot.condition.SurvivesExplosionLootCondition; +import net.minecraft.loot.context.LootContextTypes; +import net.minecraft.loot.entry.ItemEntry; +import net.minecraft.util.Identifier; + +import java.io.FileReader; +import java.io.IOException; + +import static com.equilibrium.MITEequilibrium.LOGGER; + +public abstract class LootTableModifier { + + public static void modifierLootTables() { + LootTableEvents.REPLACE.register((key, original, source) -> { + if (Blocks.GRAVEL.getLootTableKey() == key && source.isBuiltin()) { + LootTable lootTable = LootTable.builder().build(); + return lootTable; + } + return original; + }); + } +} + + + + + + +// LootTable lootTable = LootTable.builder(). +// pool( +// new LootPool.Builder() +// .with(ItemEntry.builder(Items.DIAMOND)) +// .conditionally(SurvivesExplosionLootCondition.builder()) +// ).build(); +//LootTable lootTable = LootTable.CODEC.decode() diff --git a/src/main/java/com/equilibrium/util/MoonlightController.java b/src/main/java/com/equilibrium/util/MoonlightController.java new file mode 100644 index 0000000..66f8d02 --- /dev/null +++ b/src/main/java/com/equilibrium/util/MoonlightController.java @@ -0,0 +1,35 @@ +package com.equilibrium.util; + +public class MoonlightController { + + // 定义时间范围常量 + private static final long START_INCREASE = 12769; // 开始线性增加的时间 + private static final long END_INCREASE = 13702; // 结束线性增加的时间 + private static final long START_DECREASE = 22000; // 开始线性减少的时间 + private static final long END_DECREASE = 22812; // 结束线性减少的时间 + + /** + * 计算当前时间对应的因子值 + * @param totalTime 总时间(long类型) + * @return 因子值(float类型) + */ + public static float calculateFactor(long totalTime) { + // 计算当前天的时间(0-23999) + long timeOfDay = totalTime % 24000; + + // 根据当前时间范围计算因子值 + if (timeOfDay >= START_INCREASE && timeOfDay <= END_INCREASE) { + // 在线性增加时间段,因子值从0增加到1 + return (float) (timeOfDay - START_INCREASE) / (END_INCREASE - START_INCREASE); + } else if (timeOfDay > END_INCREASE && timeOfDay < START_DECREASE) { + // 在常量时间段,因子值为1 + return 1.0f; + } else if (timeOfDay >= START_DECREASE && timeOfDay <= END_DECREASE) { + // 在线性减少时间段,因子值从1减少到0 + return 1.0f - (float) (timeOfDay - START_DECREASE) / (END_DECREASE - START_DECREASE); + } else { + // 在其他时间段,因子值为0 + return 0.0f; + } + } +} diff --git a/src/main/java/com/equilibrium/util/WorldMoonPhasesSelector.java b/src/main/java/com/equilibrium/util/WorldMoonPhasesSelector.java index 5e42002..cd60ae8 100644 --- a/src/main/java/com/equilibrium/util/WorldMoonPhasesSelector.java +++ b/src/main/java/com/equilibrium/util/WorldMoonPhasesSelector.java @@ -3,7 +3,7 @@ import static com.equilibrium.MITEequilibrium.LOGGER; public class WorldMoonPhasesSelector { - private static String moonType; + private static String moonType=null; static boolean fullMoon; @@ -14,7 +14,7 @@ public class WorldMoonPhasesSelector { static boolean normalMoon; static boolean haloMoon; - public static void setMoonType(float time) { + public static void setMoonType(long time) { int day= getDay(time); //满月变种:黄月、血月、蓝月 diff --git a/src/main/java/com/equilibrium/world/dimension/UnderworldPortal.java b/src/main/java/com/equilibrium/world/dimension/UnderworldPortal.java index 3a41cff..e69de29 100644 --- a/src/main/java/com/equilibrium/world/dimension/UnderworldPortal.java +++ b/src/main/java/com/equilibrium/world/dimension/UnderworldPortal.java @@ -1,275 +0,0 @@ -package com.equilibrium.world.dimension; - -import com.equilibrium.block.ModBlocks; -import com.equilibrium.block.UnderworldPortalBlock; -import net.minecraft.block.*; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityDimensions; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.tag.BlockTags; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.*; -import net.minecraft.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; -import net.minecraft.world.BlockLocating; -import net.minecraft.world.World; -import net.minecraft.world.WorldAccess; -import net.minecraft.world.dimension.NetherPortal; -import net.minecraft.world.dimension.PortalManager; -import org.jetbrains.annotations.Nullable; - -import java.util.Optional; -import java.util.function.Predicate; - -public class UnderworldPortal { - private static final int MIN_WIDTH = 2; - public static final int MAX_WIDTH = 21; - private static final int MIN_HEIGHT = 3; - public static final int MAX_HEIGHT = 21; - private static final AbstractBlock.ContextPredicate IS_VALID_FRAME_BLOCK = (state, world, pos) -> state.isOf(Blocks.OBSIDIAN); - private static final float FALLBACK_THRESHOLD = 4.0F; - private static final double HEIGHT_STRETCH = 1.0; - private final WorldAccess world; - private final Direction.Axis axis; - private final Direction negativeDir; - private int foundPortalBlocks; - @Nullable - private BlockPos lowerCorner; - private int height; - private final int width; - - public static Optional getNewPortal(WorldAccess world, BlockPos pos, Direction.Axis axis) { - return getOrEmpty(world, pos, areaHelper -> areaHelper.isValid() && areaHelper.foundPortalBlocks == 0, axis); - } - - public static Optional getOrEmpty(WorldAccess world, BlockPos pos, Predicate validator, Direction.Axis axis) { - Optional optional = Optional.of(new UnderworldPortal(world, pos, axis)).filter(validator); - if (optional.isPresent()) { - return optional; - } else { - - Direction.Axis axis2 = axis == Direction.Axis.X ? Direction.Axis.Z : Direction.Axis.X; - return Optional.of(new UnderworldPortal(world, pos, axis2)).filter(validator); - } - } - - public UnderworldPortal(WorldAccess world, BlockPos pos, Direction.Axis axis) { - this.world = world; - this.axis = axis; - this.negativeDir = axis == Direction.Axis.X ? Direction.WEST : Direction.SOUTH; - this.lowerCorner = this.getLowerCorner(pos); - if (this.lowerCorner == null) { - this.lowerCorner = pos; - this.width = 1; - this.height = 1; - } else { - this.width = this.getWidth(); - if (this.width > 0) { - this.height = this.getHeight(); - } - } - } - - @Nullable - private BlockPos getLowerCorner(BlockPos pos) { - int i = Math.max(this.world.getBottomY(), pos.getY() - 21); - - while (pos.getY() > i && validStateInsidePortal(this.world.getBlockState(pos.down()))) { - pos = pos.down(); - } - - Direction direction = this.negativeDir.getOpposite(); - int j = this.getWidth(pos, direction) - 1; - return j < 0 ? null : pos.offset(direction, j); - } - - private int getWidth() { - int i = this.getWidth(this.lowerCorner, this.negativeDir); - return i >= 2 && i <= 21 ? i : 0; - } - - private int getWidth(BlockPos pos, Direction direction) { - BlockPos.Mutable mutable = new BlockPos.Mutable(); - - for (int i = 0; i <= 21; i++) { - mutable.set(pos).move(direction, i); - BlockState blockState = this.world.getBlockState(mutable); - if (!validStateInsidePortal(blockState)) { - if (IS_VALID_FRAME_BLOCK.test(blockState, this.world, mutable)) { - return i; - } - break; - } - - BlockState blockState2 = this.world.getBlockState(mutable.move(Direction.DOWN)); - if (!IS_VALID_FRAME_BLOCK.test(blockState2, this.world, mutable)) { - break; - } - } - - return 0; - } - - private int getHeight() { - BlockPos.Mutable mutable = new BlockPos.Mutable(); - int i = this.getPotentialHeight(mutable); - return i >= 3 && i <= 21 && this.isHorizontalFrameValid(mutable, i) ? i : 0; - } - - private boolean isHorizontalFrameValid(BlockPos.Mutable pos, int height) { - for (int i = 0; i < this.width; i++) { - BlockPos.Mutable mutable = pos.set(this.lowerCorner).move(Direction.UP, height).move(this.negativeDir, i); - if (!IS_VALID_FRAME_BLOCK.test(this.world.getBlockState(mutable), this.world, mutable)) { - return false; - } - } - - return true; - } - - private int getPotentialHeight(BlockPos.Mutable pos) { - for (int i = 0; i < 21; i++) { - pos.set(this.lowerCorner).move(Direction.UP, i).move(this.negativeDir, -1); - if (!IS_VALID_FRAME_BLOCK.test(this.world.getBlockState(pos), this.world, pos)) { - return i; - } - - pos.set(this.lowerCorner).move(Direction.UP, i).move(this.negativeDir, this.width); - if (!IS_VALID_FRAME_BLOCK.test(this.world.getBlockState(pos), this.world, pos)) { - return i; - } - - for (int j = 0; j < this.width; j++) { - pos.set(this.lowerCorner).move(Direction.UP, i).move(this.negativeDir, j); - BlockState blockState = this.world.getBlockState(pos); - if (!validStateInsidePortal(blockState)) { - return i; - } - - if (blockState.isOf(ModBlocks.UNDERWORLD_PORTAL)) { - this.foundPortalBlocks++; - } - } - } - - return 21; - } - - private static boolean validStateInsidePortal(BlockState state) { - return state.isAir() || state.isIn(BlockTags.FIRE) || state.isOf(ModBlocks.UNDERWORLD_PORTAL); - } - - public boolean isValid() { - return this.lowerCorner != null && this.width >= 2 && this.width <= 21 && this.height >= 3 && this.height <= 21; - } - - public void createPortal() { - /* - 规则:当传送门距离世界底部距离小于等于5时,传送门才可以被点亮为自定义的传送门方块 - 1、在主世界,建立在距离底部小于等于5格距离的传送门,将传送到地下世界 - 2、在地下世界,建立在距离底部小于等于5格距离的传送门,将传送到下界 - 3、在地下世界,建立在距离底部大于5格距离的传送门,将传送到主世界 - 4、在下界,任意位置的传送门,都将传送到地下世界 - */ - //记录当前注册的世界 - RegistryKey registryKey = ((ServerWorld) world).getRegistryKey(); - - //是否距离底部小于5格距离 - boolean locatedInBottom = getHeightFromBottom() <= 5; - - //是否是主世界 - boolean overworld = (getWorldDimension((ServerWorld) world) == World.OVERWORLD); - //是否是地下世界 - boolean underworld = (getWorldDimension((ServerWorld) world) == RegistryKey.of(RegistryKeys.WORLD, Identifier.of("miteequilibrium", "underworld"))); - - //是否为下界 - boolean netherworld = (getWorldDimension((ServerWorld) world) == World.NETHER); - - - if (locatedInBottom && overworld) { - //在主世界,建立在距离底部小于等于5格距离的传送门,将传送到地下世界 - setUnderworldPortalBlock(); - System.out.println("execute 1 "); - }else if ((!locatedInBottom) && underworld) { - //在地下世界,建立在距离底部大于5格距离的传送门,将传送到主世界 - setUnderworldPortalBlock(); - System.out.println("execute 2 "); - } - else{ - return; - - } - - } - - - public boolean wasAlreadyValid() { - return this.isValid() && this.foundPortalBlocks == this.width * this.height; - } - - public static Vec3d entityPosInPortal(BlockLocating.Rectangle portalRect, Direction.Axis portalAxis, Vec3d entityPos, EntityDimensions entityDimensions) { - double d = (double)portalRect.width - (double)entityDimensions.width(); - double e = (double)portalRect.height - (double)entityDimensions.height(); - BlockPos blockPos = portalRect.lowerLeft; - double g; - if (d > 0.0) { - double f = (double)blockPos.getComponentAlongAxis(portalAxis) + (double)entityDimensions.width() / 2.0; - g = MathHelper.clamp(MathHelper.getLerpProgress(entityPos.getComponentAlongAxis(portalAxis) - f, 0.0, d), 0.0, 1.0); - } else { - g = 0.5; - } - - double f; - if (e > 0.0) { - Direction.Axis axis = Direction.Axis.Y; - f = MathHelper.clamp(MathHelper.getLerpProgress(entityPos.getComponentAlongAxis(axis) - (double)blockPos.getComponentAlongAxis(axis), 0.0, e), 0.0, 1.0); - } else { - f = 0.0; - } - - Direction.Axis axis = portalAxis == Direction.Axis.X ? Direction.Axis.Z : Direction.Axis.X; - double h = entityPos.getComponentAlongAxis(axis) - ((double)blockPos.getComponentAlongAxis(axis) + 0.5); - return new Vec3d(g, f, h); - } - - public static Vec3d findOpenPosition(Vec3d fallback, ServerWorld world, Entity entity, EntityDimensions dimensions) { - if (!(dimensions.width() > 4.0F) && !(dimensions.height() > 4.0F)) { - double d = (double)dimensions.height() / 2.0; - Vec3d vec3d = fallback.add(0.0, d, 0.0); - VoxelShape voxelShape = VoxelShapes.cuboid(Box.of(vec3d, (double)dimensions.width(), 0.0, (double)dimensions.width()).stretch(0.0, 1.0, 0.0).expand(1.0E-6)); - Optional optional = world.findClosestCollision( - entity, voxelShape, vec3d, (double)dimensions.width(), (double)dimensions.height(), (double)dimensions.width() - ); - Optional optional2 = optional.map(pos -> pos.subtract(0.0, d, 0.0)); - return (Vec3d)optional2.orElse(fallback); - } else { - return fallback; - } - } - - private int getHeightFromBottom(){ - if (this.lowerCorner != null) { - return Math.abs(world.getBottomY()-this.lowerCorner.getY()); - } - else{ - System.out.println("It might the portal doesn't exist"); - return 384; - } - } - public RegistryKey getWorldDimension(ServerWorld world) { - return world.getRegistryKey(); - //RegistryKey registryKey = world.getRegistryKey() == World.NETHER ? World.OVERWORLD : World.NETHER; - } - - private void setUnderworldPortalBlock() { - BlockState blockState = ModBlocks.UNDERWORLD_PORTAL.getDefaultState().with(UnderworldPortalBlock.AXIS,this.axis); - BlockPos.iterate(this.lowerCorner, this.lowerCorner.offset(Direction.UP, this.height - 1).offset(this.negativeDir, this.width - 1)) - .forEach(pos -> this.world.setBlockState(pos, blockState, Block.NOTIFY_LISTENERS | Block.FORCE_STATE)); - } - - - - -} diff --git a/src/main/java/com/equilibrium/worldgen/ModOreGenerator.java b/src/main/java/com/equilibrium/worldgen/ModPlacementGenerator.java similarity index 78% rename from src/main/java/com/equilibrium/worldgen/ModOreGenerator.java rename to src/main/java/com/equilibrium/worldgen/ModPlacementGenerator.java index d8ea633..a9475ed 100644 --- a/src/main/java/com/equilibrium/worldgen/ModOreGenerator.java +++ b/src/main/java/com/equilibrium/worldgen/ModPlacementGenerator.java @@ -1,25 +1,42 @@ package com.equilibrium.worldgen; import net.fabricmc.fabric.api.biome.v1.BiomeModifications; -import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.util.Identifier; -import net.minecraft.world.dimension.DimensionOptions; import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.feature.PlacedFeature; -public class ModOreGenerator { +public class ModPlacementGenerator { //为主世界添加的矿物 public static final RegistryKey CUSTOM_ORE_OVERWORLD = RegistryKey.of(RegistryKeys.PLACED_FEATURE, Identifier.of("miteequilibrium","ore_custom_overworld")); + + + + + //为地下世界添加的矿物 public static final RegistryKey CUSTOM_ORE_UNDERWORLD = RegistryKey.of(RegistryKeys.PLACED_FEATURE, Identifier.of("miteequilibrium","ore_custom_underworld")); + public static final RegistryKey ADAMANTIUM_ORE = RegistryKey.of(RegistryKeys.PLACED_FEATURE, + Identifier.of("miteequilibrium","adamantium_ore_underworld")); + + //为地下世界添加的地物 + + public static final RegistryKey HUGE_BROWN_MUSHROOM = RegistryKey.of(RegistryKeys.PLACED_FEATURE, + Identifier.of("miteequilibrium","mushroom_island_vegetation")); + + public static final RegistryKey TINY_BROWN_MUSHROOM = RegistryKey.of(RegistryKeys.PLACED_FEATURE, + Identifier.of("miteequilibrium","brown_mushroom_normal")); + + + + + + //为下界添加的矿物 public static final RegistryKey CUSTOM_ORE_NETHER = RegistryKey.of(RegistryKeys.PLACED_FEATURE, Identifier.of("miteequilibrium","ore_custom_nether")); @@ -37,8 +54,17 @@ public static void registerModOre() { BiomeModifications.addFeature(context -> context.canGenerateIn(UnderWorldDimensionOptions.OVERWORLD), GenerationStep.Feature.UNDERGROUND_ORES, CUSTOM_ORE_OVERWORLD); + + //地下世界添加矿物 BiomeModifications.addFeature(context -> context.canGenerateIn(UnderWorldDimensionOptions.UNDERWORLD), GenerationStep.Feature.UNDERGROUND_ORES, CUSTOM_ORE_UNDERWORLD); + BiomeModifications.addFeature(context -> context.canGenerateIn(UnderWorldDimensionOptions.UNDERWORLD), GenerationStep.Feature.UNDERGROUND_ORES, ADAMANTIUM_ORE); + + //地下世界添加蘑菇,注意选对Feather标签,见生物群系数据格式 + BiomeModifications.addFeature(context -> context.canGenerateIn(UnderWorldDimensionOptions.UNDERWORLD), GenerationStep.Feature.SURFACE_STRUCTURES, HUGE_BROWN_MUSHROOM); + BiomeModifications.addFeature(context -> context.canGenerateIn(UnderWorldDimensionOptions.UNDERWORLD), GenerationStep.Feature.SURFACE_STRUCTURES, TINY_BROWN_MUSHROOM); + + //下界添加矿物 diff --git a/src/main/resources/assets/miteequilibrium/blockstates/adamantium_block.json b/src/main/resources/assets/miteequilibrium/blockstates/adamantium_block.json new file mode 100644 index 0000000..a55812f --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/adamantium_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/adamantium_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/adamantium_ore.json b/src/main/resources/assets/miteequilibrium/blockstates/adamantium_ore.json new file mode 100644 index 0000000..2144510 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/adamantium_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/adamantium_ore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/ancient_metal_block.json b/src/main/resources/assets/miteequilibrium/blockstates/ancient_metal_block.json new file mode 100644 index 0000000..49138e8 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/ancient_metal_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/ancient_metal_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/copper_block.json b/src/main/resources/assets/miteequilibrium/blockstates/copper_block.json new file mode 100644 index 0000000..bd4ab72 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/copper_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/copper_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/copper_ore.json b/src/main/resources/assets/miteequilibrium/blockstates/copper_ore.json new file mode 100644 index 0000000..1ccf60f --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/copper_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/copper_ore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/gold_block.json b/src/main/resources/assets/miteequilibrium/blockstates/gold_block.json new file mode 100644 index 0000000..ef5e82a --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/gold_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/gold_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/gold_ore.json b/src/main/resources/assets/miteequilibrium/blockstates/gold_ore.json new file mode 100644 index 0000000..fb86f30 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/gold_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/gold_ore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/mithril_block.json b/src/main/resources/assets/miteequilibrium/blockstates/mithril_block.json new file mode 100644 index 0000000..a8c1881 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/mithril_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/mithril_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/mithril_ore.json b/src/main/resources/assets/miteequilibrium/blockstates/mithril_ore.json new file mode 100644 index 0000000..9873a4a --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/mithril_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/mithril_ore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/silver_block.json b/src/main/resources/assets/miteequilibrium/blockstates/silver_block.json new file mode 100644 index 0000000..fcb8753 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/silver_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/silver_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/blockstates/silver_ore.json b/src/main/resources/assets/miteequilibrium/blockstates/silver_ore.json new file mode 100644 index 0000000..1eefd40 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/blockstates/silver_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "miteequilibrium:block/silver_ore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/adamantium_block.json b/src/main/resources/assets/miteequilibrium/models/block/adamantium_block.json new file mode 100644 index 0000000..3f55f36 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/adamantium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/adamantium_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/adamantium_ore.json b/src/main/resources/assets/miteequilibrium/models/block/adamantium_ore.json new file mode 100644 index 0000000..1767efe --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/adamantium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/adamantium_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/ancient_metal_block.json b/src/main/resources/assets/miteequilibrium/models/block/ancient_metal_block.json new file mode 100644 index 0000000..c1eed83 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/ancient_metal_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/ancient_metal_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/copper_block.json b/src/main/resources/assets/miteequilibrium/models/block/copper_block.json new file mode 100644 index 0000000..3e53d16 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/copper_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/copper_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/copper_ore.json b/src/main/resources/assets/miteequilibrium/models/block/copper_ore.json new file mode 100644 index 0000000..6e4b017 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/copper_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/copper_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/gold_block.json b/src/main/resources/assets/miteequilibrium/models/block/gold_block.json new file mode 100644 index 0000000..f2deec0 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/gold_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/gold_ore.json b/src/main/resources/assets/miteequilibrium/models/block/gold_ore.json new file mode 100644 index 0000000..ce9c121 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/gold_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/gold_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/mithril_block.json b/src/main/resources/assets/miteequilibrium/models/block/mithril_block.json new file mode 100644 index 0000000..84b7b01 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/mithril_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/mithril_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/mithril_ore.json b/src/main/resources/assets/miteequilibrium/models/block/mithril_ore.json new file mode 100644 index 0000000..88fde58 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/mithril_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/mithril_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/silver_block.json b/src/main/resources/assets/miteequilibrium/models/block/silver_block.json new file mode 100644 index 0000000..9b904e2 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/silver_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/silver_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/block/silver_ore.json b/src/main/resources/assets/miteequilibrium/models/block/silver_ore.json new file mode 100644 index 0000000..7941fb9 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/block/silver_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "miteequilibrium:block/silver_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/adamantium_block.json b/src/main/resources/assets/miteequilibrium/models/item/adamantium_block.json new file mode 100644 index 0000000..b30e6a1 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/adamantium_block.json @@ -0,0 +1,3 @@ +{ + "parent": "miteequilibrium:block/adamantium_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/adamantium_nugget.json b/src/main/resources/assets/miteequilibrium/models/item/adamantium_nugget.json new file mode 100644 index 0000000..89da20a --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/adamantium_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "miteequilibrium:item/adamantium_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/adamantium_ore.json b/src/main/resources/assets/miteequilibrium/models/item/adamantium_ore.json new file mode 100644 index 0000000..577dbff --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/adamantium_ore.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/adamantium_ore" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/ancient_metal_block.json b/src/main/resources/assets/miteequilibrium/models/item/ancient_metal_block.json new file mode 100644 index 0000000..d320693 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/ancient_metal_block.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/ancient_metal_block" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/ancient_metal_nugget.json b/src/main/resources/assets/miteequilibrium/models/item/ancient_metal_nugget.json new file mode 100644 index 0000000..31a4880 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/ancient_metal_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "miteequilibrium:item/ancient_metal_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/copper_block.json b/src/main/resources/assets/miteequilibrium/models/item/copper_block.json new file mode 100644 index 0000000..7f8975c --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/copper_block.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/copper_block" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/copper_nugget.json b/src/main/resources/assets/miteequilibrium/models/item/copper_nugget.json new file mode 100644 index 0000000..f57fe27 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/copper_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "miteequilibrium:item/copper_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/copper_ore.json b/src/main/resources/assets/miteequilibrium/models/item/copper_ore.json new file mode 100644 index 0000000..fefca13 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/copper_ore.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/copper_ore" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/gold_block.json b/src/main/resources/assets/miteequilibrium/models/item/gold_block.json new file mode 100644 index 0000000..b44d1fd --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/gold_block.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/gold_block" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/gold_nugget.json b/src/main/resources/assets/miteequilibrium/models/item/gold_nugget.json new file mode 100644 index 0000000..435aa48 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/gold_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "miteequilibrium:item/gold_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/gold_ore.json b/src/main/resources/assets/miteequilibrium/models/item/gold_ore.json new file mode 100644 index 0000000..7c207e0 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/gold_ore.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/gold_ore" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/mithril_block.json b/src/main/resources/assets/miteequilibrium/models/item/mithril_block.json new file mode 100644 index 0000000..489a79f --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/mithril_block.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/mithril_block" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/mithril_nugget.json b/src/main/resources/assets/miteequilibrium/models/item/mithril_nugget.json new file mode 100644 index 0000000..dae0c5e --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/mithril_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "miteequilibrium:item/mithril_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/mithril_ore.json b/src/main/resources/assets/miteequilibrium/models/item/mithril_ore.json new file mode 100644 index 0000000..0bb350e --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/mithril_ore.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/mithril_ore" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/silver_block.json b/src/main/resources/assets/miteequilibrium/models/item/silver_block.json new file mode 100644 index 0000000..42754f4 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/silver_block.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/silver_block" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/silver_nugget.json b/src/main/resources/assets/miteequilibrium/models/item/silver_nugget.json new file mode 100644 index 0000000..11ce8ae --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/silver_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "miteequilibrium:item/silver_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/models/item/silver_ore.json b/src/main/resources/assets/miteequilibrium/models/item/silver_ore.json new file mode 100644 index 0000000..db5d197 --- /dev/null +++ b/src/main/resources/assets/miteequilibrium/models/item/silver_ore.json @@ -0,0 +1,4 @@ +{ + "parent": "miteequilibrium:block/silver_ore" + +} \ No newline at end of file diff --git a/src/main/resources/assets/miteequilibrium/textures/block/adamantium_block.png b/src/main/resources/assets/miteequilibrium/textures/block/adamantium_block.png new file mode 100644 index 0000000..76cea18 Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/adamantium_block.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/adamantium_ore.png b/src/main/resources/assets/miteequilibrium/textures/block/adamantium_ore.png new file mode 100644 index 0000000..d9fd00c Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/adamantium_ore.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/ancient_metal_block.png b/src/main/resources/assets/miteequilibrium/textures/block/ancient_metal_block.png new file mode 100644 index 0000000..4b20100 Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/ancient_metal_block.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/copper_block.png b/src/main/resources/assets/miteequilibrium/textures/block/copper_block.png new file mode 100644 index 0000000..be8c338 Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/copper_block.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/copper_ore.png b/src/main/resources/assets/miteequilibrium/textures/block/copper_ore.png new file mode 100644 index 0000000..dcc48ae Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/copper_ore.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/gold_block.png b/src/main/resources/assets/miteequilibrium/textures/block/gold_block.png new file mode 100644 index 0000000..2c6bba4 Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/gold_block.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/gold_ore.png b/src/main/resources/assets/miteequilibrium/textures/block/gold_ore.png new file mode 100644 index 0000000..b1a7a55 Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/gold_ore.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/mithril_block.png b/src/main/resources/assets/miteequilibrium/textures/block/mithril_block.png new file mode 100644 index 0000000..e611775 Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/mithril_block.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/mithril_ore.png b/src/main/resources/assets/miteequilibrium/textures/block/mithril_ore.png new file mode 100644 index 0000000..019bd86 Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/mithril_ore.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/silver_block.png b/src/main/resources/assets/miteequilibrium/textures/block/silver_block.png new file mode 100644 index 0000000..e335b4b Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/silver_block.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/block/silver_ore.png b/src/main/resources/assets/miteequilibrium/textures/block/silver_ore.png new file mode 100644 index 0000000..4592658 Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/block/silver_ore.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/entity/invisible_stalker.png b/src/main/resources/assets/miteequilibrium/textures/entity/invisible_stalker.png index e0f9b7b..ca4c96b 100644 Binary files a/src/main/resources/assets/miteequilibrium/textures/entity/invisible_stalker.png and b/src/main/resources/assets/miteequilibrium/textures/entity/invisible_stalker.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/item/adamantium_nugget.png b/src/main/resources/assets/miteequilibrium/textures/item/adamantium_nugget.png new file mode 100644 index 0000000..3cfa98c Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/item/adamantium_nugget.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/item/ancient_metal_nugget.png b/src/main/resources/assets/miteequilibrium/textures/item/ancient_metal_nugget.png new file mode 100644 index 0000000..02304fa Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/item/ancient_metal_nugget.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/item/copper_nugget.png b/src/main/resources/assets/miteequilibrium/textures/item/copper_nugget.png new file mode 100644 index 0000000..2892fbf Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/item/copper_nugget.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/item/gold_nugget.png b/src/main/resources/assets/miteequilibrium/textures/item/gold_nugget.png new file mode 100644 index 0000000..6833ebc Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/item/gold_nugget.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/item/iron_nugget.png b/src/main/resources/assets/miteequilibrium/textures/item/iron_nugget.png new file mode 100644 index 0000000..f71193e Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/item/iron_nugget.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/item/mithril_nugget.png b/src/main/resources/assets/miteequilibrium/textures/item/mithril_nugget.png new file mode 100644 index 0000000..766b5a2 Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/item/mithril_nugget.png differ diff --git a/src/main/resources/assets/miteequilibrium/textures/item/silver_nugget.png b/src/main/resources/assets/miteequilibrium/textures/item/silver_nugget.png new file mode 100644 index 0000000..b0bc80c Binary files /dev/null and b/src/main/resources/assets/miteequilibrium/textures/item/silver_nugget.png differ diff --git a/src/main/resources/data/miteequilibrium/loot_table/blocks/gravel.json b/src/main/resources/data/miteequilibrium/loot_table/blocks/gravel.json new file mode 100644 index 0000000..82a68cf --- /dev/null +++ b/src/main/resources/data/miteequilibrium/loot_table/blocks/gravel.json @@ -0,0 +1,68 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "minecraft:stone" + }, + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "chances": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "name": "minecraft:stone" + }, + { + "type": "minecraft:item", + "name": "minecraft:stone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "minecraft:blocks/gravel" +} \ No newline at end of file diff --git a/src/main/resources/data/miteequilibrium/worldgen/biome/underworld.json b/src/main/resources/data/miteequilibrium/worldgen/biome/underworld.json index 56f1e5c..05e01c6 100644 --- a/src/main/resources/data/miteequilibrium/worldgen/biome/underworld.json +++ b/src/main/resources/data/miteequilibrium/worldgen/biome/underworld.json @@ -11,5 +11,26 @@ "spawners": {}, "spawn_costs": {}, "carvers": {}, - "features": [] + "features": [ + [], + [ + ], + [ + ], + [ + ], + [], + [], + [ + ], + [], + [ + "minecraft:spring_water", + "minecraft:spring_lava" + ], + [ + ], + [ + ] + ] } diff --git a/src/main/resources/data/miteequilibrium/worldgen/configured_feature/adamantium_ore_underworld.json b/src/main/resources/data/miteequilibrium/worldgen/configured_feature/adamantium_ore_underworld.json new file mode 100644 index 0000000..33edd8f --- /dev/null +++ b/src/main/resources/data/miteequilibrium/worldgen/configured_feature/adamantium_ore_underworld.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:ore", + "config": { + "size": 5, + "discard_chance_on_air_exposure": 0, + "targets": [ + { + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + }, + "state": { + "Name": "miteequilibrium:adamantium_ore" + } + } + ] + } +} diff --git a/src/main/resources/data/miteequilibrium/worldgen/configured_feature/brown_mushroom_normal.json b/src/main/resources/data/miteequilibrium/worldgen/configured_feature/brown_mushroom_normal.json new file mode 100644 index 0000000..ee54e05 --- /dev/null +++ b/src/main/resources/data/miteequilibrium/worldgen/configured_feature/brown_mushroom_normal.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:random_patch", + "config": { + "feature": { + "feature": { + "type": "minecraft:simple_block", + "config": { + "to_place": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:brown_mushroom" + } + } + } + }, + "placement": [ + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:matching_blocks", + "blocks": "minecraft:air" + } + } + ] + }, + "tries": 32, + "xz_spread": 16, + "y_spread": 0 + } +} \ No newline at end of file diff --git a/src/main/resources/data/miteequilibrium/worldgen/configured_feature/mushroom_island_vegetation.json b/src/main/resources/data/miteequilibrium/worldgen/configured_feature/mushroom_island_vegetation.json new file mode 100644 index 0000000..4b8ac2d --- /dev/null +++ b/src/main/resources/data/miteequilibrium/worldgen/configured_feature/mushroom_island_vegetation.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:huge_brown_mushroom", + "config": { + "cap_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:brown_mushroom_block", + "Properties": { + "down": "false", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + } + } + }, + "foliage_radius": 4, + "stem_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "minecraft:mushroom_stem", + "Properties": { + "down": "false", + "east": "true", + "north": "true", + "south": "true", + "up": "false", + "west": "true" + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/miteequilibrium/worldgen/noise_settings/cave.json b/src/main/resources/data/miteequilibrium/worldgen/noise_settings/cave.json new file mode 100644 index 0000000..e7f18ff --- /dev/null +++ b/src/main/resources/data/miteequilibrium/worldgen/noise_settings/cave.json @@ -0,0 +1,2277 @@ +{ + "sea_level": 32, + "disable_mob_generation": false, + "aquifers_enabled": false, + "ore_veins_enabled": false, + "legacy_random_source": true, + "default_block": { + "Name": "minecraft:stone" + }, + "default_fluid": { + "Name": "minecraft:water", + "Properties": { + "level": "0" + } + }, + "noise": { + "min_y": -64, + "height": 192, + "size_horizontal": 1, + "size_vertical": 2 + }, + "noise_router": { + "barrier": 0, + "fluid_level_floodedness": 0, + "fluid_level_spread": 0, + "lava": 0, + "temperature": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:temperature", + "xz_scale": 0.25, + "y_scale": 0, + "shift_x": "minecraft:shift_x", + "shift_y": 0, + "shift_z": "minecraft:shift_z" + }, + "vegetation": { + "type": "minecraft:shifted_noise", + "noise": "minecraft:vegetation", + "xz_scale": 0.25, + "y_scale": 0, + "shift_x": "minecraft:shift_x", + "shift_y": 0, + "shift_z": "minecraft:shift_z" + }, + "continents": 0, + "erosion": 0, + "depth": 0, + "ridges": 0, + "initial_density_without_jaggedness": 0, + "final_density": { + "type": "minecraft:squeeze", + "argument": { + "type": "minecraft:mul", + "argument1": 0.64, + "argument2": { + "type": "minecraft:interpolated", + "argument": { + "type": "minecraft:blend_density", + "argument": { + "type": "minecraft:add", + "argument1": 2.5, + "argument2": { + "type": "minecraft:mul", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_y": -72, + "to_y": -40, + "from_value": 0, + "to_value": 1 + }, + "argument2": { + "type": "minecraft:add", + "argument1": -2.5, + "argument2": { + "type": "minecraft:add", + "argument1": 0.9375, + "argument2": { + "type": "minecraft:mul", + "argument1": { + "type": "minecraft:y_clamped_gradient", + "from_y": 104, + "to_y": 128, + "from_value": 1, + "to_value": 0 + }, + "argument2": { + "type": "minecraft:add", + "argument1": -0.9375, + "argument2": "minecraft:nether/base_3d_noise" + } + } + } + } + } + } + } + } + } + }, + "vein_toggle": 0, + "vein_ridged": 0, + "vein_gap": 0 + }, + "spawn_target": [], + "surface_rule": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:vertical_gradient", + "random_name": "minecraft:bedrock_roof", + "true_at_and_below": { + "below_top": 5 + }, + "false_at_and_above": { + "below_top": 0 + } + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:bedrock" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:vertical_gradient", + "random_name": "minecraft:bedrock_floor", + "true_at_and_below": { + "above_bottom": 0 + }, + "false_at_and_above": { + "above_bottom": 5 + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:bedrock" + } + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:wooded_badlands" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 97 + }, + "surface_depth_multiplier": 2, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.909, + "max_threshold": -0.5454 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:coarse_dirt" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.1818, + "max_threshold": 0.1818 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:coarse_dirt" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.5454, + "max_threshold": 0.909 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:coarse_dirt" + } + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:grass_block", + "Properties": { + "snowy": "false" + } + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:dirt" + } + } + ] + } + ] + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:swamp" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 62 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 63 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + } + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface_swamp", + "min_threshold": 0, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:water", + "Properties": { + "level": "0" + } + } + } + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:mangrove_swamp" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 60 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 63 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + } + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface_swamp", + "min_threshold": 0, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:water", + "Properties": { + "level": "0" + } + } + } + } + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:badlands", + "minecraft:eroded_badlands", + "minecraft:wooded_badlands" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 256 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:orange_terracotta" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 74 + }, + "surface_depth_multiplier": 1, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.909, + "max_threshold": -0.5454 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:terracotta" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.1818, + "max_threshold": 0.1818 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:terracotta" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.5454, + "max_threshold": 0.909 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:terracotta" + } + } + }, + { + "type": "minecraft:bandlands" + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -1, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:red_sandstone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:red_sand" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:hole" + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:orange_terracotta" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -6, + "surface_depth_multiplier": -1, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:white_terracotta" + } + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + ] + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 63 + }, + "surface_depth_multiplier": -1, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 63 + }, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:not", + "invert": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 74 + }, + "surface_depth_multiplier": 1, + "add_stone_depth": true + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:orange_terracotta" + } + } + } + }, + { + "type": "minecraft:bandlands" + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": true, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -6, + "surface_depth_multiplier": -1, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:white_terracotta" + } + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -1, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:frozen_ocean", + "minecraft:deep_frozen_ocean" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:hole" + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:air" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:temperature" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:ice" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:water", + "Properties": { + "level": "0" + } + } + } + ] + } + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:frozen_peaks" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:steep" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:packed_ice" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:packed_ice", + "min_threshold": 0, + "max_threshold": 0.2 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:packed_ice" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:ice", + "min_threshold": 0, + "max_threshold": 0.025 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:ice" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:snow_block" + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:snowy_slopes" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:steep" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:powder_snow", + "min_threshold": 0.35, + "max_threshold": 0.6 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:powder_snow" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:snow_block" + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:jagged_peaks" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:steep" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:snow_block" + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:grove" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:powder_snow", + "min_threshold": 0.35, + "max_threshold": 0.6 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:powder_snow" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:snow_block" + } + } + } + ] + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:stony_peaks" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:calcite", + "min_threshold": -0.0125, + "max_threshold": 0.0125 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:calcite" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:stony_shore" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:gravel", + "min_threshold": -0.05, + "max_threshold": 0.05 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + ] + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:windswept_hills" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.12121212121212122, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:warm_ocean", + "minecraft:beach", + "minecraft:snowy_beach" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sandstone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sand" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:desert" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sandstone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sand" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:dripstone_caves" + ] + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + } + ] + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:windswept_savanna" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.21212121212121213, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.06060606060606061, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:coarse_dirt" + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:windswept_gravelly_hills" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.24242424242424243, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.12121212121212122, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.12121212121212122, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:grass_block", + "Properties": { + "snowy": "false" + } + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:dirt" + } + } + ] + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + ] + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:old_growth_pine_taiga", + "minecraft:old_growth_spruce_taiga" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.21212121212121213, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:coarse_dirt" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.11515151515151514, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:podzol", + "Properties": { + "snowy": "false" + } + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:ice_spikes" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:snow_block" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:mangrove_swamp" + ] + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:mud" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:mushroom_fields" + ] + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:mycelium", + "Properties": { + "snowy": "false" + } + } + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:grass_block", + "Properties": { + "snowy": "false" + } + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:dirt" + } + } + ] + } + ] + } + ] + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": -6, + "surface_depth_multiplier": -1, + "add_stone_depth": true + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:frozen_ocean", + "minecraft:deep_frozen_ocean" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:hole" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:water", + "Properties": { + "level": "0" + } + } + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": true, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:frozen_peaks" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:steep" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:packed_ice" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:packed_ice", + "min_threshold": -0.5, + "max_threshold": 0.2 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:packed_ice" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:ice", + "min_threshold": -0.0625, + "max_threshold": 0.025 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:ice" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:snow_block" + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:snowy_slopes" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:steep" + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:powder_snow", + "min_threshold": 0.45, + "max_threshold": 0.58 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:powder_snow" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:snow_block" + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:jagged_peaks" + ] + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:grove" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:powder_snow", + "min_threshold": 0.45, + "max_threshold": 0.58 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:powder_snow" + } + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:dirt" + } + } + ] + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:stony_peaks" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:calcite", + "min_threshold": -0.0125, + "max_threshold": 0.0125 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:calcite" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:stony_shore" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:gravel", + "min_threshold": -0.05, + "max_threshold": 0.05 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + ] + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:windswept_hills" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.12121212121212122, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:warm_ocean", + "minecraft:beach", + "minecraft:snowy_beach" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sandstone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sand" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:desert" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sandstone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sand" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:dripstone_caves" + ] + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + } + ] + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:windswept_savanna" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.21212121212121213, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:windswept_gravelly_hills" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.24242424242424243, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0.12121212121212122, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.12121212121212122, + "max_threshold": 1.7976931348623157e+308 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:dirt" + } + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + ] + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:mangrove_swamp" + ] + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:mud" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:dirt" + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:warm_ocean", + "minecraft:beach", + "minecraft:snowy_beach" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": true, + "secondary_depth_range": 6 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sandstone" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:desert" + ] + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": true, + "secondary_depth_range": 30 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sandstone" + } + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:frozen_peaks", + "minecraft:jagged_peaks" + ] + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "minecraft:warm_ocean", + "minecraft:lukewarm_ocean", + "minecraft:deep_lukewarm_ocean" + ] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sandstone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:sand" + } + } + ] + } + }, + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "ceiling", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:stone" + } + } + }, + { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + ] + } + ] + } + } + ] + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:vertical_gradient", + "random_name": "minecraft:deepslate", + "true_at_and_below": { + "absolute": 0 + }, + "false_at_and_above": { + "absolute": 8 + } + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:deepslate", + "Properties": { + "axis": "y" + } + } + } + } + ] + } +} diff --git a/src/main/resources/data/miteequilibrium/worldgen/noise_settings/underworld.json b/src/main/resources/data/miteequilibrium/worldgen/noise_settings/underworld.json index 5f282de..36a25be 100644 --- a/src/main/resources/data/miteequilibrium/worldgen/noise_settings/underworld.json +++ b/src/main/resources/data/miteequilibrium/worldgen/noise_settings/underworld.json @@ -147,7 +147,7 @@ "invert": { "type": "minecraft:y_above", "anchor": { - "absolute": 108 + "absolute": 64 }, "surface_depth_multiplier": 2, "add_stone_depth": false @@ -158,7 +158,7 @@ "if_true": { "type": "minecraft:y_above", "anchor": { - "absolute": 113 + "absolute": 69 }, "surface_depth_multiplier": -1, "add_stone_depth": false @@ -229,11 +229,136 @@ }, { "type": "minecraft:sequence", - "sequence": [] - }, - { - "type": "minecraft:sequence", - "sequence": [] + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:cave_cheese", + "min_threshold": -0.909, + "max_threshold": -0.5454 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:y_above", + "anchor": { + "absolute": 97 + }, + "surface_depth_multiplier": 1, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:water", + "offset": 0, + "surface_depth_multiplier": 0, + "add_stone_depth": false + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:mycelium", + "Properties": { + "snowy": "false" + } + } + } + } + ] + } + ] + } + } + } + ] + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 2, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.514, + "max_threshold": 0.114 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:andesite" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": -0.114, + "max_threshold": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:gravel" + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "minecraft:surface", + "min_threshold": 0, + "max_threshold": 0.114 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:mycelium" + } + } + } + ] + } + ] + } + } + ] } ] } diff --git a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/adamantium_ore_underworld.json b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/adamantium_ore_underworld.json new file mode 100644 index 0000000..3bbfe47 --- /dev/null +++ b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/adamantium_ore_underworld.json @@ -0,0 +1,27 @@ +{ + "feature": "miteequilibrium:adamantium_ore_underworld", + "placement": [ + { + "type": "minecraft:count", + "count": 2 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:biased_to_bottom", + "min_inclusive": { + "absolute": 144 + }, + "max_inclusive": { + "absolute": 196 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/brown_mushroom_normal.json b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/brown_mushroom_normal.json new file mode 100644 index 0000000..043fa73 --- /dev/null +++ b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/brown_mushroom_normal.json @@ -0,0 +1,60 @@ +{ + "feature": "miteequilibrium:brown_mushroom_normal", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:uniform", + "min_inclusive": 128, + "max_inclusive": 256 + } + }, + { + "type": "minecraft:random_offset", + "xz_spread": 4, + "y_spread": 0 + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": 0 + }, + "max_inclusive": { + "below_top": 0 + } + } + }, + { + "type": "minecraft:biome" + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:not", + "predicate": { + "type": "minecraft:matching_blocks", + "offset": [ + 0, + 0, + 0 + ], + "blocks": "minecraft:stone" + } + } + }, + { + "type": "minecraft:block_predicate_filter", + "predicate": { + "type": "minecraft:matching_blocks", + "offset": [ + 0, + 0, + 0 + ], + "blocks": "minecraft:mycelium" + } + } + ] +} diff --git a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/mushroom_island_vegetation.json b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/mushroom_island_vegetation.json new file mode 100644 index 0000000..a524a26 --- /dev/null +++ b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/mushroom_island_vegetation.json @@ -0,0 +1,27 @@ +{ + "feature": "miteequilibrium:mushroom_island_vegetation", + "placement": [ + { + "type": "minecraft:count", + "count": 256 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": 0 + }, + "max_inclusive": { + "below_top": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_end.json b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_end.json index 7053c27..f48685b 100644 --- a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_end.json +++ b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_end.json @@ -3,7 +3,7 @@ "placement": [ { "type": "minecraft:count", - "count": 20 + "count": 0 }, { "type": "minecraft:in_square" diff --git a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_nether.json b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_nether.json index cd6d02e..6e6bb10 100644 --- a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_nether.json +++ b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_nether.json @@ -3,7 +3,7 @@ "placement": [ { "type": "minecraft:count", - "count": 20 + "count": 0 }, { "type": "minecraft:in_square" diff --git a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_overworld.json b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_overworld.json index 988a8c8..12ce949 100644 --- a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_overworld.json +++ b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_overworld.json @@ -3,7 +3,7 @@ "placement": [ { "type": "minecraft:count", - "count": 20 + "count": 0 }, { "type": "minecraft:in_square" diff --git a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_underworld.json b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_underworld.json index 58013c7..8496257 100644 --- a/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_underworld.json +++ b/src/main/resources/data/miteequilibrium/worldgen/placed_feature/ore_custom_underworld.json @@ -3,7 +3,7 @@ "placement": [ { "type": "minecraft:count", - "count": 20 + "count": 0 }, { "type": "minecraft:in_square" diff --git a/src/main/resources/miteequilibrium.mixins.json b/src/main/resources/miteequilibrium.mixins.json index 9225eb6..a5fc1f2 100644 --- a/src/main/resources/miteequilibrium.mixins.json +++ b/src/main/resources/miteequilibrium.mixins.json @@ -4,18 +4,29 @@ "compatibilityLevel": "JAVA_21", "mixins": [ "AbstractFireBlockMixin", + "BiomeMixin", "ConcentricRingsStructurePlacementMixin", "EnderEyeItemMixin", + "GrassColorsMixin", + "HungerManagerMixin", "IdentifierMixin", "MITEequilibriumMixin", "NetherPortalBlockMixin", "NetherPortalMixin", "PlayerEntityMixin", + "PlayerManagerMixin", "PortalForcerMixin", "StrongholdGeneratorMixin", - "StrongholdGeneratorStartMixin" + "StrongholdGeneratorStartMixin", + "loot_table.BlockLootTableMixin" ], "injectors": { "defaultRequire": 1 - } + }, + "client": [ + "BlockModelRendererMixin", + "InGameHudMixin", + "WorldRendererMixin", + "color.LightmapTextureManagerMixin" + ] } \ No newline at end of file diff --git a/src/main/resources/name.accesswidener b/src/main/resources/name.accesswidener index e13c986..79fbf81 100644 --- a/src/main/resources/name.accesswidener +++ b/src/main/resources/name.accesswidener @@ -1,5 +1,6 @@ accessWidener v1 named +accessible field net/minecraft/entity/LivingEntity HEALTH Lnet/minecraft/entity/data/TrackedData; accessible method net/minecraft/block/NetherPortalBlock getOrCreateExitPortalTarget (Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/entity/Entity;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/BlockPos;ZLnet/minecraft/world/border/WorldBorder;)Lnet/minecraft/world/TeleportTarget; accessible method net/minecraft/world/dimension/NetherPortal validStateInsidePortal (Lnet/minecraft/block/BlockState;)Z accessible field net/minecraft/world/dimension/NetherPortal width I