添加快艇物品吸取功能
This commit is contained in:
parent
01c90f1b47
commit
b806cf6c0d
2 changed files with 17 additions and 14 deletions
|
@ -371,7 +371,8 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
||||||
if (driver == null) return;
|
if (driver == null) return;
|
||||||
|
|
||||||
if (driver instanceof Player player && !(player.getMainHandItem().is(ModTags.Items.GUN))) {
|
if (driver instanceof Player player && !(player.getMainHandItem().is(ModTags.Items.GUN))) {
|
||||||
if (this.getItemStacks().stream().noneMatch(stack -> stack.is(ModItems.HEAVY_AMMO.get())) && !player.getInventory().hasAnyMatching(s -> s.is(ModItems.CREATIVE_AMMO_BOX.get()))) return;
|
if (this.getItemStacks().stream().noneMatch(stack -> stack.is(ModItems.HEAVY_AMMO.get())) && !player.getInventory().hasAnyMatching(s -> s.is(ModItems.CREATIVE_AMMO_BOX.get())))
|
||||||
|
return;
|
||||||
if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).holdFire) {
|
if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).holdFire) {
|
||||||
ProjectileEntity projectile = new ProjectileEntity(driver.level())
|
ProjectileEntity projectile = new ProjectileEntity(driver.level())
|
||||||
.shooter(player)
|
.shooter(player)
|
||||||
|
@ -682,7 +683,6 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
||||||
this.clampRotation(entity);
|
this.clampRotation(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private PlayState firePredicate(AnimationState<SpeedboatEntity> event) {
|
private PlayState firePredicate(AnimationState<SpeedboatEntity> event) {
|
||||||
if (this.entityData.get(COOL_DOWN) > 1 && !cannotFire) {
|
if (this.entityData.get(COOL_DOWN) > 1 && !cannotFire) {
|
||||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.speedboat.fire"));
|
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.speedboat.fire"));
|
||||||
|
@ -846,7 +846,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxEnergy() {
|
public int getMaxEnergy() {
|
||||||
return (int)MAX_ENERGY;
|
return (int) MAX_ENERGY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -856,6 +856,6 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getMaxHealth() {
|
public float getMaxHealth() {
|
||||||
return (int)MAX_HEALTH;
|
return (int) MAX_HEALTH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,8 +37,10 @@ import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.entity.item.ItemEntity;
|
import net.minecraft.world.entity.item.ItemEntity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.entity.projectile.Projectile;
|
import net.minecraft.world.entity.projectile.Projectile;
|
||||||
|
import net.minecraft.world.entity.vehicle.ContainerEntity;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.GameRules;
|
import net.minecraft.world.level.GameRules;
|
||||||
|
import net.minecraft.world.level.block.entity.HopperBlockEntity;
|
||||||
import net.minecraftforge.event.entity.living.*;
|
import net.minecraftforge.event.entity.living.*;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
@ -711,17 +713,18 @@ public class LivingEventHandler {
|
||||||
if (!(sourceEntity instanceof Player player)) return;
|
if (!(sourceEntity instanceof Player player)) return;
|
||||||
ItemStack stack = player.getMainHandItem();
|
ItemStack stack = player.getMainHandItem();
|
||||||
|
|
||||||
//TODO 将撞击致死产生掉落物添加到载具储存空间而不是直接加到玩家身上
|
if (sourceEntity.getVehicle() instanceof IVehicleEntity vehicle && source.is(ModDamageTypes.VEHICLE_STRIKE)) {
|
||||||
|
|
||||||
if (sourceEntity.getVehicle() instanceof IVehicleEntity && source.is(ModDamageTypes.VEHICLE_STRIKE)) {
|
|
||||||
var drops = event.getDrops();
|
var drops = event.getDrops();
|
||||||
drops.forEach(itemEntity -> {
|
if (vehicle instanceof ContainerEntity containerEntity) {
|
||||||
ItemStack item = itemEntity.getItem();
|
drops.forEach(itemEntity -> {
|
||||||
if (!player.addItem(item)) {
|
ItemStack item = itemEntity.getItem();
|
||||||
player.drop(item, false);
|
if (!HopperBlockEntity.addItem(containerEntity, itemEntity)) {
|
||||||
}
|
player.drop(item, false);
|
||||||
});
|
}
|
||||||
event.setCanceled(true);
|
});
|
||||||
|
event.setCanceled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stack.is(ModTags.Items.GUN) && PerkHelper.getItemPerkLevel(ModPerks.POWERFUL_ATTRACTION.get(), stack) > 0) {
|
if (stack.is(ModTags.Items.GUN) && PerkHelper.getItemPerkLevel(ModPerks.POWERFUL_ATTRACTION.get(), stack) > 0) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue