Skip to content

Commit

Permalink
Manaweave boots and Snowflake pendant allow walking on powder snow (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
TheRealWormbo authored Jan 2, 2024
1 parent 4f7a112 commit 5d68df9
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package vazkii.botania.fabric.mixin;

import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.level.block.PowderSnowBlock;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import vazkii.botania.common.handler.EquipmentHandler;
import vazkii.botania.common.item.BotaniaItems;

@Mixin(PowderSnowBlock.class)
public class PowderSnowBlockMixin {
@Inject(method = "canEntityWalkOnPowderSnow", at = @At("RETURN"), cancellable = true)
private static void canWalkOnPowderSnowWithBotaniaItems(Entity entity, CallbackInfoReturnable<Boolean> cir) {
if (!cir.getReturnValueZ() && entity instanceof LivingEntity living
&& (living.getItemBySlot(EquipmentSlot.FEET).is(BotaniaItems.manaweaveBoots)
|| !EquipmentHandler.findOrEmpty(BotaniaItems.icePendant, living).isEmpty())) {
cir.setReturnValue(true);
}
}
}
3 changes: 2 additions & 1 deletion Fabric/src/main/resources/botania_fabric.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"package": "vazkii.botania.fabric.mixin",
"mixins": [
"AbstractFurnaceBlockEntityFabricAccessor",
"BucketItemFabricAccessor",
"AbstractMinecartFabricMixin",
"AnvilMenuFabricMixin",
"AxeItemFabricMixin",
"BeaconBlockEntityFabricMixin",
"BucketItemFabricAccessor",
"EnchantmentFabricMixin",
"EnchantmentMenuFabricMixin",
"EnderManFabricMixin",
Expand All @@ -21,6 +21,7 @@
"LivingEntityFabricMixin",
"PiglinAiFabricMixin",
"PlayerFabricMixin",
"PowderSnowBlockMixin",
"RepairItemRecipeFabricMixin",
"ResultSlotFabricMixin",
"ServerPlayerGameModeFabricMixin"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
Expand All @@ -24,6 +25,7 @@
import vazkii.botania.api.BotaniaAPI;
import vazkii.botania.client.core.proxy.ClientProxy;
import vazkii.botania.client.lib.ResourcesLib;
import vazkii.botania.common.annotations.SoftImplement;
import vazkii.botania.common.item.BotaniaItems;
import vazkii.botania.common.item.equipment.armor.manasteel.ManasteelArmorItem;
import vazkii.botania.xplat.XplatAbstractions;
Expand Down Expand Up @@ -105,4 +107,9 @@ public void addArmorSetDescription(ItemStack stack, List<Component> list) {
list.add(Component.translatable("botania.armorset.manaweave.desc0").withStyle(ChatFormatting.GRAY));
list.add(Component.translatable("botania.armorset.manaweave.desc1").withStyle(ChatFormatting.GRAY));
}

@SoftImplement("IForgeItem")
public boolean canWalkOnPowderedSnow(ItemStack stack, LivingEntity wearer) {
return stack.is(BotaniaItems.manaweaveBoots);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import vazkii.botania.client.core.handler.MiscellaneousModels;
import vazkii.botania.client.render.AccessoryRenderRegistry;
import vazkii.botania.client.render.AccessoryRenderer;
import vazkii.botania.common.annotations.SoftImplement;
import vazkii.botania.common.proxy.Proxy;
import vazkii.botania.mixin.BiomeAccessor;

Expand Down Expand Up @@ -73,6 +74,12 @@ public void onWornTick(ItemStack stack, LivingEntity entity) {
}
}

// called via Curio API on Forge
@SoftImplement("IForgeItem")
public boolean canWalkOnPowderedSnow(ItemStack stack, LivingEntity wearer) {
return true;
}

public static class Renderer implements AccessoryRenderer {
@Override
public void doRender(HumanoidModel<?> bipedModel, ItemStack stack, LivingEntity living, PoseStack ms, MultiBufferSource buffers, int light, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) {
Expand Down

0 comments on commit 5d68df9

Please sign in to comment.