From 01346ef7d0c9457ec174e4c5e650f9651f4e61ea Mon Sep 17 00:00:00 2001 From: NorthWestWind Date: Mon, 28 Dec 2020 13:55:04 +0800 Subject: [PATCH] Week #5 Update --- build.gradle | 2 +- .../moreboots/handler/MoreBootsHandler.java | 50 +++++++---- .../moreboots/handler/Utils.java | 50 +++++------ .../moreboots/init/ItemInit.java | 18 ++-- .../moreboots/init/block/InvisibleBlock.java | 83 +++++++++++++++--- .../moreboots/init/item/ArmorItemBase.java | 8 +- .../init/tileentity/InvisibleTileEntity.java | 6 +- .../interfaces/IVanillaLoggable.java | 23 +++-- src/main/resources/META-INF/mods.toml | 2 +- .../boots_invisible_placeholder.json | 7 ++ .../assets/moreboots/lang/en_us.json | 9 ++ .../moreboots/models/item/floatie_boots.json | 6 ++ .../moreboots/models/item/strider_boots.json | 6 ++ .../moreboots/models/item/strider_foot.json | 6 ++ .../textures/items/floatie_boots.png | Bin 0 -> 1807 bytes .../textures/items/strider_boots.png | Bin 0 -> 1578 bytes .../moreboots/textures/items/strider_foot.png | Bin 0 -> 1841 bytes .../textures/models/armor/floatie_layer_1.png | Bin 0 -> 2100 bytes .../textures/models/armor/spruce_planks.png | Bin 0 -> 268 bytes .../textures/models/armor/strider.png | Bin 0 -> 1465 bytes .../textures/models/armor/strider_layer_1.png | Bin 0 -> 2391 bytes .../advancements/moreboots/floatie_boots.json | 36 ++++++++ .../advancements/moreboots/strider_boots.json | 36 ++++++++ .../data/moreboots/recipes/floatie_boots.json | 19 ++++ .../data/moreboots/recipes/strider_boots.json | 19 ++++ update.json | 28 +++--- 26 files changed, 322 insertions(+), 92 deletions(-) create mode 100644 src/main/resources/assets/moreboots/blockstates/boots_invisible_placeholder.json create mode 100644 src/main/resources/assets/moreboots/models/item/floatie_boots.json create mode 100644 src/main/resources/assets/moreboots/models/item/strider_boots.json create mode 100644 src/main/resources/assets/moreboots/models/item/strider_foot.json create mode 100644 src/main/resources/assets/moreboots/textures/items/floatie_boots.png create mode 100644 src/main/resources/assets/moreboots/textures/items/strider_boots.png create mode 100644 src/main/resources/assets/moreboots/textures/items/strider_foot.png create mode 100644 src/main/resources/assets/moreboots/textures/models/armor/floatie_layer_1.png create mode 100644 src/main/resources/assets/moreboots/textures/models/armor/spruce_planks.png create mode 100644 src/main/resources/assets/moreboots/textures/models/armor/strider.png create mode 100644 src/main/resources/assets/moreboots/textures/models/armor/strider_layer_1.png create mode 100644 src/main/resources/data/moreboots/advancements/moreboots/floatie_boots.json create mode 100644 src/main/resources/data/moreboots/advancements/moreboots/strider_boots.json create mode 100644 src/main/resources/data/moreboots/recipes/floatie_boots.json create mode 100644 src/main/resources/data/moreboots/recipes/strider_boots.json diff --git a/build.gradle b/build.gradle index a6c47e1..321ed74 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' -version = '1.4.2-1.16.x' +version = '1.5.0-1.16.x' group = 'com.northwestwind.moreboots' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'moreboots' diff --git a/src/main/java/com/northwestwind/moreboots/handler/MoreBootsHandler.java b/src/main/java/com/northwestwind/moreboots/handler/MoreBootsHandler.java index 20d7192..35e58b5 100644 --- a/src/main/java/com/northwestwind/moreboots/handler/MoreBootsHandler.java +++ b/src/main/java/com/northwestwind/moreboots/handler/MoreBootsHandler.java @@ -6,6 +6,7 @@ import com.northwestwind.moreboots.init.EffectInit; import com.northwestwind.moreboots.init.ItemInit; import com.northwestwind.moreboots.init.block.GlowstoneDustBlock; +import com.northwestwind.moreboots.init.block.InvisibleBlock; import com.northwestwind.moreboots.init.block.KeybindInit; import net.minecraft.block.*; import net.minecraft.block.material.Material; @@ -25,6 +26,7 @@ import net.minecraft.potion.*; import net.minecraft.server.MinecraftServer; import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tags.FluidTags; import net.minecraft.util.*; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; @@ -32,7 +34,6 @@ import net.minecraft.util.math.vector.Vector3d; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.Explosion; -import net.minecraft.world.biome.Biome; import net.minecraft.world.server.ServerWorld; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -41,7 +42,6 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerXpEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import org.apache.logging.log4j.LogManager; import org.lwjgl.glfw.GLFW; import java.util.*; @@ -118,7 +118,7 @@ public void onLivingDamage(final LivingDamageEvent event) { if (entity.world.isRemote) return; event.setCanceled(true); boots.damageItem(1, entity, entity1 -> entity1.playSound(SoundEvents.BLOCK_GLASS_BREAK, 1.0f, 1.0f)); - } else if (boots.getItem().equals(ItemInit.BLAZE_BOOTS)) { + } else if (boots.getItem().equals(ItemInit.BLAZE_BOOTS) || boots.getItem().equals(ItemInit.STRIDER_BOOTS)) { DamageSource source = event.getSource(); if (source.equals(DamageSource.IN_FIRE) || source.equals(DamageSource.LAVA) || source.equals(DamageSource.ON_FIRE)) event.setCanceled(true); @@ -376,16 +376,31 @@ public void onLivingUpdate(final LivingEvent.LivingUpdateEvent event) { newBoots.setDamage(boots.getDamage()); entity.setItemStackToSlot(EquipmentSlotType.FEET, newBoots); } - } else if (boots.getItem().equals(ItemInit.JESUS_BOOTS)) { + } else if (boots.getItem().equals(ItemInit.FLOATIE_BOOTS)) { BlockPos pos = new BlockPos(entity.getPositionVec()); - FluidState under = entity.world.getFluidState(pos.down()); if (entity.isInWater()) { entity.setMotion(entity.getMotion().add(0, 0.1, 0)); entity.velocityChanged = true; - } else if (!entity.world.isRemote && entity.world.isAirBlock(pos.down())) { - if (!(under.getFluid().equals(Fluids.WATER) || under.getFluid().equals(Fluids.FLOWING_WATER))) return; - entity.world.setBlockState(pos.down(), BlockInit.INVISIBLE.getDefaultState()); - } + } else if (!entity.world.isRemote) + for (BlockPos blockpos : BlockPos.getAllInBoxMutable(pos.add(-1, -1.0D, -1), pos.add(1, -1.0D, 1))) { + FluidState under = entity.world.getFluidState(blockpos); + if (!entity.world.getBlockState(blockpos).getCollisionShape(entity.world, blockpos).equals(VoxelShapes.empty()) || !under.isTagged(FluidTags.WATER)) + continue; + entity.world.setBlockState(blockpos, BlockInit.INVISIBLE.getDefaultState().with(BlockStateProperties.WATERLOGGED, true).with(InvisibleBlock.FLOWINGLOGGED, !under.isSource())); + } + } else if (boots.getItem().equals(ItemInit.STRIDER_BOOTS)) { + entity.extinguish(); + BlockPos pos = new BlockPos(entity.getPositionVec()); + if (entity.isInLava()) { + entity.setMotion(entity.getMotion().add(0, 0.1, 0)); + entity.velocityChanged = true; + } else if (!entity.world.isRemote) + for (BlockPos blockpos : BlockPos.getAllInBoxMutable(pos.add(-1, -1.0D, -1), pos.add(1, -1.0D, 1))) { + FluidState under = entity.world.getFluidState(blockpos); + if (!entity.world.getBlockState(blockpos).getCollisionShape(entity.world, blockpos).equals(VoxelShapes.empty()) || !under.isTagged(FluidTags.LAVA)) + continue; + entity.world.setBlockState(blockpos, BlockInit.INVISIBLE.getDefaultState().with(InvisibleBlock.LAVALOGGED, true).with(InvisibleBlock.FLOWINGLOGGED, !under.isSource())); + } } } @@ -423,10 +438,15 @@ public void onLivingDrop(final LivingDropsEvent event) { int shouldDrop = rng.nextInt((1 + looting) * 2) + looting; if (shouldDrop < 1) return; LivingEntity entity = event.getEntityLiving(); - if (!entity.getType().equals(EntityType.BAT)) return; - ItemStack stack = new ItemStack(ItemInit.BAT_HIDE, shouldDrop); - ItemEntity item = new ItemEntity(entity.world, entity.getPosX(), entity.getPosY(), entity.getPosZ(), stack); - event.getDrops().add(item); + if (entity.getType().equals(EntityType.BAT)) { + ItemStack stack = new ItemStack(ItemInit.BAT_HIDE, shouldDrop); + ItemEntity item = new ItemEntity(entity.world, entity.getPosX(), entity.getPosY(), entity.getPosZ(), stack); + event.getDrops().add(item); + } else if (entity.getType().equals(EntityType.field_233589_aE_)) { + ItemStack stack = new ItemStack(ItemInit.STRIDER_FOOT, shouldDrop); + ItemEntity item = new ItemEntity(entity.world, entity.getPosX(), entity.getPosY(), entity.getPosZ(), stack); + event.getDrops().add(item); + } } private void breakGlassBoots(ItemStack stack, Potion potion, LivingEntity entity) { @@ -437,10 +457,10 @@ private void breakGlassBoots(ItemStack stack, Potion potion, LivingEntity entity areaeffectcloudentity.setRadius(3.0F); areaeffectcloudentity.setRadiusOnUse(-0.5F); areaeffectcloudentity.setWaitTime(10); - areaeffectcloudentity.setRadiusPerTick(-areaeffectcloudentity.getRadius() / (float)areaeffectcloudentity.getDuration()); + areaeffectcloudentity.setRadiusPerTick(-areaeffectcloudentity.getRadius() / (float) areaeffectcloudentity.getDuration()); areaeffectcloudentity.setPotion(potion); - for(EffectInstance effectinstance : PotionUtils.getFullEffectsFromItem(stack)) { + for (EffectInstance effectinstance : PotionUtils.getFullEffectsFromItem(stack)) { areaeffectcloudentity.addEffect(new EffectInstance(effectinstance)); } diff --git a/src/main/java/com/northwestwind/moreboots/handler/Utils.java b/src/main/java/com/northwestwind/moreboots/handler/Utils.java index b01c8fe..4e788d1 100644 --- a/src/main/java/com/northwestwind/moreboots/handler/Utils.java +++ b/src/main/java/com/northwestwind/moreboots/handler/Utils.java @@ -1,5 +1,8 @@ package com.northwestwind.moreboots.handler; +import com.northwestwind.moreboots.init.BlockInit; +import com.northwestwind.moreboots.init.block.InvisibleBlock; +import it.unimi.dsi.fastutil.objects.Object2ByteLinkedOpenHashMap; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -9,10 +12,16 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.fluid.FlowingFluid; import net.minecraft.fluid.Fluid; +import net.minecraft.fluid.FluidState; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.math.shapes.VoxelShapes; +import net.minecraft.world.IBlockReader; import net.minecraft.world.World; import net.minecraft.world.server.ServerWorld; @@ -64,19 +73,18 @@ public static void changeGroundBlocks(LivingEntity living, World worldIn, BlockP if (blockstate1.isAir(worldIn, blockpos$mutable)) { BlockState blockstate2 = worldIn.getBlockState(blockpos); boolean shouldChange = target.contains(blockstate2.getBlock()); - if (shouldChange) worldIn.setBlockState(blockpos, to.get(new Random().nextInt(to.size())).getDefaultState()); + if (shouldChange) + worldIn.setBlockState(blockpos, to.get(new Random().nextInt(to.size())).getDefaultState()); } } } } - public static byte[] objToBytes(Object obj) - { + public static byte[] objToBytes(Object obj) { byte[] bytes = null; ByteArrayOutputStream bos = null; ObjectOutputStream oos = null; - try - { + try { bos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(bos); oos.writeObject(obj); @@ -84,51 +92,35 @@ public static byte[] objToBytes(Object obj) bytes = bos.toByteArray(); } catch (IOException e) { e.printStackTrace(); - } finally - { + } finally { try { - if(oos != null)oos.close(); - if(bos != null)bos.close(); - } catch(IOException ex) { + if (oos != null) oos.close(); + if (bos != null) bos.close(); + } catch (IOException ex) { ex.printStackTrace(); } } return bytes; } - public static Object bytesToObj(byte[] bytes) - { + public static Object bytesToObj(byte[] bytes) { Object obj = null; ByteArrayInputStream bis = null; ObjectInputStream ois = null; - try - { + try { bis = new ByteArrayInputStream(bytes); ois = new ObjectInputStream(bis); obj = ois.readObject(); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); - } finally - { + } finally { try { if (ois != null) ois.close(); if (bis != null) bis.close(); - } catch(IOException ex) { + } catch (IOException ex) { ex.printStackTrace(); } } return obj; } - - @Nullable - public static Entity findEntityByUUID(UUID uuid, ServerWorld world) { - Stream entities = world.getEntities(); - LivingEntity entity = null; - for(Entity ent : entities.toArray(Entity[]::new)) { - if(ent.getUniqueID().equals(uuid)) { - entity = (LivingEntity) ent; - } - } - return entity; - } } diff --git a/src/main/java/com/northwestwind/moreboots/init/ItemInit.java b/src/main/java/com/northwestwind/moreboots/init/ItemInit.java index d91b826..2bd6ee4 100644 --- a/src/main/java/com/northwestwind/moreboots/init/ItemInit.java +++ b/src/main/java/com/northwestwind/moreboots/init/ItemInit.java @@ -4,7 +4,6 @@ import com.northwestwind.moreboots.Reference; import com.northwestwind.moreboots.init.item.ArmorItemBase; import com.northwestwind.moreboots.init.item.ItemBase; -import com.northwestwind.moreboots.init.item.SniperCrossbowItem; import net.minecraft.block.Blocks; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.*; @@ -59,12 +58,14 @@ public class ItemInit { public static final Item KA_BOOTS = registerBoots(ModArmorMaterial.KA, "ka_boots"); public static final Item GLASS_BOOTS = registerBoots(ModArmorMaterial.GLASS, "glass_boots"); public static final Item GLASS_BOOTS_EMPTY = registerBoots(ModArmorMaterial.GLASS_EMPTY, "glass_boots_empty"); - public static final Item JESUS_BOOTS = registerBoots(ModArmorMaterial.JESUS, "jesus_boots"); + public static final Item FLOATIE_BOOTS = registerBoots(ModArmorMaterial.FLOATIE, "floatie_boots", true); + public static final Item STRIDER_BOOTS = registerBoots(ModArmorMaterial.STRIDER, "strider_boots", true); //public static final Item SNIPER_BOOTS = registerBoots(ModArmorMaterial.SNIPER, "sniper_boots"); public static final Item QUARTZ_INGOT = new ItemBase(new Item.Properties().group(MoreBoots.MoreBootsItemGroup.INSTANCE), "quartz_ingot").setRegistryName("quartz_ingot"); public static final Item METAL_MIX = new ItemBase(new Item.Properties().group(MoreBoots.MoreBootsItemGroup.INSTANCE), "metal_mix").setRegistryName("metal_mix"); public static final Item BAT_HIDE = new ItemBase(new Item.Properties().group(MoreBoots.MoreBootsItemGroup.INSTANCE), "bat_hide").setRegistryName("bat_hide"); + public static final Item STRIDER_FOOT = new ItemBase(new Item.Properties().group(MoreBoots.MoreBootsItemGroup.INSTANCE), "strider_foot").setRegistryName("strider_foot"); //public static final Item CROSSBOW = new SniperCrossbowItem().setRegistryName("minecraft", "crossbow"); @@ -102,18 +103,24 @@ public static void registerItems(final RegistryEvent.Register event) { event.getRegistry().register(KA_BOOTS); event.getRegistry().register(GLASS_BOOTS); event.getRegistry().register(GLASS_BOOTS_EMPTY); - event.getRegistry().register(JESUS_BOOTS); + event.getRegistry().register(FLOATIE_BOOTS); + event.getRegistry().register(STRIDER_BOOTS); //event.getRegistry().register(SNIPER_BOOTS); event.getRegistry().register(QUARTZ_INGOT); event.getRegistry().register(METAL_MIX); event.getRegistry().register(BAT_HIDE); + event.getRegistry().register(STRIDER_FOOT); //event.getRegistry().register(CROSSBOW); } public static Item registerBoots(IArmorMaterial material, String registryName) { - return new ArmorItemBase(material, registryName).setRegistryName(registryName); + return registerBoots(material, registryName, false); + } + + public static Item registerBoots(IArmorMaterial material, String registryName, boolean isNetherite) { + return new ArmorItemBase(material, registryName, isNetherite).setRegistryName(registryName); } public enum ModArmorMaterial implements IArmorMaterial { @@ -180,7 +187,8 @@ public enum ModArmorMaterial implements IArmorMaterial { GLASS_EMPTY(Reference.MODID + ":glass", 10, new int[] { 4, 1, 1, 1 }, 20, SoundEvents.ITEM_BOTTLE_FILL, 0.0f, 0.0f, () -> Ingredient.fromItems(Items.GLASS)), GLASS(Reference.MODID + ":glass", 10, new int[] { 4, 1, 1, 1 }, 20, SoundEvents.BLOCK_GLASS_BREAK, 0.0f, 0.0f, () -> Ingredient.fromItems(Items.GLASS)), SNIPER(Reference.MODID + ":sniper", 8, new int[] { 2, 1, 1, 1 }, 12, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 0.0f, 0.0f, 90000, () -> Ingredient.fromItems(Items.TIPPED_ARROW)), - JESUS(Reference.MODID + ":jesus", 40, new int[] { 4, 1, 1, 1 }, 15, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 1.0f, 0.0f, 160000, () -> Ingredient.fromItems(Items.field_234759_km_)); + FLOATIE(Reference.MODID + ":floatie", 40, new int[] { 4, 1, 1, 1 }, 15, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 1.0f, 0.0f, 160000, () -> Ingredient.fromItems(Items.field_234759_km_)), + STRIDER(Reference.MODID + ":strider", 40, new int[] { 4, 1, 1, 1 }, 15, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 1.0f, 0.0f, 160000, () -> Ingredient.fromItems(ItemInit.STRIDER_FOOT)); private static final int[] MAX_DAMAGE_ARRAY = new int[] { 16, 16, 16, 16 }; private final String name; private final float maxDamageFactor; diff --git a/src/main/java/com/northwestwind/moreboots/init/block/InvisibleBlock.java b/src/main/java/com/northwestwind/moreboots/init/block/InvisibleBlock.java index 2cc263b..1409a8e 100644 --- a/src/main/java/com/northwestwind/moreboots/init/block/InvisibleBlock.java +++ b/src/main/java/com/northwestwind/moreboots/init/block/InvisibleBlock.java @@ -1,29 +1,32 @@ package com.northwestwind.moreboots.init.block; -import com.northwestwind.moreboots.Reference; import com.northwestwind.moreboots.init.ItemInit; import com.northwestwind.moreboots.init.tileentity.InvisibleTileEntity; import com.northwestwind.moreboots.interfaces.IVanillaLoggable; import net.minecraft.block.Block; -import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; -import net.minecraft.block.IWaterLoggable; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; +import net.minecraft.fluid.*; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; +import net.minecraft.pathfinding.PathType; import net.minecraft.state.BooleanProperty; -import net.minecraft.state.Property; import net.minecraft.state.StateContainer; import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.SlabType; +import net.minecraft.tags.FluidTags; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.math.shapes.VoxelShapes; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; + +import javax.annotation.Nullable; public class InvisibleBlock extends Block implements IVanillaLoggable { public static final BooleanProperty LAVALOGGED = BooleanProperty.create("lava_logged"); @@ -36,24 +39,26 @@ public InvisibleBlock() { this.setDefaultState(this.getDefaultState().with(LAVALOGGED, false).with(WATERLOGGED, false).with(FLOWINGLOGGED, false)); } + @Override + public boolean isTransparent(BlockState state) { + return true; + } + @Override public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return TOP_SHAPE; + return VoxelShapes.empty(); } @Override public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { Entity entity = context.getEntity(); if (!(entity instanceof LivingEntity)) return VoxelShapes.empty(); - if (!((LivingEntity) entity).getItemStackFromSlot(EquipmentSlotType.FEET).getItem().equals(ItemInit.JESUS_BOOTS)) return VoxelShapes.empty(); + ItemStack boots = ((LivingEntity) entity).getItemStackFromSlot(EquipmentSlotType.FEET); + if (!boots.getItem().equals(ItemInit.STRIDER_BOOTS) && !boots.getItem().equals(ItemInit.FLOATIE_BOOTS)) return VoxelShapes.empty(); if (entity.getPosY() < pos.up().getY()) return VoxelShapes.empty(); return TOP_SHAPE; } - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.INVISIBLE; - } - @Override protected void fillStateContainer(StateContainer.Builder builder) { super.fillStateContainer(builder); @@ -69,4 +74,60 @@ public boolean hasTileEntity(BlockState state) { public TileEntity createTileEntity(BlockState state, IBlockReader world) { return new InvisibleTileEntity(); } + + @Override + public boolean isReplaceable(BlockState p_225541_1_, Fluid p_225541_2_) { + return true; + } + + @Override + public boolean isReplaceable(BlockState state, BlockItemUseContext useContext) { + return true; + } + + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) { + FluidState fluidstate = context.getWorld().getFluidState(context.getPos()); + if (fluidstate.isTagged(FluidTags.WATER)) { + BlockState state = this.getDefaultState().with(WATERLOGGED, true); + if (!fluidstate.isSource()) state = state.with(FLOWINGLOGGED, true); + return state; + } else if (fluidstate.isTagged(FluidTags.LAVA)) { + BlockState state = this.getDefaultState().with(LAVALOGGED, true); + if (!fluidstate.isSource()) state = state.with(FLOWINGLOGGED, true); + return state; + } else return this.getDefaultState(); + } + + public FluidState getFluidState(BlockState state) { + FluidState fluidState = super.getFluidState(state); + if (state.get(WATERLOGGED)) { + if (state.get(FLOWINGLOGGED)) fluidState = Fluids.FLOWING_WATER.getFlowingFluidState(4, false); + else fluidState = Fluids.WATER.getStillFluidState(false); + } else if (state.get(LAVALOGGED)) { + if (state.get(FLOWINGLOGGED)) fluidState = Fluids.FLOWING_LAVA.getFlowingFluidState(4, false); + else fluidState = Fluids.LAVA.getStillFluidState(false); + } + return fluidState; + } + + public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) { + if (stateIn.get(WATERLOGGED)) { + if (stateIn.get(FLOWINGLOGGED)) worldIn.getPendingFluidTicks().scheduleTick(currentPos, Fluids.FLOWING_WATER, Fluids.FLOWING_WATER.getTickRate(worldIn)); + else worldIn.getPendingFluidTicks().scheduleTick(currentPos, Fluids.WATER, Fluids.WATER.getTickRate(worldIn)); + } else if (stateIn.get(LAVALOGGED)) { + if (stateIn.get(FLOWINGLOGGED)) worldIn.getPendingFluidTicks().scheduleTick(currentPos, Fluids.FLOWING_LAVA, Fluids.FLOWING_LAVA.getTickRate(worldIn)); + else worldIn.getPendingFluidTicks().scheduleTick(currentPos, Fluids.LAVA, Fluids.LAVA.getTickRate(worldIn)); + } + + return super.updatePostPlacement(stateIn, facing, facingState, worldIn, currentPos, facingPos); + } + + public boolean allowsMovement(BlockState state, IBlockReader worldIn, BlockPos pos, PathType type) { + if (type == PathType.WATER) { + return worldIn.getFluidState(pos).isTagged(FluidTags.WATER); + } else return worldIn.getFluidState(pos).isTagged(FluidTags.LAVA) || super.allowsMovement(state, worldIn, pos, type); + } + + } diff --git a/src/main/java/com/northwestwind/moreboots/init/item/ArmorItemBase.java b/src/main/java/com/northwestwind/moreboots/init/item/ArmorItemBase.java index b058a16..2aa69c3 100644 --- a/src/main/java/com/northwestwind/moreboots/init/item/ArmorItemBase.java +++ b/src/main/java/com/northwestwind/moreboots/init/item/ArmorItemBase.java @@ -36,11 +36,15 @@ public class ArmorItemBase extends ArmorItem { private String registryName; - public ArmorItemBase(IArmorMaterial material, String registryName) { - super(material, EquipmentSlotType.FEET, material.equals(ItemInit.ModArmorMaterial.REDSTONE) ? new Item.Properties().group(MoreBoots.MoreBootsItemGroup.INSTANCE).maxStackSize(64) : new Item.Properties().group(MoreBoots.MoreBootsItemGroup.INSTANCE)); + public ArmorItemBase(IArmorMaterial material, String registryName, boolean isNetherite) { + super(material, EquipmentSlotType.FEET, isNetherite ? new Item.Properties().group(MoreBoots.MoreBootsItemGroup.INSTANCE).func_234689_a_() : new Item.Properties().group(MoreBoots.MoreBootsItemGroup.INSTANCE)); this.registryName = registryName; } + public ArmorItemBase(IArmorMaterial material, String registryName) { + this(material, registryName, false); + } + @Override @OnlyIn(Dist.CLIENT) public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { diff --git a/src/main/java/com/northwestwind/moreboots/init/tileentity/InvisibleTileEntity.java b/src/main/java/com/northwestwind/moreboots/init/tileentity/InvisibleTileEntity.java index 5b6757a..4416794 100644 --- a/src/main/java/com/northwestwind/moreboots/init/tileentity/InvisibleTileEntity.java +++ b/src/main/java/com/northwestwind/moreboots/init/tileentity/InvisibleTileEntity.java @@ -2,10 +2,10 @@ import com.northwestwind.moreboots.init.ItemInit; import com.northwestwind.moreboots.init.TileEntityInit; -import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EntityPredicates; @@ -24,14 +24,14 @@ public void tick() { List entities = world.getEntitiesInAABBexcluding(null, new AxisAlignedBB(pos).grow(0, 1, 0), EntityPredicates.NOT_SPECTATING); if (shouldBeGone(entities)) { world.removeBlock(pos, false); - } } private boolean shouldBeGone(List entities) { for (Entity entity : entities) { if (!(entity instanceof LivingEntity)) continue; - if (((LivingEntity) entity).getItemStackFromSlot(EquipmentSlotType.FEET).getItem().equals(ItemInit.JESUS_BOOTS)) return false; + ItemStack boots = ((LivingEntity) entity).getItemStackFromSlot(EquipmentSlotType.FEET); + if (boots.getItem().equals(ItemInit.FLOATIE_BOOTS) || boots.getItem().equals(ItemInit.STRIDER_BOOTS)) return false; } return true; } diff --git a/src/main/java/com/northwestwind/moreboots/interfaces/IVanillaLoggable.java b/src/main/java/com/northwestwind/moreboots/interfaces/IVanillaLoggable.java index 4a21068..36cca05 100644 --- a/src/main/java/com/northwestwind/moreboots/interfaces/IVanillaLoggable.java +++ b/src/main/java/com/northwestwind/moreboots/interfaces/IVanillaLoggable.java @@ -9,32 +9,29 @@ import net.minecraft.fluid.FluidState; import net.minecraft.fluid.Fluids; import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tags.FluidTags; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorld; +import net.minecraftforge.common.util.Constants; +import org.apache.logging.log4j.LogManager; public interface IVanillaLoggable extends IBucketPickupHandler, ILiquidContainer { default boolean canContainFluid(IBlockReader worldIn, BlockPos pos, BlockState state, Fluid fluidIn) { - return (!state.get(BlockStateProperties.WATERLOGGED) && (fluidIn == Fluids.WATER || fluidIn == Fluids.FLOWING_WATER)) || (!state.get(InvisibleBlock.LAVALOGGED) && (fluidIn == Fluids.LAVA || fluidIn == Fluids.FLOWING_LAVA)); + return (!state.get(BlockStateProperties.WATERLOGGED) && fluidIn.isIn(FluidTags.WATER)) || (!state.get(InvisibleBlock.LAVALOGGED) && fluidIn.isIn(FluidTags.LAVA)); } default boolean receiveFluid(IWorld worldIn, BlockPos pos, BlockState state, FluidState fluidStateIn) { Fluid fluid = fluidStateIn.getFluid(); - if (!state.get(BlockStateProperties.WATERLOGGED) && (fluid == Fluids.WATER || fluid == Fluids.FLOWING_WATER)) { + if (canContainFluid(worldIn, pos, state, fluid)) { if (!worldIn.isRemote()) { - worldIn.setBlockState(pos, state.with(BlockStateProperties.WATERLOGGED, true), 3); - if (fluid == Fluids.FLOWING_WATER) worldIn.setBlockState(pos, state.with(InvisibleBlock.FLOWINGLOGGED, true), 3); + BlockState newState = state; + if (fluidStateIn.isTagged(FluidTags.WATER)) newState = newState.with(BlockStateProperties.WATERLOGGED, true); + else if (fluidStateIn.isTagged(FluidTags.LAVA)) newState = newState.with(InvisibleBlock.LAVALOGGED, true); + if (!fluidStateIn.isSource()) newState = newState.with(InvisibleBlock.FLOWINGLOGGED, true); + worldIn.setBlockState(pos, newState, Constants.BlockFlags.DEFAULT); worldIn.getPendingFluidTicks().scheduleTick(pos, fluidStateIn.getFluid(), fluidStateIn.getFluid().getTickRate(worldIn)); } - - return true; - } else if (state.get(InvisibleBlock.LAVALOGGED) && (fluid == Fluids.LAVA || fluid == Fluids.FLOWING_LAVA)) { - if (!worldIn.isRemote()) { - worldIn.setBlockState(pos, state.with(InvisibleBlock.LAVALOGGED, true), 3); - if (fluid == Fluids.FLOWING_LAVA) worldIn.setBlockState(pos, state.with(InvisibleBlock.FLOWINGLOGGED, true), 3); - worldIn.getPendingFluidTicks().scheduleTick(pos, fluidStateIn.getFluid(), fluidStateIn.getFluid().getTickRate(worldIn)); - } - return true; } else { return false; diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 41517aa..70dd0c4 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -5,7 +5,7 @@ issueTrackerURL="https://github.com/North-West-Wind/MoreBoots/issues" [[mods]] modId="moreboots" -version="1.4.2" +version="1.5.0" displayName="More Boots" updateJSONURL="https://github.com/North-West-Wind/MoreBoots/raw/main/update.json" displayURL="https://github.com/North-West-Wind/MoreBoots" diff --git a/src/main/resources/assets/moreboots/blockstates/boots_invisible_placeholder.json b/src/main/resources/assets/moreboots/blockstates/boots_invisible_placeholder.json new file mode 100644 index 0000000..2c8f02f --- /dev/null +++ b/src/main/resources/assets/moreboots/blockstates/boots_invisible_placeholder.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/air" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/moreboots/lang/en_us.json b/src/main/resources/assets/moreboots/lang/en_us.json index 71955b0..96c9cee 100644 --- a/src/main/resources/assets/moreboots/lang/en_us.json +++ b/src/main/resources/assets/moreboots/lang/en_us.json @@ -35,10 +35,13 @@ "item.moreboots.ka_boots": "Kill Aura Boots", "item.moreboots.glass_boots_empty": "Empty Glass Boots", "item.moreboots.glass_boots": "Glass Boots", + "item.moreboots.floatie_boots": "Floatie Boots", + "item.moreboots.strider_boots": "Strider Boots", "item.moreboots.quartz_ingot": "Quartz Ingot", "item.moreboots.metal_mix": "Metal Mix", "item.moreboots.bat_hide": "Bat Hide", + "item.moreboots.strider_foot": "Strider Foot", "block.moreboots.rainbow_wool": "Rainbow Wool", "block.moreboots.glowstone_dust": "Glowstone Dust Block", @@ -86,6 +89,8 @@ "tooltip.moreboots.ka_boots": "\u00A77\u00A7oHelps with your aim", "tooltip.moreboots.glass_boots_empty": "\u00A77\u00A7oFill with water to brew", "tooltip.moreboots.glass_boots": "\u00A77\u00A7oActs like potions but on feet", + "tooltip.moreboots.floatie_boots": "\u00A77\u00A7oFloats on water", + "tooltip.moreboots.strider_boots": "\u00A77\u00A7oWalks on lava", "itemGroup.morebootstab": "More Boots", "death.attack.stomp": "%1$s was stomped by %2$s", @@ -159,6 +164,10 @@ "advancements.moreboots.boot_recycler.description": "Craft the Boot Recycler to convert boots into energy.", "advancements.moreboots.glass_boots.title": "Permanent Effect", "advancements.moreboots.glass_boots.description": "Obtain the Glass Boots", + "advancements.moreboots.floatie_boots.title": "Jesus?", + "advancements.moreboots.floatie_boots.description": "Obtain the Floatie Boots", + "advancements.moreboots.strider_boots.title": "I Need Lava", + "advancements.moreboots.strider_boots.description": "Obtain the Strider Boots", "key.categories.moreboots": "More Boots", diff --git a/src/main/resources/assets/moreboots/models/item/floatie_boots.json b/src/main/resources/assets/moreboots/models/item/floatie_boots.json new file mode 100644 index 0000000..e926bd4 --- /dev/null +++ b/src/main/resources/assets/moreboots/models/item/floatie_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "moreboots:items/floatie_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/moreboots/models/item/strider_boots.json b/src/main/resources/assets/moreboots/models/item/strider_boots.json new file mode 100644 index 0000000..be783fe --- /dev/null +++ b/src/main/resources/assets/moreboots/models/item/strider_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "moreboots:items/strider_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/moreboots/models/item/strider_foot.json b/src/main/resources/assets/moreboots/models/item/strider_foot.json new file mode 100644 index 0000000..30c82b0 --- /dev/null +++ b/src/main/resources/assets/moreboots/models/item/strider_foot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "moreboots:items/strider_foot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/moreboots/textures/items/floatie_boots.png b/src/main/resources/assets/moreboots/textures/items/floatie_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..f8338d9c8aca03d8dffb63ad027b473893a241c2 GIT binary patch literal 1807 zcmbVNU1%Id9N#k})|iy5wiu$~u&I!0_jYG*?{0VLnI?BJcdZwX%az0jA#=NPcS~+} zw!3?|y9lBNQv2eAg0wb*Nd4$bK@d@jNGyW-(kFcrO6rR!@j;LZrRVH@kw{WQ7j}1c z<~P6p@BcCXJ)fPO86F%RWEf^Rol55DJLumB2I%vtznX}?9AAs7uyigFx?0+e|{=3$tFQB@LDQ3RcfrPdt1sOFN-cWlwGI9v8S zTjlv$trn_B98skDsi8jma3#Fpn$EbL+JGVzF8CVNo#mUkGS zq0MA^Hg?rwnmrS)H@!^V=mca}w3~0(n9pICR2>aZFH@OgzBjg-a4_w1B9V1S(WuY`H#ai{ z($k43RH9K%48fM%Oh!#xu7@lQr;~A(#wTPLx+=)gm=Kd=TvWm_E{vowhjdZlur4S< z5k};KjJo@iM63E$(A}@o{gJS&VG%|-0mc+gmZTzAC?LcYB&@-r1fe3~?*11YgPuZE zxo;l-Z2IM+rVN)Rw$V8~bNFm$R53uSVpOF0Cn3&iehFZm?MxfHL|}g&v}tQ)OiAxi z7j2kJie3#lc(O#JwV%@C_tNj8<$J5&U;g%1zoS&|Q++46S{Yd-Oq(mu`u^~K8)~P9 z|8Le>Yuj2@7f$=2KkPMN`q69Q*rL=9ZO}iyHE@SE_aD;9$-I0>yWMO~^gVq6*&|Hf z+URKW%&$j+50sgs59a!AX(LQ7`|g>wpMn?Gzx)8a+E=(fP&`>Mu8f#|PeCy>h;G?)%jvM_+mT?v0_(nOlo9UpF_tc&0h_zI1cowZp5o z!9RDhmzoy?#l^@to!B_Md8!JO;M$cZla1FO8Dhd0`<1y*FKzk1tn~D3^6J#$8~*}) CQ9%v> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/moreboots/textures/items/strider_boots.png b/src/main/resources/assets/moreboots/textures/items/strider_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..f3fe31129664249fb0cd6e72c86f5ad51af06b19 GIT binary patch literal 1578 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 SFuS7w0000l1g(HXl4@N&i zN^H)0%e~|6yXv0V^-Ryl)q}d3?dh5AdRk+lhmWcRyuSbKt`9%I{ORTH7%4YINYEk(`1to9 zSBk5WDrk?c`Rrp>YvLpDWEu9T?}P$FXW1i+W+ z&qIjt_Cw5nH3Yo*?qNtk6bC%YuPz2S0Z{V?#B31dahr?eI5R&(9}3cy@nYi``XTj=|Hs2`|vxw zj|vA15>QLPXB=^jM;{aW;65BFZ09qze^)Xu4${wQ+9bh`PDDvTSJoBxfx03*`gOX7 zUuQc>?Ipl(^tG5lNN1x@du*ShHe~y!iJYWMtQpA}5DO^u;~L1ll2fUL&*U0>`GL8udNxEv3YI zPeg*h3adNznSJC^ct(kYuI4|{k`uWKXMAWuLyM-x?mZ+anuLHvVjmu`)D0k; zC%_}`gVWQCJGZ~u3C`yl7q;MUBmq#onert9R9Y)Ox$>o)xs)6^L1PqE-#vSJRcmaf zctk*y4o3ti5vvb+5dm5ZWqY(WwJ8Fy#PMZ9E5f`E^V~E6n%+WrY+OV+`qTt~=viF= zLITtRqChz2))a%_tQJ7U_1zk6bdRZ4f!UM?u(mS>C;?EO`*$QD`q}EHf}n4Q@v~b% z>t%4#oIqUw)&OOh^+EabC+An6Rq?4`j+$qJRG2d!5itb;nhEmQG!ujpoMnCOrT@Dn zI61420aQre__P*Cf;LTnzU^`Lbp=qRN!DfxBs$|b$4r+9poOR;T zlbzsv^H^e8eDBFDx(%~Tls8I3CzU%k-T2gTFK;ZE@pq9m_tO+i{1$;}4sj&W@_r}BkErynUbhxO0 zSsA-1s(S$u5u39BEqVKfh?m7L^MEXiZ)zFj%(5E9%8-`G)dlolU8g3XNnHR+MT)CM zC^cG53{i_{wK3An4ZPIt1gKlME8z1gt3V1Zb*r+P1hEZ$IrF?{tRToL(5xl# zL?V$$Boc{4B9TZW5{X12kw_#Gi9{liNF)-8L?V$$Boc{4B9TZW5{X12v3mRmhm5FY TPcj?}00000NkvXXu0mjfuzaa( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/moreboots/textures/models/armor/strider_layer_1.png b/src/main/resources/assets/moreboots/textures/models/armor/strider_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6257e6898a80f4a9bddb0d5e282b586b1f5749 GIT binary patch literal 2391 zcmbVO3s4m29bZ5Y6&utPj4^Rt6Pq*H=e@TcB6oy4@dyGIuEvCAckgb)?e4j|+#TQp zl^Pv+)r3Ste8f&n#F!>3)+8uat74pl#0RF(33ghOrh_6lg+vGJ9*-N7n$*e8?C!VU z_xpbT-~aLbXE$YMWlWwpV9{j@Y`K708E+|zN3KG zUY`yCvE5u=fl}aHOwuBcP>fi_A|c+dq5)w3f{>r0i&+IMVm+K-fqFh_fk2M2K>2zn z=JZ=xFJ~{4*xa(LJi4ryHZ#zI6mWisR0()ip}-LD6J#=EfrfcWbsU~XA#fO?6kDK$ zVS`|SGaIyu5)0}P15D#OJ!mu|xIwEko1X#+3^$>e3B|QAZXk6SNf6-Z1*z5~#!cqf zo*uQOepw)|qWDP^4F-cqP>YC?2gS{1Gl~%?LBJ{kmP-YN3c-RrXNMI&!6))Lff0kU=B_=gjZ#<(L|_C4VxD#PkC6> zFL)p@5=qi3`b0@Jtg6%AJ@2quvnA2Z`P2nDCnF7Xq+1QR*Rt1n!85??$3h}+Mt(JNq?d)Mqsk&R)UnoF7&9; zx}VZRe@wqj1%6un{pIg})Ze>Qf2R7;;L=`7@UUugMWL`iXt)iHqz3(A)`r*aYFT4& zwGW1ekp`@OL|Qm2sMM0$puc+pwgW)S6o+kLp7+bEu1=vNHL;}Sv1HBui-}ch>r$cm z%;!4lUNzkLe8ZvHr5y77`SZ0`s>csiWTaH|Y`yMV`5D8s*Dy2ZEF-rBg9#~~pxe{F zBUyI7l{=&MOw!5+cC|hG<=m5*5b*A)A`0Kx2A_DpC?4Ck*lTEjmrRceZM*r7mP?Ad z5||x(ywCF>6o)zH?u#v4GI3f=>WpKxg#}xeA8-1l&i zZ|wVfCUP6784t!>uIpWkCf1i$9{R+Zu<37Kefwz2FSf*Q*kU@pyv+(|X0GFeadl`? z)61t~+T-{yT3I-~F8b`uw3@GxxFc1)eMrOG1<`BYoOG3ac=_#F_9_2NdaVK6dTG{G z_?8Dr6>e6T)*rpbH$M8Z2K%D3qwMCk%wJF0tpE1Ck1~&5$Zf1&RVMzWbv@9kIUm2f zH@dq!ar5yj^*7q1TY3GosCl;^Z~V^PU!Az!txb-$GY^gH`e0>F&mE*|)&8UV+WnU> z$GAnG{Ob1|#Gy4%^(#$l57&lzllSUYPwW4%{jmJ_3417(?Q$jJ(=19#ILWKpLU@?2Xt*(2OO|#-V@Gg7nyf#o7CF(n@+vPrZ^xV+z_~0^l#?bWN9ylx( zZd}vyM(4g|AL`onf1JQFuN-_N|H{AS99i7>=RfXjnJ%r`eEsZ%k_1(d_u+Mkm7i<> z(bk{be(ajP`a+iL^4y9$E4q@*Rg3o8QobJA(>H0+_&ft0Xnyv&{-q~+8>2dfTcyX> Y+$`aRx3ZJ^!@oX`^eo%EX@%?l3j&d8$p8QV literal 0 HcmV?d00001 diff --git a/src/main/resources/data/moreboots/advancements/moreboots/floatie_boots.json b/src/main/resources/data/moreboots/advancements/moreboots/floatie_boots.json new file mode 100644 index 0000000..69daa14 --- /dev/null +++ b/src/main/resources/data/moreboots/advancements/moreboots/floatie_boots.json @@ -0,0 +1,36 @@ +{ + "parent": "moreboots:moreboots/root", + "display": { + "icon": { + "item": "moreboots:floatie_boots", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.moreboots.floatie_boots.title" + }, + "description": { + "translate": "advancements.moreboots.floatie_boots.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "floatie_boots": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "moreboots:floatie_boots" + } + ] + } + } + }, + "requirements": [ + [ + "floatie_boots" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/moreboots/advancements/moreboots/strider_boots.json b/src/main/resources/data/moreboots/advancements/moreboots/strider_boots.json new file mode 100644 index 0000000..52f3c2b --- /dev/null +++ b/src/main/resources/data/moreboots/advancements/moreboots/strider_boots.json @@ -0,0 +1,36 @@ +{ + "parent": "moreboots:moreboots/floatie_boots", + "display": { + "icon": { + "item": "moreboots:strider_boots", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.moreboots.strider_boots.title" + }, + "description": { + "translate": "advancements.moreboots.strider_boots.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "strider_boots": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "moreboots:strider_boots" + } + ] + } + } + }, + "requirements": [ + [ + "strider_boots" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/moreboots/recipes/floatie_boots.json b/src/main/resources/data/moreboots/recipes/floatie_boots.json new file mode 100644 index 0000000..43898e8 --- /dev/null +++ b/src/main/resources/data/moreboots/recipes/floatie_boots.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#N#", + "###" + ], + "key": { + "#": { + "tag": "minecraft:planks" + }, + "N": { + "item": "minecraft:netherite_boots" + } + }, + "result": { + "item": "moreboots:floatie_boots", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/moreboots/recipes/strider_boots.json b/src/main/resources/data/moreboots/recipes/strider_boots.json new file mode 100644 index 0000000..e3aff95 --- /dev/null +++ b/src/main/resources/data/moreboots/recipes/strider_boots.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#N#", + "###" + ], + "key": { + "#": { + "item": "moreboots:strider_foot" + }, + "N": { + "item": "minecraft:netherite_boots" + } + }, + "result": { + "item": "moreboots:strider_boots", + "count": 1 + } +} \ No newline at end of file diff --git a/update.json b/update.json index 4b9a770..9582cdd 100644 --- a/update.json +++ b/update.json @@ -9,7 +9,8 @@ "1.3.1": "Fixed flower pot not rendering", "1.4.0": "Week #4 Update", "1.4.1": "Fixed random crashes + ice not generating properly", - "1.4.2": "Fixed Bamboo Generation + Added Custom Warmth Effect" + "1.4.2": "Fixed Bamboo Generation + Added Custom Warmth Effect", + "1.5.0": "Week #5 Update" }, "1.16.3": { "1.0.0": "The very first release", @@ -20,7 +21,8 @@ "1.3.1": "Fixed flower pot not rendering", "1.4.0": "Week #4 Update", "1.4.1": "Fixed random crashes + ice not generating properly", - "1.4.2": "Fixed Bamboo Generation + Added Custom Warmth Effect" + "1.4.2": "Fixed Bamboo Generation + Added Custom Warmth Effect", + "1.5.0": "Week #5 Update" }, "1.16.2": { "1.0.0": "The very first release", @@ -31,7 +33,8 @@ "1.3.1": "Fixed flower pot not rendering", "1.4.0": "Week #4 Update", "1.4.1": "Fixed random crashes + ice not generating properly", - "1.4.2": "Fixed Bamboo Generation + Added Custom Warmth Effect" + "1.4.2": "Fixed Bamboo Generation + Added Custom Warmth Effect", + "1.5.0": "Week #5 Update" }, "1.16.1": { "1.0.0": "The very first release", @@ -42,16 +45,17 @@ "1.3.1": "Fixed flower pot not rendering", "1.4.0": "Week #4 Update", "1.4.1": "Fixed random crashes + ice not generating properly", - "1.4.2": "Fixed Bamboo Generation + Added Custom Warmth Effect" + "1.4.2": "Fixed Bamboo Generation + Added Custom Warmth Effect", + "1.5.0": "Week #5 Update" }, "promos": { - "1.16.4-latest": "1.4.2", - "1.16.4-recommended": "1.4.2", - "1.16.3-latest": "1.4.2", - "1.16.3-recommended": "1.4.2", - "1.16.2-latest": "1.4.2", - "1.16.2-recommended": "1.4.2", - "1.16.1-latest": "1.4.2", - "1.16.1-recommended": "1.4.2" + "1.16.4-latest": "1.5.0", + "1.16.4-recommended": "1.5.0", + "1.16.3-latest": "1.5.0", + "1.16.3-recommended": "1.5.0", + "1.16.2-latest": "1.5.0", + "1.16.2-recommended": "1.5.0", + "1.16.1-latest": "1.5.0", + "1.16.1-recommended": "1.5.0" } } \ No newline at end of file