diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/client/render/WardenLayerRenderer.java b/common/src/main/java/com/cursedcauldron/wildbackport/client/render/WardenLayerRenderer.java index 23389cc..a30d2e1 100644 --- a/common/src/main/java/com/cursedcauldron/wildbackport/client/render/WardenLayerRenderer.java +++ b/common/src/main/java/com/cursedcauldron/wildbackport/client/render/WardenLayerRenderer.java @@ -45,12 +45,12 @@ public class WardenLayerRenderer> ext private void updateModelPartVisibility() { List parts = this.modelPartVisibility.getPartsToDraw(this.getParentModel()); - this.getParentModel().root().getAllParts().forEach(part -> ((Drawable)(Object)part).setSkipDraw(true)); - parts.forEach(part -> ((Drawable)(Object)part).setSkipDraw(false)); + this.getParentModel().root().getAllParts().forEach(part -> Drawable.of(part).setSkipDraw(true)); + parts.forEach(part -> Drawable.of(part).setSkipDraw(false)); } private void unhideAllModelParts() { - this.getParentModel().root().getAllParts().forEach(part -> ((Drawable)(Object)part).setSkipDraw(false)); + this.getParentModel().root().getAllParts().forEach(part -> Drawable.of(part).setSkipDraw(false)); } public interface AnimationAngleAdjuster { diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/client/render/model/Drawable.java b/common/src/main/java/com/cursedcauldron/wildbackport/client/render/model/Drawable.java index e3fc933..54ed6dc 100644 --- a/common/src/main/java/com/cursedcauldron/wildbackport/client/render/model/Drawable.java +++ b/common/src/main/java/com/cursedcauldron/wildbackport/client/render/model/Drawable.java @@ -1,7 +1,13 @@ package com.cursedcauldron.wildbackport.client.render.model; +import net.minecraft.client.model.geom.ModelPart; + public interface Drawable { boolean skipDraw(); void setSkipDraw(boolean set); + + static Drawable of(ModelPart part) { + return Drawable.class.cast(part); + } } \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/common/CommonSetup.java b/common/src/main/java/com/cursedcauldron/wildbackport/common/CommonSetup.java index aa80721..22b3a5d 100644 --- a/common/src/main/java/com/cursedcauldron/wildbackport/common/CommonSetup.java +++ b/common/src/main/java/com/cursedcauldron/wildbackport/common/CommonSetup.java @@ -4,10 +4,34 @@ import com.cursedcauldron.wildbackport.common.entities.Allay; import com.cursedcauldron.wildbackport.common.entities.Frog; import com.cursedcauldron.wildbackport.common.entities.Tadpole; import com.cursedcauldron.wildbackport.common.entities.Warden; +import com.cursedcauldron.wildbackport.common.registry.WBBlocks; import com.cursedcauldron.wildbackport.common.registry.entity.WBEntities; import com.cursedcauldron.wildbackport.common.registry.worldgen.WBWorldGeneration; +import com.cursedcauldron.wildbackport.common.tag.WBBlockTags; import com.cursedcauldron.wildbackport.core.api.MobRegistry; +import com.cursedcauldron.wildbackport.core.api.event.Interactions; import com.cursedcauldron.wildbackport.core.api.worldgen.BiomeModifier; +import net.minecraft.core.BlockPos; +import net.minecraft.core.BlockSource; +import net.minecraft.core.Direction; +import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUtils; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.alchemy.PotionUtils; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.DispenserBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.gameevent.GameEvent; public class CommonSetup { /** @@ -19,6 +43,7 @@ public class CommonSetup { MobRegistry.registerAttributes(WBEntities.FROG, Frog::createAttributes); MobRegistry.registerAttributes(WBEntities.TADPOLE, Tadpole::createAttributes); MobRegistry.registerAttributes(WBEntities.WARDEN, Warden::createAttributes); + } /** @@ -27,5 +52,6 @@ public class CommonSetup { public static void onPostCommon() { WBWorldGeneration.bootstrap(); BiomeModifier.setup(); + VanillaInteraction.setup(); } } \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/common/VanillaInteraction.java b/common/src/main/java/com/cursedcauldron/wildbackport/common/VanillaInteraction.java new file mode 100644 index 0000000..f5831f8 --- /dev/null +++ b/common/src/main/java/com/cursedcauldron/wildbackport/common/VanillaInteraction.java @@ -0,0 +1,126 @@ +package com.cursedcauldron.wildbackport.common; + +import com.cursedcauldron.wildbackport.common.registry.WBBlocks; +import com.cursedcauldron.wildbackport.common.tag.WBBlockTags; +import com.cursedcauldron.wildbackport.core.api.event.Interactions; +import com.cursedcauldron.wildbackport.core.mixin.access.AxeItemAccessor; +import com.cursedcauldron.wildbackport.core.mixin.access.FireBlockAccessor; +import com.google.common.collect.Maps; +import net.minecraft.core.BlockPos; +import net.minecraft.core.BlockSource; +import net.minecraft.core.Direction; +import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUtils; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.alchemy.PotionUtils; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.ComposterBlock; +import net.minecraft.world.level.block.DispenserBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.gameevent.GameEvent; + +public class VanillaInteraction { + public static void setup() { + // Flammables + addFlammable(WBBlocks.MANGROVE_LOG.get(), 5, 5); + addFlammable(WBBlocks.MANGROVE_WOOD.get(), 5, 5); + addFlammable(WBBlocks.STRIPPED_MANGROVE_LOG.get(), 5, 5); + addFlammable(WBBlocks.STRIPPED_MANGROVE_WOOD.get(), 5, 5); + addFlammable(WBBlocks.MANGROVE_PLANKS.get(), 5, 20); + addFlammable(WBBlocks.MANGROVE_STAIRS.get(), 5, 20); + addFlammable(WBBlocks.MANGROVE_SLAB.get(), 5, 20); + addFlammable(WBBlocks.MANGROVE_FENCE.get(), 5, 20); + addFlammable(WBBlocks.MANGROVE_FENCE_GATE.get(), 5, 20); + addFlammable(WBBlocks.MANGROVE_ROOTS.get(), 5, 20); + addFlammable(WBBlocks.MANGROVE_LEAVES.get(), 30, 60); + + // Compostables + addCompostable(WBBlocks.MANGROVE_LEAVES.get(), 0.3F); + addCompostable(WBBlocks.MANGROVE_PROPAGULE.get(), 0.3F); + addCompostable(WBBlocks.MANGROVE_ROOTS.get(), 0.3F); + + // Strippables + addStrippable(WBBlocks.MANGROVE_LOG.get(), WBBlocks.STRIPPED_MANGROVE_LOG.get()); + addStrippable(WBBlocks.MANGROVE_WOOD.get(), WBBlocks.STRIPPED_MANGROVE_WOOD.get()); + + // Turning Dirt into Mud + Interactions.addRightClick(context -> { + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + Player player = context.getPlayer(); + ItemStack stack = context.getItemInHand(); + BlockState state = level.getBlockState(pos); + if (player != null && context.getClickedFace() != Direction.DOWN && state.is(WBBlockTags.CONVERTABLE_TO_MUD) && PotionUtils.getPotion(stack) == Potions.WATER) { + level.playSound(null, pos, SoundEvents.GENERIC_SPLASH, SoundSource.PLAYERS, 1.0F, 1.0F); + player.setItemInHand(context.getHand(), ItemUtils.createFilledResult(stack, player, new ItemStack(Items.GLASS_BOTTLE))); + player.awardStat(Stats.ITEM_USED.get(stack.getItem())); + + if (!level.isClientSide()) { + for (int i = 0; i < 5; i++) { + ((ServerLevel)level).sendParticles(ParticleTypes.SPLASH, (double)pos.getX() + level.random.nextDouble(), pos.getY() + 1, (double)pos.getZ() + level.random.nextDouble(), 1, 0.0D, 0.0D, 0.0D, 1.0D); + } + } + + level.playSound(null, pos, SoundEvents.BOTTLE_EMPTY, SoundSource.BLOCKS, 1.0F, 1.0F); + level.gameEvent(GameEvent.FLUID_PLACE, pos); + level.setBlockAndUpdate(pos, WBBlocks.MUD.get().defaultBlockState()); + return InteractionResult.sidedSuccess(level.isClientSide()); + } else { + return InteractionResult.PASS; + } + }); + + DispenserBlock.registerBehavior(Items.POTION, new DefaultDispenseItemBehavior() { + private final DefaultDispenseItemBehavior behavior = new DefaultDispenseItemBehavior(); + + @Override protected ItemStack execute(BlockSource source, ItemStack stack) { + if (PotionUtils.getPotion(stack) != Potions.WATER) { + return this.behavior.dispense(source, stack); + } else { + ServerLevel level = source.getLevel(); + BlockPos sourcePos = source.getPos(); + BlockPos dispenserPos = source.getPos().relative(source.getBlockState().getValue(DispenserBlock.FACING)); + if (!level.getBlockState(dispenserPos).is(WBBlockTags.CONVERTABLE_TO_MUD)) { + return this.behavior.dispense(source, stack); + } else { + if (!level.isClientSide()) { + for (int i = 0; i < 5; i++) { + level.sendParticles(ParticleTypes.SPLASH, (double)sourcePos.getX() + level.random.nextDouble(), sourcePos.getY() + 1, (double)sourcePos.getZ() + level.random.nextDouble(), 1, 0.0D, 0.0D, 0.0D, 1.0D); + } + } + + level.playSound(null, sourcePos, SoundEvents.BOTTLE_EMPTY, SoundSource.BLOCKS, 1.0F, 1.0F); + level.gameEvent(GameEvent.FLUID_PLACE, sourcePos); + level.setBlockAndUpdate(dispenserPos, WBBlocks.MUD.get().defaultBlockState()); + return new ItemStack(Items.GLASS_BOTTLE); + } + } + } + }); + } + + public static void addFlammable(Block block, int flameOdds, int burnOdds) { + ((FireBlockAccessor)Blocks.FIRE).callSetFlammable(block, flameOdds, burnOdds); + } + + public static void addCompostable(ItemLike item, float chance) { + ComposterBlock.COMPOSTABLES.put(item, chance); + } + + public static void addStrippable(Block from, Block to) { + AxeItemAccessor.setSTRIPPABLES(Maps.newHashMap(AxeItemAccessor.getSTRIPPABLES())); + AxeItemAccessor.getSTRIPPABLES().put(from, to); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/common/blocks/DrippingFluid.java b/common/src/main/java/com/cursedcauldron/wildbackport/common/blocks/DrippingFluid.java new file mode 100644 index 0000000..db962b9 --- /dev/null +++ b/common/src/main/java/com/cursedcauldron/wildbackport/common/blocks/DrippingFluid.java @@ -0,0 +1,37 @@ +package com.cursedcauldron.wildbackport.common.blocks; + +import com.cursedcauldron.wildbackport.common.registry.WBBlocks; +import com.cursedcauldron.wildbackport.core.mixin.access.PointedDripstoneBlockAccessor; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.Fluids; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Optional; + +public record DrippingFluid(BlockPos pos, Fluid fluid, BlockState sourceState) { + public static void fillCauldron(BlockState state, ServerLevel world, BlockPos blockPos, CallbackInfo ci) { + Optional fluidAbove = getFluidAboveStalactite(world, blockPos, state); + if (fluidAbove.isPresent()) { + Fluid fluid = fluidAbove.get().fluid; + if (fluidAbove.get().sourceState().is(WBBlocks.MUD.get()) && fluid == Fluids.WATER) { + world.setBlockAndUpdate(fluidAbove.get().pos, Blocks.CLAY.defaultBlockState()); + world.levelEvent(1504, blockPos, 0); + ci.cancel(); + } + } + } + + public static Optional getFluidAboveStalactite(Level level, BlockPos pos, BlockState state) { + return !PointedDripstoneBlockAccessor.callIsStalactite(state) ? Optional.empty() : PointedDripstoneBlockAccessor.callFindRootBlock(level, pos, state, 11).map(blockPos -> { + BlockPos position = blockPos.above(); + BlockState sourceState = level.getBlockState(position); + Fluid fluid = sourceState.is(WBBlocks.MUD.get()) && !level.dimensionType().ultraWarm() ? Fluids.WATER : level.getFluidState(position).getType(); + return new DrippingFluid(position, fluid, sourceState); + }); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/common/blocks/SculkCatalystBlock.java b/common/src/main/java/com/cursedcauldron/wildbackport/common/blocks/SculkCatalystBlock.java index 449fb22..5e7a3a2 100644 --- a/common/src/main/java/com/cursedcauldron/wildbackport/common/blocks/SculkCatalystBlock.java +++ b/common/src/main/java/com/cursedcauldron/wildbackport/common/blocks/SculkCatalystBlock.java @@ -74,9 +74,6 @@ public class SculkCatalystBlock extends BaseEntityBlock { @Override public void spawnAfterBreak(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack) { - super.spawnAfterBreak(state, level, pos, stack); - if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, stack) == 0) { - this.popExperience(level, pos, 20); - } + if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, stack) == 0) this.popExperience(level, pos, 5); } } \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/common/entities/access/WardenTracker.java b/common/src/main/java/com/cursedcauldron/wildbackport/common/entities/access/WardenTracker.java index 1fca650..6fa26ca 100644 --- a/common/src/main/java/com/cursedcauldron/wildbackport/common/entities/access/WardenTracker.java +++ b/common/src/main/java/com/cursedcauldron/wildbackport/common/entities/access/WardenTracker.java @@ -7,6 +7,10 @@ public interface WardenTracker { WardenSpawnTracker getWardenSpawnTracker(); static WardenSpawnTracker getWardenSpawnTracker(Player player) { - return ((WardenTracker)player).getWardenSpawnTracker(); + return of(player).getWardenSpawnTracker(); } -} + + static WardenTracker of(Player player) { + return (WardenTracker)player; + } +} \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/common/entities/warden/WardenSpawnTracker.java b/common/src/main/java/com/cursedcauldron/wildbackport/common/entities/warden/WardenSpawnTracker.java index 0d3d7df..afb8cb1 100644 --- a/common/src/main/java/com/cursedcauldron/wildbackport/common/entities/warden/WardenSpawnTracker.java +++ b/common/src/main/java/com/cursedcauldron/wildbackport/common/entities/warden/WardenSpawnTracker.java @@ -74,14 +74,14 @@ public class WardenSpawnTracker { players.add(player); } - if (players.stream().anyMatch(playerIn -> ((WardenTracker)playerIn).getWardenSpawnTracker().onCooldown())) { + if (players.stream().anyMatch(playerIn -> WardenTracker.of(playerIn).getWardenSpawnTracker().onCooldown())) { return OptionalInt.empty(); } Optional optional = players.stream().map(WardenTracker::getWardenSpawnTracker).max(Comparator.comparingInt(tracker -> tracker.warningLevel)); WardenSpawnTracker tracker = optional.get(); tracker.increaseWarningLevel(); - players.forEach(playerIn -> ((WardenTracker)playerIn).getWardenSpawnTracker().copyData(tracker)); + players.forEach(playerIn -> WardenTracker.of(playerIn).getWardenSpawnTracker().copyData(tracker)); return OptionalInt.of(tracker.warningLevel); } else { return OptionalInt.empty(); diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBBiomeTags.java b/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBBiomeTags.java index 093f4eb..db9cddb 100644 --- a/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBBiomeTags.java +++ b/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBBiomeTags.java @@ -2,9 +2,7 @@ package com.cursedcauldron.wildbackport.common.tag; import com.cursedcauldron.wildbackport.WildBackport; import com.cursedcauldron.wildbackport.core.api.TagRegistry; -import net.minecraft.core.Registry; import net.minecraft.data.BuiltinRegistries; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.level.biome.Biome; diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBBlockTags.java b/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBBlockTags.java index b4d7f0f..cab3b5c 100644 --- a/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBBlockTags.java +++ b/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBBlockTags.java @@ -10,11 +10,12 @@ public class WBBlockTags { public static final TagRegistry TAGS = TagRegistry.create(Registry.BLOCK, WildBackport.MOD_ID); // Mangrove Swamp - + public static final TagKey CONVERTABLE_TO_MUD = TAGS.create("convertable_to_mud"); + public static final TagKey FROG_PREFER_JUMP_TO = TAGS.create("frog_prefer_jump_to"); + //TODO + public static final TagKey FROGS_SPAWNABLE_ON = TAGS.create("frogs_spawnable_on"); public static final TagKey MANGROVE_LOGS_CAN_GROW_THROUGH = TAGS.create("mangrove_logs_can_grow_through"); public static final TagKey MANGROVE_ROOTS_CAN_GROW_THROUGH = TAGS.create("mangrove_roots_can_grow_through"); - public static final TagKey FROG_PREFER_JUMP_TO = TAGS.create("frog_prefer_jump_to"); - public static final TagKey FROGS_SPAWNABLE_ON = TAGS.create("frogs_spawnable_on"); // Deep Dark public static final TagKey SCULK_REPLACEABLE = TAGS.create("sculk_replaceable"); diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBItemTags.java b/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBItemTags.java index 854b389..701c793 100644 --- a/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBItemTags.java +++ b/common/src/main/java/com/cursedcauldron/wildbackport/common/tag/WBItemTags.java @@ -3,8 +3,12 @@ package com.cursedcauldron.wildbackport.common.tag; import com.cursedcauldron.wildbackport.WildBackport; import com.cursedcauldron.wildbackport.core.api.TagRegistry; import net.minecraft.core.Registry; +import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; public class WBItemTags { public static final TagRegistry TAGS = TagRegistry.create(Registry.ITEM, WildBackport.MOD_ID); + + public static final TagKey CHEST_BOATS = TAGS.create("chest_boats"); + public static final TagKey MANGROVE_LOGS = TAGS.create("mangrove_logs"); } \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/core/api/event/Interactions.java b/common/src/main/java/com/cursedcauldron/wildbackport/core/api/event/Interactions.java new file mode 100644 index 0000000..2e07c79 --- /dev/null +++ b/common/src/main/java/com/cursedcauldron/wildbackport/core/api/event/Interactions.java @@ -0,0 +1,16 @@ +package com.cursedcauldron.wildbackport.core.api.event; + +import dev.architectury.injectables.annotations.ExpectPlatform; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.context.UseOnContext; + +public class Interactions { + @ExpectPlatform + public static void addRightClick(Interaction interaction) { + throw new AssertionError(); + } + + public interface Interaction { + InteractionResult of(UseOnContext context); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/access/AxeItemAccessor.java b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/access/AxeItemAccessor.java new file mode 100644 index 0000000..0ed39cd --- /dev/null +++ b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/access/AxeItemAccessor.java @@ -0,0 +1,23 @@ +package com.cursedcauldron.wildbackport.core.mixin.access; + +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.level.block.Block; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(AxeItem.class) +public interface AxeItemAccessor { + @Accessor + static Map getSTRIPPABLES() { + throw new UnsupportedOperationException(); + } + + @Mutable + @Accessor + static void setSTRIPPABLES(Map STRIPPABLES) { + throw new UnsupportedOperationException(); + } +} diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/access/FireBlockAccessor.java b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/access/FireBlockAccessor.java new file mode 100644 index 0000000..87a5c9e --- /dev/null +++ b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/access/FireBlockAccessor.java @@ -0,0 +1,12 @@ +package com.cursedcauldron.wildbackport.core.mixin.access; + +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.FireBlock; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(FireBlock.class) +public interface FireBlockAccessor { + @Invoker + void callSetFlammable(Block block, int i, int j); +} diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/access/PointedDripstoneBlockAccessor.java b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/access/PointedDripstoneBlockAccessor.java new file mode 100644 index 0000000..ec82099 --- /dev/null +++ b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/access/PointedDripstoneBlockAccessor.java @@ -0,0 +1,23 @@ +package com.cursedcauldron.wildbackport.core.mixin.access; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.PointedDripstoneBlock; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.Optional; + +@Mixin(PointedDripstoneBlock.class) +public interface PointedDripstoneBlockAccessor { + @Invoker + static Optional callFindRootBlock(Level level, BlockPos blockPos2, BlockState blockState2, int i) { + throw new UnsupportedOperationException(); + } + + @Invoker + static boolean callIsStalactite(BlockState blockState) { + throw new UnsupportedOperationException(); + } +} diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/common/PointedDripstoneBlockMixin.java b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/common/PointedDripstoneBlockMixin.java new file mode 100644 index 0000000..984b4b4 --- /dev/null +++ b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/common/PointedDripstoneBlockMixin.java @@ -0,0 +1,19 @@ +package com.cursedcauldron.wildbackport.core.mixin.common; + +import com.cursedcauldron.wildbackport.common.blocks.DrippingFluid; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.block.PointedDripstoneBlock; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PointedDripstoneBlock.class) +public class PointedDripstoneBlockMixin { + @Inject(method = "maybeFillCauldron", at = @At("HEAD"), cancellable = true) + private static void wb$maybeFillCauldron(BlockState state, ServerLevel level, BlockPos pos, float dripChance, CallbackInfo ci) { + DrippingFluid.fillCauldron(state, level, pos, ci); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/common/SculkSensorBlockEntityMixin.java b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/common/SculkSensorBlockEntityMixin.java new file mode 100644 index 0000000..b191ea5 --- /dev/null +++ b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/common/SculkSensorBlockEntityMixin.java @@ -0,0 +1,15 @@ +package com.cursedcauldron.wildbackport.core.mixin.common; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.entity.SculkSensorBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(SculkSensorBlockEntity.class) +public class SculkSensorBlockEntityMixin extends BlockEntity { + public SculkSensorBlockEntityMixin(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/common/SculkSensorBlockMixin.java b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/common/SculkSensorBlockMixin.java new file mode 100644 index 0000000..5a699a0 --- /dev/null +++ b/common/src/main/java/com/cursedcauldron/wildbackport/core/mixin/common/SculkSensorBlockMixin.java @@ -0,0 +1,36 @@ +package com.cursedcauldron.wildbackport.core.mixin.common; + +import com.cursedcauldron.wildbackport.common.registry.WBGameEvents; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.SculkSensorBlock; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(SculkSensorBlock.class) +public abstract class SculkSensorBlockMixin extends BaseEntityBlock { + protected SculkSensorBlockMixin(Properties properties) { + super(properties); + } + + @Override + public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { + if (!level.isClientSide() && SculkSensorBlock.canActivate(state)) { + SculkSensorBlock.activate(level, pos, state, 1); + level.gameEvent(entity, WBGameEvents.SCULK_SENSOR_TENDRILS_CLICKING.get(), pos); + } + + super.stepOn(level, pos, state, entity); + } + + @Override + public void spawnAfterBreak(BlockState state, ServerLevel level, BlockPos pos, ItemStack stack) { + if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, stack) == 0) this.popExperience(level, pos, 5); + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/loot_tables/blocks/sculk_sensor.json b/common/src/main/resources/data/minecraft/loot_tables/blocks/sculk_sensor.json new file mode 100644 index 0000000..5b3095e --- /dev/null +++ b/common/src/main/resources/data/minecraft/loot_tables/blocks/sculk_sensor.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:sculk_sensor" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/boats.json b/common/src/main/resources/data/minecraft/tags/items/boats.json new file mode 100644 index 0000000..b82d1cd --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/boats.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_boat", + "#wildbackport:chest_boats" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/dirt.json b/common/src/main/resources/data/minecraft/tags/items/dirt.json new file mode 100644 index 0000000..353ed7e --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/dirt.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "wildbackport:mud", + "wildbackport:muddy_mangrove_roots" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/leaves.json b/common/src/main/resources/data/minecraft/tags/items/leaves.json new file mode 100644 index 0000000..e00969d --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/leaves.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_leaves" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/logs_that_burn.json b/common/src/main/resources/data/minecraft/tags/items/logs_that_burn.json new file mode 100644 index 0000000..8771410 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/logs_that_burn.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#wildbackport:mangrove_logs" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/planks.json b/common/src/main/resources/data/minecraft/tags/items/planks.json new file mode 100644 index 0000000..c62d7d6 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/planks.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_planks" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/walls.json b/common/src/main/resources/data/minecraft/tags/items/walls.json new file mode 100644 index 0000000..af2cfaa --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/walls.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mud_brick_wall" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/wooden_doors.json b/common/src/main/resources/data/minecraft/tags/items/wooden_doors.json new file mode 100644 index 0000000..fbe3af3 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/wooden_doors.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_door" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/wooden_fences.json b/common/src/main/resources/data/minecraft/tags/items/wooden_fences.json new file mode 100644 index 0000000..be90b5c --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/wooden_fences.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_fence" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/wooden_slabs.json b/common/src/main/resources/data/minecraft/tags/items/wooden_slabs.json new file mode 100644 index 0000000..2715336 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/wooden_slabs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_slab" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/items/wooden_stairs.json b/common/src/main/resources/data/minecraft/tags/items/wooden_stairs.json new file mode 100644 index 0000000..3d20251 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/items/wooden_stairs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_stairs" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft.json b/common/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft.json new file mode 100644 index 0000000..2204c95 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_swamp" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_swamp.json b/common/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_swamp.json new file mode 100644 index 0000000..2204c95 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_swamp.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_swamp" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_planks.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_planks.json new file mode 100644 index 0000000..34996d2 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_planks.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_logs": { + "conditions": { + "items": [ + { + "tag": "wildbackport:mangrove_logs" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_planks" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_logs", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_planks" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_slab.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_slab.json new file mode 100644 index 0000000..33dffc0 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_slab.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_planks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_planks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_slab" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_slab" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_stairs.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_stairs.json new file mode 100644 index 0000000..3490593 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_stairs.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_planks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_planks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_stairs" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_stairs" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_wood.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_wood.json new file mode 100644 index 0000000..58b9cd2 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mangrove_wood.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_log": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_log" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_wood" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_log", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_wood" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_slab.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_slab.json new file mode 100644 index 0000000..d74420f --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_slab.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mud_bricks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mud_bricks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mud_brick_slab" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_mud_bricks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mud_brick_slab" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_slab_from_mud_bricks_stonecutting.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_slab_from_mud_bricks_stonecutting.json new file mode 100644 index 0000000..d2861c7 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_slab_from_mud_bricks_stonecutting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mud_bricks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mud_bricks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mud_brick_slab_from_mud_bricks_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_mud_bricks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mud_brick_slab_from_mud_bricks_stonecutting" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_stairs.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_stairs.json new file mode 100644 index 0000000..b1fbcb5 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_stairs.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mud_bricks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mud_bricks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mud_brick_stairs" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_mud_bricks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mud_brick_stairs" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_stairs_from_mud_bricks_stonecutting.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_stairs_from_mud_bricks_stonecutting.json new file mode 100644 index 0000000..ad0e34f --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_brick_stairs_from_mud_bricks_stonecutting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mud_bricks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mud_bricks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mud_brick_stairs_from_mud_bricks_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_mud_bricks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mud_brick_stairs_from_mud_bricks_stonecutting" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_bricks.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_bricks.json new file mode 100644 index 0000000..ce96293 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/mud_bricks.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_packed_mud": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:packed_mud" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mud_bricks" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_packed_mud", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mud_bricks" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/muddy_mangrove_roots.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/muddy_mangrove_roots.json new file mode 100644 index 0000000..e635151 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/muddy_mangrove_roots.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mangrove_roots": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_roots" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:muddy_mangrove_roots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_mangrove_roots", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:muddy_mangrove_roots" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/packed_mud.json b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/packed_mud.json new file mode 100644 index 0000000..a5e56bc --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/building_blocks/packed_mud.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mud": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mud" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:packed_mud" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_mud", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:packed_mud" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mangrove_fence.json b/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mangrove_fence.json new file mode 100644 index 0000000..05ef2e8 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mangrove_fence.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_planks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_planks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_fence" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_fence" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mangrove_sign.json b/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mangrove_sign.json new file mode 100644 index 0000000..05ef2e8 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mangrove_sign.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_planks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_planks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_fence" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_fence" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mud_brick_wall.json b/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mud_brick_wall.json new file mode 100644 index 0000000..e9f2897 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mud_brick_wall.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mud_bricks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mud_bricks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mud_brick_wall" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_mud_bricks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mud_brick_wall" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json b/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json new file mode 100644 index 0000000..572e545 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_mud_bricks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mud_bricks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mud_brick_wall_from_mud_bricks_stonecutting" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_mud_bricks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mud_brick_wall_from_mud_bricks_stonecutting" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/misc/music_disc_5.json b/common/src/main/resources/data/wildbackport/advancements/recipes/misc/music_disc_5.json new file mode 100644 index 0000000..5fab573 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/misc/music_disc_5.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_disc_fragment_5": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:disc_fragment_5" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:music_disc_5" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_disc_fragment_5", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:music_disc_5" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_button.json b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_button.json new file mode 100644 index 0000000..617df9e --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_button.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_planks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_planks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_button" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_button" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_door.json b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_door.json new file mode 100644 index 0000000..1e85891 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_door.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_planks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_planks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_door" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_door" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_fence_gate.json b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_fence_gate.json new file mode 100644 index 0000000..fa789ac --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_fence_gate.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_planks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_planks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_fence_gate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_fence_gate" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_pressure_plate.json b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_pressure_plate.json new file mode 100644 index 0000000..18b2d25 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_pressure_plate.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_planks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_planks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_pressure_plate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_pressure_plate" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_trapdoor.json b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_trapdoor.json new file mode 100644 index 0000000..5ca2e05 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/redstone/mangrove_trapdoor.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_planks": { + "conditions": { + "items": [ + { + "items": [ + "wildbackport:mangrove_planks" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_trapdoor" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_planks", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_trapdoor" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/acacia_chest_boat.json b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/acacia_chest_boat.json new file mode 100644 index 0000000..910e11e --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/acacia_chest_boat.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_boat": { + "conditions": { + "items": [ + { + "tag": "minecraft:boats" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:acacia_chest_boat" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_boat", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:acacia_chest_boat" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/birch_chest_boat.json b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/birch_chest_boat.json new file mode 100644 index 0000000..6707ab2 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/birch_chest_boat.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_boat": { + "conditions": { + "items": [ + { + "tag": "minecraft:boats" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:birch_chest_boat" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_boat", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:birch_chest_boat" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/dark_oak_chest_boat.json b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/dark_oak_chest_boat.json new file mode 100644 index 0000000..25bf1b7 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/dark_oak_chest_boat.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_boat": { + "conditions": { + "items": [ + { + "tag": "minecraft:boats" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:dark_oak_chest_boat" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_boat", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:dark_oak_chest_boat" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/jungle_chest_boat.json b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/jungle_chest_boat.json new file mode 100644 index 0000000..463d163 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/jungle_chest_boat.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_boat": { + "conditions": { + "items": [ + { + "tag": "minecraft:boats" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:jungle_chest_boat" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_boat", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:jungle_chest_boat" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/mangrove_boat.json b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/mangrove_boat.json new file mode 100644 index 0000000..525f568 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/mangrove_boat.json @@ -0,0 +1,28 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_boat" + }, + "trigger": "minecraft:recipe_unlocked" + }, + "in_water": { + "conditions": { + "block": "minecraft:water" + }, + "trigger": "minecraft:enter_block" + } + }, + "requirements": [ + [ + "in_water", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_boat" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/mangrove_chest_boat.json b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/mangrove_chest_boat.json new file mode 100644 index 0000000..984351e --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/mangrove_chest_boat.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_boat": { + "conditions": { + "items": [ + { + "tag": "minecraft:boats" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:mangrove_chest_boat" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_boat", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:mangrove_chest_boat" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/spruce_chest_boat.json b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/spruce_chest_boat.json new file mode 100644 index 0000000..3b8a4ab --- /dev/null +++ b/common/src/main/resources/data/wildbackport/advancements/recipes/transportation/spruce_chest_boat.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_boat": { + "conditions": { + "items": [ + { + "tag": "minecraft:boats" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "wildbackport:spruce_chest_boat" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_boat", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "wildbackport:spruce_chest_boat" + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_button.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_button.json new file mode 100644 index 0000000..7bc5a8b --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_button.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_button" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_door.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_door.json new file mode 100644 index 0000000..04911ea --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_door.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "wildbackport:mangrove_door", + "condition": "minecraft:block_state_property", + "properties": { + "half": "lower" + } + } + ], + "name": "wildbackport:mangrove_door" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_fence.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_fence.json new file mode 100644 index 0000000..c5df449 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_fence.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_fence" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_fence_gate.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_fence_gate.json new file mode 100644 index 0000000..acfe899 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_fence_gate.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_fence_gate" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_leaves.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_leaves.json new file mode 100644 index 0000000..5000e79 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_leaves.json @@ -0,0 +1,79 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": [ + "minecraft:shears" + ] + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "wildbackport:mangrove_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ], + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune" + } + ], + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ] + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_log.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_log.json new file mode 100644 index 0000000..49677b9 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_log.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_log" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_planks.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_planks.json new file mode 100644 index 0000000..d5d45e6 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_planks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_planks" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_pressure_plate.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_pressure_plate.json new file mode 100644 index 0000000..3c50fd5 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_pressure_plate.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_pressure_plate" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_propagule.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_propagule.json new file mode 100644 index 0000000..934afcb --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_propagule.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "block": "wildbackport:mangrove_propagule", + "condition": "minecraft:block_state_property", + "properties": { + "age": "4" + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_propagule" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_roots.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_roots.json new file mode 100644 index 0000000..1f5f76c --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_roots.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_roots" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_sign.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_sign.json new file mode 100644 index 0000000..e25bd48 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_sign.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_sign" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_slab.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_slab.json new file mode 100644 index 0000000..495e4d2 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wildbackport:mangrove_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "wildbackport:mangrove_slab" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_stairs.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_stairs.json new file mode 100644 index 0000000..c7e3f23 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_stairs" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_trapdoor.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_trapdoor.json new file mode 100644 index 0000000..a806687 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_trapdoor.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_trapdoor" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_wood.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_wood.json new file mode 100644 index 0000000..fdfb809 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mangrove_wood.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mangrove_wood" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud.json new file mode 100644 index 0000000..e84ccf2 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mud" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_brick_slab.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_brick_slab.json new file mode 100644 index 0000000..aa8f742 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_brick_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "conditions": [ + { + "block": "wildbackport:mud_brick_slab", + "condition": "minecraft:block_state_property", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "wildbackport:mud_brick_slab" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_brick_stairs.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_brick_stairs.json new file mode 100644 index 0000000..e63b9bf --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_brick_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mud_brick_stairs" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_brick_wall.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_brick_wall.json new file mode 100644 index 0000000..8ff1aee --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_brick_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mud_brick_wall" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_bricks.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_bricks.json new file mode 100644 index 0000000..37e0cb6 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/mud_bricks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:mud_bricks" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/muddy_mangrove_roots.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/muddy_mangrove_roots.json new file mode 100644 index 0000000..6507655 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/muddy_mangrove_roots.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:muddy_mangrove_roots" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/ochre_froglight.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/ochre_froglight.json new file mode 100644 index 0000000..8fe6014 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/ochre_froglight.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:ochre_froglight" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/packed_mud.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/packed_mud.json new file mode 100644 index 0000000..c229b4a --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/packed_mud.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:packed_mud" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/pearlescent_froglight.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/pearlescent_froglight.json new file mode 100644 index 0000000..0dabb10 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/pearlescent_froglight.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:pearlescent_froglight" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk.json new file mode 100644 index 0000000..ae3008a --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:sculk" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk_catalyst.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk_catalyst.json new file mode 100644 index 0000000..bc3cbd0 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk_catalyst.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:sculk_catalyst" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk_shrieker.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk_shrieker.json new file mode 100644 index 0000000..87d347b --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk_shrieker.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:sculk_shrieker" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk_vein.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk_vein.json new file mode 100644 index 0000000..ce5c7c9 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/sculk_vein.json @@ -0,0 +1,124 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "functions": [ + { + "add": true, + "conditions": [ + { + "block": "wildbackport:sculk_vein", + "condition": "minecraft:block_state_property", + "properties": { + "down": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "wildbackport:sculk_vein", + "condition": "minecraft:block_state_property", + "properties": { + "up": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "wildbackport:sculk_vein", + "condition": "minecraft:block_state_property", + "properties": { + "north": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "wildbackport:sculk_vein", + "condition": "minecraft:block_state_property", + "properties": { + "south": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "wildbackport:sculk_vein", + "condition": "minecraft:block_state_property", + "properties": { + "west": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "conditions": [ + { + "block": "wildbackport:sculk_vein", + "condition": "minecraft:block_state_property", + "properties": { + "east": "true" + } + } + ], + "count": 1.0, + "function": "minecraft:set_count" + }, + { + "add": true, + "count": -1.0, + "function": "minecraft:set_count" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "wildbackport:sculk_vein" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/stripped_mangrove_log.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/stripped_mangrove_log.json new file mode 100644 index 0000000..61987bb --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/stripped_mangrove_log.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:stripped_mangrove_log" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/stripped_mangrove_wood.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/stripped_mangrove_wood.json new file mode 100644 index 0000000..0d81dab --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/stripped_mangrove_wood.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:stripped_mangrove_wood" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/blocks/verdant_froglight.json b/common/src/main/resources/data/wildbackport/loot_tables/blocks/verdant_froglight.json new file mode 100644 index 0000000..6adbd3d --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/blocks/verdant_froglight.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:verdant_froglight" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/loot_tables/entities/warden.json b/common/src/main/resources/data/wildbackport/loot_tables/entities/warden.json new file mode 100644 index 0000000..1fc6c10 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/loot_tables/entities/warden.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "wildbackport:sculk_catalyst" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/acacia_chest_boat.json b/common/src/main/resources/data/wildbackport/recipes/acacia_chest_boat.json new file mode 100644 index 0000000..7e13fea --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/acacia_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "minecraft:acacia_boat" + } + ], + "result": { + "item": "wildbackport:acacia_chest_boat" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/birch_chest_boat.json b/common/src/main/resources/data/wildbackport/recipes/birch_chest_boat.json new file mode 100644 index 0000000..6ef7236 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/birch_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "minecraft:birch_boat" + } + ], + "result": { + "item": "wildbackport:birch_chest_boat" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/dark_oak_chest_boat.json b/common/src/main/resources/data/wildbackport/recipes/dark_oak_chest_boat.json new file mode 100644 index 0000000..c7c8a95 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/dark_oak_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "minecraft:dark_oak_boat" + } + ], + "result": { + "item": "wildbackport:dark_oak_chest_boat" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/jungle_chest_boat.json b/common/src/main/resources/data/wildbackport/recipes/jungle_chest_boat.json new file mode 100644 index 0000000..e0be1fc --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/jungle_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "minecraft:jungle_boat" + } + ], + "result": { + "item": "wildbackport:jungle_chest_boat" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_boat.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_boat.json new file mode 100644 index 0000000..4b78f10 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_boat.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "boat", + "key": { + "#": { + "item": "wildbackport:mangrove_planks" + } + }, + "pattern": [ + "# #", + "###" + ], + "result": { + "item": "wildbackport:mangrove_boat" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_button.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_button.json new file mode 100644 index 0000000..ecb08db --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_button.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "wildbackport:mangrove_planks" + } + ], + "result": { + "item": "wildbackport:mangrove_button" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_chest_boat.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_chest_boat.json new file mode 100644 index 0000000..6c187cf --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "wildbackport:mangrove_boat" + } + ], + "result": { + "item": "wildbackport:mangrove_chest_boat" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_door.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_door.json new file mode 100644 index 0000000..9cf224f --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_door.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_door", + "key": { + "#": { + "item": "wildbackport:mangrove_planks" + } + }, + "pattern": [ + "##", + "##", + "##" + ], + "result": { + "count": 3, + "item": "wildbackport:mangrove_door" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_fence.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_fence.json new file mode 100644 index 0000000..6a20c70 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_fence.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_fence", + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "wildbackport:mangrove_planks" + } + }, + "pattern": [ + "W#W", + "W#W" + ], + "result": { + "count": 3, + "item": "wildbackport:mangrove_fence" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_fence_gate.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_fence_gate.json new file mode 100644 index 0000000..6a4784e --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_fence_gate", + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "wildbackport:mangrove_planks" + } + }, + "pattern": [ + "#W#", + "#W#" + ], + "result": { + "item": "wildbackport:mangrove_fence_gate" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_planks.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_planks.json new file mode 100644 index 0000000..0b77e66 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_planks.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "wildbackport:mangrove_logs" + } + ], + "result": { + "count": 4, + "item": "wildbackport:mangrove_planks" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_pressure_plate.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_pressure_plate.json new file mode 100644 index 0000000..f5ce144 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_pressure_plate", + "key": { + "#": { + "item": "wildbackport:mangrove_planks" + } + }, + "pattern": [ + "##" + ], + "result": { + "item": "wildbackport:mangrove_pressure_plate" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_sign.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_sign.json new file mode 100644 index 0000000..e1b5d35 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_sign", + "key": { + "#": { + "item": "wildbackport:mangrove_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "pattern": [ + "###", + "###", + " X " + ], + "result": { + "count": 3, + "item": "wildbackport:mangrove_sign" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_slab.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_slab.json new file mode 100644 index 0000000..7613db6 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_slab", + "key": { + "#": { + "item": "wildbackport:mangrove_planks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "item": "wildbackport:mangrove_slab" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_stairs.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_stairs.json new file mode 100644 index 0000000..8cd285f --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_stairs", + "key": { + "#": { + "item": "wildbackport:mangrove_planks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "item": "wildbackport:mangrove_stairs" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_trapdoor.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_trapdoor.json new file mode 100644 index 0000000..2426c5c --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_trapdoor", + "key": { + "#": { + "item": "wildbackport:mangrove_planks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 2, + "item": "wildbackport:mangrove_trapdoor" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/mangrove_wood.json b/common/src/main/resources/data/wildbackport/recipes/mangrove_wood.json new file mode 100644 index 0000000..5e74133 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/mangrove_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "key": { + "#": { + "item": "wildbackport:mangrove_log" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 3, + "item": "wildbackport:mangrove_wood" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/muddy_brick_slab.json b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_slab.json new file mode 100644 index 0000000..d4fbb52 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "item": "wildbackport:mud_bricks" + } + }, + "pattern": [ + "###" + ], + "result": { + "count": 6, + "item": "wildbackport:mud_brick_slab" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/muddy_brick_slab_from_mud_bricks_stonecutting.json b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_slab_from_mud_bricks_stonecutting.json new file mode 100644 index 0000000..96556a4 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_slab_from_mud_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 2, + "ingredient": { + "item": "wildbackport:mud_bricks" + }, + "result": "wildbackport:mud_brick_slab" +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/muddy_brick_stairs.json b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_stairs.json new file mode 100644 index 0000000..3b4b4d7 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "item": "wildbackport:mud_bricks" + } + }, + "pattern": [ + "# ", + "## ", + "###" + ], + "result": { + "count": 4, + "item": "wildbackport:mud_brick_stairs" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/muddy_brick_stairs_from_mud_bricks_stonecutting.json b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_stairs_from_mud_bricks_stonecutting.json new file mode 100644 index 0000000..97e8f6d --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_stairs_from_mud_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "item": "wildbackport:mud_bricks" + }, + "result": "wildbackport:mud_brick_stairs" +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/muddy_brick_wall.json b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_wall.json new file mode 100644 index 0000000..f73df53 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "item": "wildbackport:mud_bricks" + } + }, + "pattern": [ + "###", + "###" + ], + "result": { + "count": 6, + "item": "wildbackport:mud_brick_wall" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/muddy_brick_wall_from_mud_bricks_stonecutting.json b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_wall_from_mud_bricks_stonecutting.json new file mode 100644 index 0000000..6f00ddd --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/muddy_brick_wall_from_mud_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "count": 1, + "ingredient": { + "item": "wildbackport:mud_bricks" + }, + "result": "wildbackport:mud_brick_wall" +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/muddy_bricks.json b/common/src/main/resources/data/wildbackport/recipes/muddy_bricks.json new file mode 100644 index 0000000..4aab1aa --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/muddy_bricks.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "#": { + "item": "wildbackport:packed_mud" + } + }, + "pattern": [ + "##", + "##" + ], + "result": { + "count": 4, + "item": "wildbackport:mud_bricks" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/muddy_mangrove_roots.json b/common/src/main/resources/data/wildbackport/recipes/muddy_mangrove_roots.json new file mode 100644 index 0000000..52ddf69 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/muddy_mangrove_roots.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "wildbackport:mud" + }, + { + "item": "wildbackport:mangrove_roots" + } + ], + "result": { + "item": "wildbackport:muddy_mangrove_roots" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/music_disc_5.json b/common/src/main/resources/data/wildbackport/recipes/music_disc_5.json new file mode 100644 index 0000000..9eb973f --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/music_disc_5.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "S": { + "item": "wildbackport:disc_fragment_5" + } + }, + "pattern": [ + "SSS", + "SSS", + "SSS" + ], + "result": { + "item": "wildbackport:music_disc_5" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/oak_chest_boat.json b/common/src/main/resources/data/wildbackport/recipes/oak_chest_boat.json new file mode 100644 index 0000000..9fa9ab8 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/oak_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "minecraft:oak_boat" + } + ], + "result": { + "item": "wildbackport:oak_chest_boat" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/packed_mud.json b/common/src/main/resources/data/wildbackport/recipes/packed_mud.json new file mode 100644 index 0000000..7065126 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/packed_mud.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "wildbackport:mud" + }, + { + "item": "minecraft:wheat" + } + ], + "result": { + "item": "wildbackport:packed_mud" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/recipes/spruce_chest_boat.json b/common/src/main/resources/data/wildbackport/recipes/spruce_chest_boat.json new file mode 100644 index 0000000..5ad5740 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/recipes/spruce_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "minecraft:spruce_boat" + } + ], + "result": { + "item": "wildbackport:spruce_chest_boat" + } +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/tags/blocks/convertable_to_mud.json b/common/src/main/resources/data/wildbackport/tags/blocks/convertable_to_mud.json new file mode 100644 index 0000000..82713c7 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/tags/blocks/convertable_to_mud.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "minecraft:dirt", + "minecraft:coarse_dirt", + "minecraft:rooted_dirt" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/tags/items/chest_boats.json b/common/src/main/resources/data/wildbackport/tags/items/chest_boats.json new file mode 100644 index 0000000..30eae04 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/tags/items/chest_boats.json @@ -0,0 +1,12 @@ +{ + "replace": false, + "values": [ + "wildbackport:oak_chest_boat", + "wildbackport:spruce_chest_boat", + "wildbackport:birch_chest_boat", + "wildbackport:jungle_chest_boat", + "wildbackport:acacia_chest_boat", + "wildbackport:dark_oak_chest_boat", + "wildbackport:mangrove_chest_boat" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/data/wildbackport/tags/items/mangrove_logs.json b/common/src/main/resources/data/wildbackport/tags/items/mangrove_logs.json new file mode 100644 index 0000000..5357192 --- /dev/null +++ b/common/src/main/resources/data/wildbackport/tags/items/mangrove_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_log", + "wildbackport:mangrove_wood", + "wildbackport:stripped_mangrove_log", + "wildbackport:stripped_mangrove_wood" + ] +} \ No newline at end of file diff --git a/common/src/main/resources/wildbackport-common.mixins.json b/common/src/main/resources/wildbackport-common.mixins.json index 500dc3f..57ca190 100644 --- a/common/src/main/resources/wildbackport-common.mixins.json +++ b/common/src/main/resources/wildbackport-common.mixins.json @@ -5,12 +5,15 @@ "compatibilityLevel": "JAVA_17", "mixins": [ "access.ActivityAccessor", + "access.AxeItemAccessor", "access.CriteriaTriggersAccessor", "access.DamageSourceAccessor", "access.DoorBlockAccessor", + "access.FireBlockAccessor", "access.MemoryModuleTypeAccessor", "access.ModelPartAccessor", "access.OverworldBiomesAccessor", + "access.PointedDripstoneBlockAccessor", "access.PressurePlateBlockAccessor", "access.RecordItemAccessor", "access.RegistryAccessor", @@ -32,6 +35,9 @@ "common.NoteBlockMixin", "common.PathfinderMobMixin", "common.PlayerMixin", + "common.PointedDripstoneBlockMixin", + "common.SculkSensorBlockEntityMixin", + "common.SculkSensorBlockMixin", "extension.BoatTypeMixin", "extension.PoseMixin", "network.ServerGamePacketListenerImplMixin" diff --git a/fabric/src/main/java/com/cursedcauldron/wildbackport/core/api/event/fabric/InteractionsImpl.java b/fabric/src/main/java/com/cursedcauldron/wildbackport/core/api/event/fabric/InteractionsImpl.java new file mode 100644 index 0000000..9c780c7 --- /dev/null +++ b/fabric/src/main/java/com/cursedcauldron/wildbackport/core/api/event/fabric/InteractionsImpl.java @@ -0,0 +1,11 @@ +package com.cursedcauldron.wildbackport.core.api.event.fabric; + +import com.cursedcauldron.wildbackport.core.api.event.Interactions; +import net.fabricmc.fabric.api.event.player.UseBlockCallback; +import net.minecraft.world.item.context.UseOnContext; + +public class InteractionsImpl { + public static void addRightClick(Interactions.Interaction interaction) { + UseBlockCallback.EVENT.register((player, level, hand, hitResult) -> interaction.of(new UseOnContext(player, hand, hitResult))); + } +} \ No newline at end of file diff --git a/fabric/src/main/resources/data/c/tags/worldgen/biome/caves.json b/fabric/src/main/resources/data/c/tags/worldgen/biome/caves.json new file mode 100644 index 0000000..03f33e5 --- /dev/null +++ b/fabric/src/main/resources/data/c/tags/worldgen/biome/caves.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:deep_dark" + ] +} \ No newline at end of file diff --git a/fabric/src/main/resources/data/c/tags/worldgen/biome/swamp.json b/fabric/src/main/resources/data/c/tags/worldgen/biome/swamp.json new file mode 100644 index 0000000..2204c95 --- /dev/null +++ b/fabric/src/main/resources/data/c/tags/worldgen/biome/swamp.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_swamp" + ] +} \ No newline at end of file diff --git a/forge/src/main/java/com/cursedcauldron/wildbackport/core/api/event/forge/InteractionsImpl.java b/forge/src/main/java/com/cursedcauldron/wildbackport/core/api/event/forge/InteractionsImpl.java new file mode 100644 index 0000000..155ddc6 --- /dev/null +++ b/forge/src/main/java/com/cursedcauldron/wildbackport/core/api/event/forge/InteractionsImpl.java @@ -0,0 +1,26 @@ +package com.cursedcauldron.wildbackport.core.api.event.forge; + +import com.cursedcauldron.wildbackport.WildBackport; +import com.cursedcauldron.wildbackport.core.api.event.Interactions; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Consumer; + +@Mod.EventBusSubscriber(modid = WildBackport.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) +public class InteractionsImpl { + private static final Set> INTERACTIONS = ConcurrentHashMap.newKeySet(); + + @SubscribeEvent + public static void event(PlayerInteractEvent.RightClickBlock event) { + INTERACTIONS.forEach(consumer -> consumer.accept(event)); + } + + public static void addRightClick(Interactions.Interaction interaction) { + INTERACTIONS.add(event -> event.setCancellationResult(interaction.of(new UseOnContext(event.getPlayer(), event.getHand(), event.getHitVec())))); + } +} \ No newline at end of file diff --git a/forge/src/main/resources/data/forge/tags/worldgen/biome/is_swamp.json b/forge/src/main/resources/data/forge/tags/worldgen/biome/is_swamp.json new file mode 100644 index 0000000..2204c95 --- /dev/null +++ b/forge/src/main/resources/data/forge/tags/worldgen/biome/is_swamp.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:mangrove_swamp" + ] +} \ No newline at end of file diff --git a/forge/src/main/resources/data/forge/tags/worldgen/biome/is_underground.json b/forge/src/main/resources/data/forge/tags/worldgen/biome/is_underground.json new file mode 100644 index 0000000..03f33e5 --- /dev/null +++ b/forge/src/main/resources/data/forge/tags/worldgen/biome/is_underground.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "wildbackport:deep_dark" + ] +} \ No newline at end of file