WandBoost onGround() check + Attraction Wand
This commit is contained in:
parent
9593712e42
commit
90ef92b453
@ -3,10 +3,7 @@ package com.jenny.magic.items;
|
||||
import com.jenny.magic.entities.entities;
|
||||
import com.jenny.magic.items.amulets.*;
|
||||
import com.jenny.magic.items.scrolls.*;
|
||||
import com.jenny.magic.items.wands.ProjectileWand;
|
||||
import com.jenny.magic.items.wands.WandBoost;
|
||||
import com.jenny.magic.items.wands.WandPush;
|
||||
import com.jenny.magic.items.wands.WandVacuum;
|
||||
import com.jenny.magic.items.wands.*;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.world.effect.MobEffects;
|
||||
import net.minecraft.world.item.Item;
|
||||
@ -26,6 +23,7 @@ public class items {
|
||||
public static final RegistryObject<Item> WAND_VACUUM = ITEMS.register("wand_vacuum", () -> new WandVacuum(new Item.Properties()));
|
||||
public static final RegistryObject<Item> WAND_BOOST = ITEMS.register("wand_boost", () -> new WandBoost(new Item.Properties()));
|
||||
public static final RegistryObject<Item> WAND_PUSH = ITEMS.register("wand_push", () -> new WandPush(new Item.Properties()));
|
||||
public static final RegistryObject<Item> WAND_ATTRACTION = ITEMS.register("wand_attraction", () -> new WandAttraction(new Item.Properties()));
|
||||
// SCROLLS
|
||||
public static final RegistryObject<Item> SCROLL_TELEPORT = ITEMS.register("scroll_teleport", () -> new ScrollTeleportPersistent(new Item.Properties().stacksTo(1)));
|
||||
public static final RegistryObject<Item> SCROLL_TELEPORT_BRITTLE = ITEMS.register("scroll_teleport_brittle", () -> new ScrollTeleportConsumable(new Item.Properties().stacksTo(16)));
|
||||
|
@ -4,7 +4,7 @@ import com.jenny.magic.config.ConfigServer;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.MutableComponent;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.TooltipFlag;
|
||||
@ -21,9 +21,9 @@ public abstract class BaseWand extends Item {
|
||||
super(properties.durability(100));
|
||||
}
|
||||
|
||||
public static boolean tryUse(ItemStack itemStack, Player player) {
|
||||
public static boolean tryUse(ItemStack itemStack, LivingEntity livingEntity) {
|
||||
if (!ConfigServer.C_PREVENT_BREAKING.get() || itemStack.getMaxDamage() - itemStack.getDamageValue() > 1) {
|
||||
itemStack.hurtAndBreak(1, player, (player2) -> player2.broadcastBreakEvent(player2.getUsedItemHand()));
|
||||
itemStack.hurtAndBreak(1, livingEntity, (player2) -> player2.broadcastBreakEvent(player2.getUsedItemHand()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -0,0 +1,8 @@
|
||||
package com.jenny.magic.items.wands;
|
||||
|
||||
public class WandAttraction extends BaseWand {
|
||||
public WandAttraction(Properties properties) {
|
||||
super(properties);
|
||||
}
|
||||
|
||||
}
|
@ -28,7 +28,7 @@ public class WandBoost extends BaseWand {
|
||||
|
||||
public @NotNull InteractionResultHolder<ItemStack> use(@NotNull Level pLevel, Player pPlayer, @NotNull InteractionHand pHand) {
|
||||
ItemStack itemStack = pPlayer.getItemInHand(pHand);
|
||||
if (tryUse(itemStack, pPlayer)) {
|
||||
if (pPlayer.onGround() && tryUse(itemStack, pPlayer)) {
|
||||
pPlayer.startUsingItem(pHand);
|
||||
return InteractionResultHolder.consume(itemStack);
|
||||
}
|
||||
|
54
src/main/java/com/jenny/magic/mixins/TemptGoal.java
Normal file
54
src/main/java/com/jenny/magic/mixins/TemptGoal.java
Normal file
@ -0,0 +1,54 @@
|
||||
package com.jenny.magic.mixins;
|
||||
|
||||
import com.jenny.magic.items.items;
|
||||
import com.jenny.magic.items.wands.BaseWand;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.PathfinderMob;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
@Mixin(net.minecraft.world.entity.ai.goal.TemptGoal.class)
|
||||
public abstract class TemptGoal {
|
||||
@Shadow
|
||||
@Final
|
||||
protected PathfinderMob mob;
|
||||
|
||||
@Unique
|
||||
private static @Nullable ItemStack getStack(@NotNull LivingEntity livingEntity) {
|
||||
if (livingEntity.getItemInHand(InteractionHand.MAIN_HAND).getItem().asItem().equals(items.WAND_ATTRACTION.get())) {
|
||||
return livingEntity.getItemInHand(InteractionHand.MAIN_HAND);
|
||||
} else {
|
||||
if (items.WAND_ATTRACTION.get().equals(livingEntity.getItemInHand(InteractionHand.OFF_HAND).getItem().asItem())) {
|
||||
return livingEntity.getItemInHand(InteractionHand.OFF_HAND);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @author xJenny69
|
||||
* @reason Attraction Wand
|
||||
*/
|
||||
@Inject(method = "shouldFollow", at = @At("RETURN"), cancellable = true)
|
||||
private void shouldFollow(LivingEntity livingEntity, CallbackInfoReturnable<Boolean> cir) {
|
||||
ItemStack itemStack = getStack(livingEntity);
|
||||
if (itemStack != null) {
|
||||
boolean usable = true;
|
||||
if (livingEntity.level().getRandom().nextInt(30) == 0 && livingEntity.distanceTo(mob) < 10f) {
|
||||
usable = BaseWand.tryUse(itemStack, livingEntity);
|
||||
}
|
||||
if (usable) {
|
||||
cir.setReturnValue(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -5,7 +5,8 @@
|
||||
"compatibilityLevel": "JAVA_17",
|
||||
"refmap": "magic.refmap.json",
|
||||
"mixins": [
|
||||
"PiglinAi"
|
||||
"PiglinAi",
|
||||
"TemptGoal"
|
||||
],
|
||||
"client": [],
|
||||
"injectors": {
|
||||
|
Loading…
x
Reference in New Issue
Block a user