Continue migration
This commit is contained in:
parent
47ed597358
commit
33dbfbe633
263 changed files with 1450 additions and 1486 deletions
|
@ -2,7 +2,7 @@ package ru.betterend.item;
|
|||
|
||||
import net.minecraft.advancement.criterion.Criteria;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.player.PlayerEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.ItemUsage;
|
||||
import net.minecraft.world.item.Items;
|
||||
|
@ -29,7 +29,7 @@ public class DrinkItem extends PatternedItem {
|
|||
}
|
||||
|
||||
@Override
|
||||
public TypedActionResult<ItemStack> use(Level world, PlayerEntity user, Hand hand) {
|
||||
public TypedActionResult<ItemStack> use(Level world, Player user, Hand hand) {
|
||||
return ItemUsage.consumeHeldItem(world, user, hand);
|
||||
}
|
||||
|
||||
|
@ -41,12 +41,12 @@ public class DrinkItem extends PatternedItem {
|
|||
serverPlayerEntity.incrementStat(Stats.USED.getOrCreateStat(this));
|
||||
}
|
||||
|
||||
if (user instanceof PlayerEntity && !((PlayerEntity) user).abilities.creativeMode) {
|
||||
if (user instanceof Player && !((Player) user).abilities.creativeMode) {
|
||||
stack.decrement(1);
|
||||
}
|
||||
|
||||
if (!world.isClientSide) {
|
||||
user.clearStatusEffects();
|
||||
user.clearMobEffects();
|
||||
}
|
||||
|
||||
return stack.isEmpty() ? new ItemStack(Items.GLASS_BOTTLE) : stack;
|
||||
|
|
|
@ -7,7 +7,7 @@ import ru.betterend.registry.EndItems;
|
|||
|
||||
public class EnchantedPetalItem extends PatternedItem {
|
||||
public EnchantedPetalItem() {
|
||||
super(EndItems.makeItemSettings().rarity(Rarity.RARE).maxCount(16));
|
||||
super(EndItems.makeItemSettings().rarity(Rarity.RARE).stacksTo(16));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -6,9 +6,9 @@ import com.google.common.collect.ImmutableMultimap;
|
|||
import com.google.common.collect.Multimap;
|
||||
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.attribute.EntityAttribute;
|
||||
import net.minecraft.world.entity.attribute.EntityAttributeModifier;
|
||||
import net.minecraft.world.entity.attribute.EntityAttributes;
|
||||
import net.minecraft.world.entity.ai.attributes.Attribute;
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.world.entity.attribute.Attributes;
|
||||
import net.minecraft.world.item.ArmorItem;
|
||||
import net.minecraft.world.item.ArmorMaterial;
|
||||
import net.minecraft.world.item.Item;
|
||||
|
@ -30,20 +30,20 @@ public class EndArmorItem extends ArmorItem implements Patterned {
|
|||
return;
|
||||
}
|
||||
|
||||
Multimap<EntityAttribute, EntityAttributeModifier> attributeModifiers = accessor.be_getAttributeModifiers();
|
||||
Multimap<Attribute, AttributeModifier> attributeModifiers = accessor.be_getAttributeModifiers();
|
||||
|
||||
// In case Mojang or anyone else decided to fix this
|
||||
if (attributeModifiers.keys().contains(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE)) {
|
||||
if (attributeModifiers.keys().contains(Attributes.KNOCKBACK_RESISTANCE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
UUID uuid = accessor.be_getModifiers()[slot.getEntitySlotId()];
|
||||
|
||||
// Rebuild attributeModifiers to include knockback resistance
|
||||
ImmutableMultimap.Builder<EntityAttribute, EntityAttributeModifier> builder = ImmutableMultimap.builder();
|
||||
ImmutableMultimap.Builder<Attribute, AttributeModifier> builder = ImmutableMultimap.builder();
|
||||
builder.putAll(attributeModifiers);
|
||||
builder.put(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, new EntityAttributeModifier(uuid,
|
||||
"Armor knockback resistance", knockbackResistance, EntityAttributeModifier.Operation.ADDITION));
|
||||
builder.put(Attributes.KNOCKBACK_RESISTANCE, new AttributeModifier(uuid, "Armor knockback resistance",
|
||||
knockbackResistance, AttributeModifier.Operation.ADDITION));
|
||||
accessor.be_setAttributeModifiers(builder.build());
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,6 @@ import ru.betterend.registry.EndItems;
|
|||
|
||||
public class EternalCrystalItem extends PatternedItem {
|
||||
public EternalCrystalItem() {
|
||||
super(EndItems.makeItemSettings().maxCount(16).rarity(Rarity.EPIC));
|
||||
super(EndItems.makeItemSettings().stacksTo(16).rarity(Rarity.EPIC));
|
||||
}
|
||||
}
|
|
@ -3,7 +3,7 @@ package ru.betterend.item;
|
|||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.item.TooltipContext;
|
||||
import net.minecraft.world.entity.player.PlayerEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
@ -26,11 +26,11 @@ public class GuideBookItem extends PatternedItem {
|
|||
}
|
||||
|
||||
public GuideBookItem() {
|
||||
super(EndItems.makeItemSettings().maxCount(1));
|
||||
super(EndItems.makeItemSettings().stacksTo(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypedActionResult<ItemStack> use(Level world, PlayerEntity user, Hand hand) {
|
||||
public TypedActionResult<ItemStack> use(Level world, Player user, Hand hand) {
|
||||
if (!world.isClientSide && user instanceof ServerPlayer) {
|
||||
PatchouliAPI.get().openBookGUI((ServerPlayer) user, BOOK_ID);
|
||||
return TypedActionResult.success(user.getStackInHand(hand));
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
package ru.betterend.item;
|
||||
|
||||
import net.minecraft.world.item.MusicDiscItem;
|
||||
import net.minecraft.sound.SoundEvent;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.world.item.RecordItem;
|
||||
import ru.betterend.patterns.Patterned;
|
||||
import ru.betterend.patterns.Patterns;
|
||||
|
||||
public class PatternedDiscItem extends MusicDiscItem implements Patterned {
|
||||
public PatternedDiscItem(int comparatorOutput, SoundEvent sound, Properties settings) {
|
||||
public class PatternedDiscItem extends RecordItem implements Patterned {
|
||||
public PatternedDiscItem(int comparatorOutput, SoundEvent sound, Item.Properties settings) {
|
||||
super(comparatorOutput, sound, settings);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import net.fabricmc.api.Environment;
|
|||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.item.ArmorMaterial;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.sound.SoundEvent;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.util.LazyLoadedValue;
|
||||
import ru.betterend.registry.EndBlocks;
|
||||
|
|
|
@ -9,18 +9,19 @@ import com.google.common.collect.Sets;
|
|||
|
||||
import io.netty.util.internal.ThreadLocalRandom;
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool;
|
||||
import net.minecraft.world.entity.ai.attributes.Attribute;
|
||||
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.item.DiggerItem;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.material.Material;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.attribute.EntityAttribute;
|
||||
import net.minecraft.world.entity.attribute.EntityAttributeModifier;
|
||||
import net.minecraft.world.entity.attribute.EntityAttributes;
|
||||
import net.minecraft.world.entity.player.PlayerEntity;
|
||||
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.MiningToolItem;
|
||||
import net.minecraft.world.item.Tier;
|
||||
import net.minecraft.tags.Tag;
|
||||
import net.minecraft.core.BlockPos;
|
||||
|
@ -30,72 +31,70 @@ import ru.betterend.patterns.Patterned;
|
|||
import ru.betterend.patterns.Patterns;
|
||||
import ru.betterend.registry.EndTags;
|
||||
|
||||
public class EndHammerItem extends MiningToolItem implements DynamicAttributeTool, Patterned {
|
||||
public final static UUID ATTACK_KNOCKBACK_MODIFIER_ID = Mth.randomUuid(ThreadLocalRandom.current());
|
||||
public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, Patterned {
|
||||
public final static UUID ATTACK_KNOCKBACK_MODIFIER_ID = Mth.createInsecureUUID(ThreadLocalRandom.current());
|
||||
|
||||
private final Multimap<EntityAttribute, EntityAttributeModifier> attributeModifiers;
|
||||
private final Multimap<Attribute, AttributeModifier> attributeModifiers;
|
||||
|
||||
public EndHammerItem(Tier material, float attackDamage, float attackSpeed, double knockback, Properties settings) {
|
||||
super(attackDamage, attackSpeed, material, Sets.newHashSet(), settings);
|
||||
|
||||
Builder<EntityAttribute, EntityAttributeModifier> builder = ImmutableMultimap.builder();
|
||||
builder.put(EntityAttributes.GENERIC_ATTACK_DAMAGE,
|
||||
new EntityAttributeModifier(ATTACK_DAMAGE_MODIFIER_ID, "Weapon modifier",
|
||||
attackDamage + material.getAttackDamage(), EntityAttributeModifier.Operation.ADDITION));
|
||||
builder.put(EntityAttributes.GENERIC_ATTACK_SPEED, new EntityAttributeModifier(ATTACK_SPEED_MODIFIER_ID,
|
||||
"Weapon modifier", attackSpeed, EntityAttributeModifier.Operation.ADDITION));
|
||||
builder.put(EntityAttributes.GENERIC_ATTACK_KNOCKBACK, new EntityAttributeModifier(ATTACK_KNOCKBACK_MODIFIER_ID,
|
||||
"Weapon modifier", knockback, EntityAttributeModifier.Operation.ADDITION));
|
||||
Builder<Attribute, AttributeModifier> builder = ImmutableMultimap.builder();
|
||||
builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier",
|
||||
attackDamage + material.getAttackDamageBonus(), AttributeModifier.Operation.ADDITION));
|
||||
builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier",
|
||||
attackSpeed, AttributeModifier.Operation.ADDITION));
|
||||
builder.put(Attributes.ATTACK_KNOCKBACK, new AttributeModifier(ATTACK_KNOCKBACK_MODIFIER_ID, "Weapon modifier",
|
||||
knockback, AttributeModifier.Operation.ADDITION));
|
||||
this.attributeModifiers = builder.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canMine(BlockState state, Level world, BlockPos pos, PlayerEntity miner) {
|
||||
public boolean canAttackBlock(BlockState state, Level world, BlockPos pos, Player miner) {
|
||||
return state.getMaterial().equals(Material.STONE) || state.getMaterial().equals(Material.GLASS)
|
||||
|| state.is(Blocks.DIAMOND_BLOCK) || state.is(Blocks.EMERALD_BLOCK) || state.is(Blocks.LAPIS_BLOCK)
|
||||
|| state.is(Blocks.REDSTONE_BLOCK);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) {
|
||||
stack.damage(1, attacker, ((entity) -> {
|
||||
entity.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND);
|
||||
public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) {
|
||||
stack.hurtAndBreak(1, attacker, (entity -> {
|
||||
entity.broadcastBreakEvent(EquipmentSlot.MAINHAND);
|
||||
}));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean postMine(ItemStack stack, Level world, BlockState state, BlockPos pos, LivingEntity miner) {
|
||||
if (state.getHardness(world, pos) != 0.0F) {
|
||||
stack.damage(1, miner, ((entity) -> {
|
||||
entity.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND);
|
||||
public boolean mineBlock(ItemStack stack, Level world, BlockState state, BlockPos pos, LivingEntity miner) {
|
||||
if (state.getDestroySpeed(world, pos) != 0.0F) {
|
||||
stack.hurtAndBreak(1, miner, (entity -> {
|
||||
entity.broadcastBreakEvent(EquipmentSlot.MAINHAND);
|
||||
}));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getDestroySpeed(ItemStack stack, BlockState state) {
|
||||
if (state.getMaterial().equals(Material.GLASS)) {
|
||||
return this.getMaterial().getDestroySpeed() * 2.0F;
|
||||
return getTier().getSpeed() * 2.0F;
|
||||
}
|
||||
if (isCorrectToolForDrops(state)) {
|
||||
float mult = 1.0F;
|
||||
if (state.is(Blocks.DIAMOND_BLOCK) || state.is(Blocks.EMERALD_BLOCK) || state.is(Blocks.LAPIS_BLOCK)
|
||||
|| state.is(Blocks.REDSTONE_BLOCK)) {
|
||||
mult = this.getMaterial().getDestroySpeed();
|
||||
mult = getTier().getSpeed();
|
||||
} else {
|
||||
mult = this.getMaterial().getDestroySpeed() / 2.0F;
|
||||
mult = getTier().getSpeed() / 2.0F;
|
||||
}
|
||||
return mult > 1.0F ? mult : 1.0F;
|
||||
return Math.max(mult, 1.0F);
|
||||
}
|
||||
return 1.0F;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getDestroySpeed(Tag<Item> tag, BlockState state, ItemStack stack, LivingEntity user) {
|
||||
public float getMiningSpeedMultiplier(Tag<Item> tag, BlockState state, ItemStack stack, LivingEntity user) {
|
||||
if (tag.equals(EndTags.HAMMERS)) {
|
||||
return this.getDestroySpeed(stack, state);
|
||||
}
|
||||
|
@ -135,8 +134,8 @@ public class EndHammerItem extends MiningToolItem implements DynamicAttributeToo
|
|||
}
|
||||
|
||||
@Override
|
||||
public Multimap<EntityAttribute, EntityAttributeModifier> getAttributeModifiers(EquipmentSlot slot) {
|
||||
return slot == EquipmentSlot.MAINHAND ? this.attributeModifiers : super.getAttributeModifiers(slot);
|
||||
public Multimap<Attribute, AttributeModifier> getDefaultAttributeModifiers(EquipmentSlot slot) {
|
||||
return slot == EquipmentSlot.MAINHAND ? this.attributeModifiers : super.getDefaultAttributeModifiers(slot);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue