正确注册attribute modifiers
This commit is contained in:
parent
de26447164
commit
8e8431bb89
4 changed files with 89 additions and 66 deletions
|
@ -15,10 +15,14 @@ import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
import net.minecraft.world.InteractionResultHolder;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlotGroup;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.TooltipFlag;
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.item.component.ItemAttributeModifiers;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
import net.neoforged.api.distmarker.Dist;
|
import net.neoforged.api.distmarker.Dist;
|
||||||
|
@ -27,6 +31,7 @@ import net.neoforged.neoforge.network.PacketDistributor;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Monitor extends Item {
|
public class Monitor extends Item {
|
||||||
|
@ -94,19 +99,24 @@ public class Monitor extends Item {
|
||||||
return super.use(world, player, hand);
|
return super.use(world, player, hand);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO attribute
|
@Override
|
||||||
// @Override
|
public @NotNull ItemAttributeModifiers getDefaultAttributeModifiers(@NotNull ItemStack stack) {
|
||||||
// public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
var list = new ArrayList<>(super.getDefaultAttributeModifiers(stack).modifiers());
|
||||||
// if (slot == EquipmentSlot.MAINHAND) {
|
list.addAll(List.of(
|
||||||
// ImmutableMultimap.Builder<Attribute, AttributeModifier> builder = ImmutableMultimap.builder();
|
new ItemAttributeModifiers.Entry(
|
||||||
// builder.putAll(super.getAttributeModifiers(slot, stack));
|
Attributes.ATTACK_DAMAGE,
|
||||||
// builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Item modifier", 2d, AttributeModifier.Operation.ADDITION));
|
new AttributeModifier(BASE_ATTACK_DAMAGE_ID, 2, AttributeModifier.Operation.ADD_VALUE),
|
||||||
// builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Item modifier", -2.4, AttributeModifier.Operation.ADDITION));
|
EquipmentSlotGroup.MAINHAND
|
||||||
// return builder.build();
|
),
|
||||||
// }
|
new ItemAttributeModifiers.Entry(
|
||||||
//
|
Attributes.ATTACK_SPEED,
|
||||||
// return super.getAttributeModifiers(slot, stack);
|
new AttributeModifier(BASE_ATTACK_SPEED_ID, -2.4, AttributeModifier.Operation.ADD_VALUE),
|
||||||
// }
|
EquipmentSlotGroup.MAINHAND
|
||||||
|
)
|
||||||
|
));
|
||||||
|
|
||||||
|
return new ItemAttributeModifiers(list, true);
|
||||||
|
}
|
||||||
|
|
||||||
public static void getDronePos(ItemStack stack, Vec3 vec3) {
|
public static void getDronePos(ItemStack stack, Vec3 vec3) {
|
||||||
var tag = NBTTool.getTag(stack);
|
var tag = NBTTool.getTag(stack);
|
||||||
|
|
|
@ -14,12 +14,16 @@ import net.minecraft.core.Position;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlotGroup;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||||
import net.minecraft.world.entity.projectile.Projectile;
|
import net.minecraft.world.entity.projectile.Projectile;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.ItemDisplayContext;
|
import net.minecraft.world.item.ItemDisplayContext;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.ProjectileItem;
|
import net.minecraft.world.item.ProjectileItem;
|
||||||
|
import net.minecraft.world.item.component.ItemAttributeModifiers;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.neoforged.bus.api.SubscribeEvent;
|
import net.neoforged.bus.api.SubscribeEvent;
|
||||||
import net.neoforged.fml.common.EventBusSubscriber;
|
import net.neoforged.fml.common.EventBusSubscriber;
|
||||||
|
@ -32,6 +36,8 @@ import software.bernie.geckolib.animation.AnimatableManager;
|
||||||
import software.bernie.geckolib.util.GeckoLibUtil;
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@EventBusSubscriber(modid = Mod.MODID, bus = EventBusSubscriber.Bus.MOD)
|
@EventBusSubscriber(modid = Mod.MODID, bus = EventBusSubscriber.Bus.MOD)
|
||||||
public class Rocket extends Item implements GeoItem, ProjectileItem {
|
public class Rocket extends Item implements GeoItem, ProjectileItem {
|
||||||
|
@ -74,17 +80,25 @@ public class Rocket extends Item implements GeoItem, ProjectileItem {
|
||||||
return this.cache;
|
return this.cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO attribute modifier
|
@Override
|
||||||
// @Override
|
public @NotNull ItemAttributeModifiers getDefaultAttributeModifiers(@NotNull ItemStack stack) {
|
||||||
// public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
var list = new ArrayList<>(super.getDefaultAttributeModifiers(stack).modifiers());
|
||||||
// Multimap<Attribute, AttributeModifier> map = super.getAttributeModifiers(slot, stack);
|
|
||||||
// if (slot == EquipmentSlot.MAINHAND) {
|
list.addAll(List.of(
|
||||||
// map = HashMultimap.create(map);
|
new ItemAttributeModifiers.Entry(
|
||||||
// map.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Item modifier", 6d, AttributeModifier.Operation.ADDITION));
|
Attributes.ATTACK_DAMAGE,
|
||||||
// map.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Item modifier", -2.4, AttributeModifier.Operation.ADDITION));
|
new AttributeModifier(BASE_ATTACK_DAMAGE_ID, 6, AttributeModifier.Operation.ADD_VALUE),
|
||||||
// }
|
EquipmentSlotGroup.MAINHAND
|
||||||
// return map;
|
),
|
||||||
// }
|
new ItemAttributeModifiers.Entry(
|
||||||
|
Attributes.ATTACK_SPEED,
|
||||||
|
new AttributeModifier(BASE_ATTACK_SPEED_ID, -2.4, AttributeModifier.Operation.ADD_VALUE),
|
||||||
|
EquipmentSlotGroup.MAINHAND
|
||||||
|
)
|
||||||
|
));
|
||||||
|
|
||||||
|
return new ItemAttributeModifiers(list, true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hurtEnemy(@NotNull ItemStack stack, LivingEntity entity, @NotNull LivingEntity source) {
|
public boolean hurtEnemy(@NotNull ItemStack stack, LivingEntity entity, @NotNull LivingEntity source) {
|
||||||
|
|
|
@ -22,11 +22,15 @@ import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlotGroup;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.inventory.tooltip.TooltipComponent;
|
import net.minecraft.world.inventory.tooltip.TooltipComponent;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.component.ItemAttributeModifiers;
|
||||||
import net.minecraft.world.item.enchantment.Enchantment;
|
import net.minecraft.world.item.enchantment.Enchantment;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
@ -37,6 +41,7 @@ import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsE
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
@ -121,37 +126,24 @@ public abstract class GunItem extends Item implements CustomRendererItem {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO attribute modifier
|
private static final ResourceLocation SPEED_ID = Mod.loc("gun_movement_speed");
|
||||||
// @Override
|
|
||||||
// public @NotNull ItemAttributeModifiers getDefaultAttributeModifiers(@NotNull ItemStack stack) {
|
|
||||||
// ItemAttributeModifiers map = super.getDefaultAttributeModifiers(stack);
|
|
||||||
// map.builder().add(
|
|
||||||
// Attribute.BASE,
|
|
||||||
// new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER,
|
|
||||||
// -0.01f - 0.005f * (GunsTool.getGunDoubleTag(tag, "Weight") + GunsTool.getGunDoubleTag(tag, "CustomWeight")),
|
|
||||||
// AttributeModifier.Operation.ADD_MULTIPLIED_BASE)
|
|
||||||
// )
|
|
||||||
//
|
|
||||||
// map.put(Attributes.MOVEMENT_SPEED,
|
|
||||||
// new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER,
|
|
||||||
// -0.01f - 0.005f * (GunsTool.getGunDoubleTag(tag, "Weight") + GunsTool.getGunDoubleTag(tag, "CustomWeight")),
|
|
||||||
// AttributeModifier.Operation.ADD_MULTIPLIED_BASE));
|
|
||||||
// return map;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @Override
|
@Override
|
||||||
// public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
public @NotNull ItemAttributeModifiers getDefaultAttributeModifiers(@NotNull ItemStack stack) {
|
||||||
// Multimap<Attribute, AttributeModifier> map = super.getAttributeModifiers(slot, stack);
|
var list = new ArrayList<>(super.getDefaultAttributeModifiers(stack).modifiers());
|
||||||
// UUID uuid = new UUID(slot.toString().hashCode(), 0);
|
var tag = NBTTool.getTag(stack);
|
||||||
// if (slot == EquipmentSlot.MAINHAND) {
|
|
||||||
// map = HashMultimap.create(map);
|
list.add(new ItemAttributeModifiers.Entry(
|
||||||
// map.put(Attributes.MOVEMENT_SPEED,
|
Attributes.MOVEMENT_SPEED,
|
||||||
// new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER,
|
new AttributeModifier(SPEED_ID,
|
||||||
// -0.01f - 0.005f * (GunsTool.getGunDoubleTag(tag, "Weight") + GunsTool.getGunDoubleTag(tag, "CustomWeight")),
|
-0.01f - 0.005f * (GunsTool.getGunDoubleTag(tag, "Weight") + GunsTool.getGunDoubleTag(tag, "CustomWeight")),
|
||||||
// AttributeModifier.Operation.ADD_MULTIPLIED_BASE));
|
AttributeModifier.Operation.ADD_MULTIPLIED_BASE
|
||||||
// }
|
),
|
||||||
// return map;
|
EquipmentSlotGroup.MAINHAND
|
||||||
// }
|
));
|
||||||
|
|
||||||
|
return new ItemAttributeModifiers(list, true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
|
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
|
||||||
|
|
|
@ -27,10 +27,14 @@ import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.sounds.SoundSource;
|
import net.minecraft.sounds.SoundSource;
|
||||||
import net.minecraft.world.effect.MobEffects;
|
import net.minecraft.world.effect.MobEffects;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlotGroup;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.inventory.tooltip.TooltipComponent;
|
import net.minecraft.world.inventory.tooltip.TooltipComponent;
|
||||||
import net.minecraft.world.item.ItemDisplayContext;
|
import net.minecraft.world.item.ItemDisplayContext;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.component.ItemAttributeModifiers;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.neoforged.neoforge.capabilities.Capabilities;
|
import net.neoforged.neoforge.capabilities.Capabilities;
|
||||||
import net.neoforged.neoforge.network.PacketDistributor;
|
import net.neoforged.neoforge.network.PacketDistributor;
|
||||||
|
@ -42,6 +46,7 @@ import software.bernie.geckolib.renderer.GeoItemRenderer;
|
||||||
import software.bernie.geckolib.util.GeckoLibUtil;
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireWeapon, EnergyStorageItem {
|
public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireWeapon, EnergyStorageItem {
|
||||||
|
@ -226,18 +231,20 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW
|
||||||
return Optional.of(new SecondaryCataclysmImageComponent(pStack));
|
return Optional.of(new SecondaryCataclysmImageComponent(pStack));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO attribute
|
private static final ResourceLocation DAMAGE_ID = Mod.loc("secondary_cataclysm_attack_damage");
|
||||||
// @Override
|
|
||||||
// public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
@Override
|
||||||
// Multimap<Attribute, AttributeModifier> map = super.getAttributeModifiers(slot, stack);
|
public @NotNull ItemAttributeModifiers getDefaultAttributeModifiers(@NotNull ItemStack stack) {
|
||||||
// UUID uuid = new UUID(slot.toString().hashCode(), 0);
|
var list = new ArrayList<>(super.getDefaultAttributeModifiers(stack).modifiers());
|
||||||
// if (slot == EquipmentSlot.MAINHAND) {
|
|
||||||
// map = HashMultimap.create(map);
|
list.add(new ItemAttributeModifiers.Entry(
|
||||||
// map.put(Attributes.ATTACK_DAMAGE,
|
Attributes.ATTACK_DAMAGE,
|
||||||
// new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER, 19, AttributeModifier.Operation.ADDITION));
|
new AttributeModifier(DAMAGE_ID, 19, AttributeModifier.Operation.ADD_VALUE),
|
||||||
// }
|
EquipmentSlotGroup.MAINHAND
|
||||||
// return map;
|
));
|
||||||
// }
|
|
||||||
|
return new ItemAttributeModifiers(list, true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isIterativeReload(ItemStack stack) {
|
public boolean isIterativeReload(ItemStack stack) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue