添加充电站的物品充电功能
This commit is contained in:
parent
b91ed662ab
commit
9112fb8368
3 changed files with 56 additions and 14 deletions
|
@ -146,7 +146,18 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
int energy = handler.getEnergyStored();
|
int energy = handler.getEnergyStored();
|
||||||
blockEntity.energy = energy;
|
blockEntity.energy = energy;
|
||||||
if (energy > 0) {
|
if (energy > 0) {
|
||||||
List<Entity> entities = pLevel.getEntitiesOfClass(Entity.class, new AABB(pPos).inflate(CHARGE_RADIUS));
|
blockEntity.chargeEntity(handler);
|
||||||
|
}
|
||||||
|
if (handler.getEnergyStored() > 0) {
|
||||||
|
blockEntity.chargeItemStack(handler);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void chargeEntity(EnergyStorage handler) {
|
||||||
|
if (this.level == null) return;
|
||||||
|
|
||||||
|
List<Entity> entities = this.level.getEntitiesOfClass(Entity.class, new AABB(this.getBlockPos()).inflate(CHARGE_RADIUS));
|
||||||
entities.forEach(entity -> {
|
entities.forEach(entity -> {
|
||||||
if (entity instanceof IChargeEntity chargeEntity) {
|
if (entity instanceof IChargeEntity chargeEntity) {
|
||||||
if (handler.getEnergyStored() > 0) {
|
if (handler.getEnergyStored() > 0) {
|
||||||
|
@ -155,7 +166,18 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
blockEntity.setChanged();
|
this.setChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void chargeItemStack(EnergyStorage handler) {
|
||||||
|
ItemStack stack = this.getItem(SLOT_CHARGE);
|
||||||
|
if (stack.isEmpty()) return;
|
||||||
|
|
||||||
|
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(consumer -> {
|
||||||
|
if (consumer.getEnergyStored() < consumer.getMaxEnergyStored()) {
|
||||||
|
consumer.receiveEnergy(Math.min(CHARGE_SPEED, handler.getEnergyStored()), false);
|
||||||
|
handler.extractEnergy(Math.min(CHARGE_SPEED, handler.getEnergyStored()), false);
|
||||||
|
this.setChanged();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -287,6 +309,28 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
if (cap == ForgeCapabilities.ENERGY) {
|
if (cap == ForgeCapabilities.ENERGY) {
|
||||||
return energyHandler.cast();
|
return energyHandler.cast();
|
||||||
}
|
}
|
||||||
|
if (!this.remove && side != null && cap == ForgeCapabilities.ITEM_HANDLER) {
|
||||||
|
if (side == Direction.UP) {
|
||||||
|
return itemHandlers[0].cast();
|
||||||
|
} else if (side == Direction.DOWN) {
|
||||||
|
return itemHandlers[1].cast();
|
||||||
|
} else {
|
||||||
|
return itemHandlers[2].cast();
|
||||||
|
}
|
||||||
|
}
|
||||||
return super.getCapability(cap, side);
|
return super.getCapability(cap, side);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidateCaps() {
|
||||||
|
super.invalidateCaps();
|
||||||
|
for (LazyOptional<?> itemHandler : itemHandlers) itemHandler.invalidate();
|
||||||
|
energyHandler.invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reviveCaps() {
|
||||||
|
super.reviveCaps();
|
||||||
|
this.itemHandlers = SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -335,8 +335,6 @@
|
||||||
"death.attack.laser_headshot.entity": "%1$s被%2$s用激光射穿了脑袋",
|
"death.attack.laser_headshot.entity": "%1$s被%2$s用激光射穿了脑袋",
|
||||||
"death.attack.laser_headshot.item": "%1$s的脑子被%2$s用%3$s发射的激光洞穿了",
|
"death.attack.laser_headshot.item": "%1$s的脑子被%2$s用%3$s发射的激光洞穿了",
|
||||||
|
|
||||||
"gui.superbwarfare.mortar_gui.button_set": "Confirm",
|
|
||||||
|
|
||||||
"entity.superbwarfare.projectile": "Bullet",
|
"entity.superbwarfare.projectile": "Bullet",
|
||||||
"entity.superbwarfare.projectile_mortar_shell": "Mortar Shell",
|
"entity.superbwarfare.projectile_mortar_shell": "Mortar Shell",
|
||||||
"entity.superbwarfare.projectile_gun_grenade": "Gun Grenade",
|
"entity.superbwarfare.projectile_gun_grenade": "Gun Grenade",
|
||||||
|
@ -410,6 +408,7 @@
|
||||||
"entity.minecraft.villager.superbwarfare.armory": "Armory",
|
"entity.minecraft.villager.superbwarfare.armory": "Armory",
|
||||||
|
|
||||||
"container.superbwarfare.reforging_table": "Gun Reforge Table",
|
"container.superbwarfare.reforging_table": "Gun Reforge Table",
|
||||||
|
"container.superbwarfare.charging_station": "Charging Station",
|
||||||
|
|
||||||
"config.superbwarfare.title": "SuperbWarfare:Config",
|
"config.superbwarfare.title": "SuperbWarfare:Config",
|
||||||
"config.superbwarfare.client.reload": "Reload Config",
|
"config.superbwarfare.client.reload": "Reload Config",
|
||||||
|
|
|
@ -335,8 +335,6 @@
|
||||||
"death.attack.laser_headshot.entity": "%1$s被%2$s用激光射穿了脑袋",
|
"death.attack.laser_headshot.entity": "%1$s被%2$s用激光射穿了脑袋",
|
||||||
"death.attack.laser_headshot.item": "%1$s的脑子被%2$s用%3$s发射的激光洞穿了",
|
"death.attack.laser_headshot.item": "%1$s的脑子被%2$s用%3$s发射的激光洞穿了",
|
||||||
|
|
||||||
"gui.superbwarfare.mortar_gui.button_set": "确认",
|
|
||||||
|
|
||||||
"entity.superbwarfare.projectile": "子弹",
|
"entity.superbwarfare.projectile": "子弹",
|
||||||
"entity.superbwarfare.projectile_mortar_shell": "迫击炮弹",
|
"entity.superbwarfare.projectile_mortar_shell": "迫击炮弹",
|
||||||
"entity.superbwarfare.projectile_gun_grenade": "枪榴弹",
|
"entity.superbwarfare.projectile_gun_grenade": "枪榴弹",
|
||||||
|
@ -410,6 +408,7 @@
|
||||||
"entity.minecraft.villager.superbwarfare.armory": "军械师",
|
"entity.minecraft.villager.superbwarfare.armory": "军械师",
|
||||||
|
|
||||||
"container.superbwarfare.reforging_table": "枪械重铸台",
|
"container.superbwarfare.reforging_table": "枪械重铸台",
|
||||||
|
"container.superbwarfare.charging_station": "充电站",
|
||||||
|
|
||||||
"config.superbwarfare.title": "卓越前线",
|
"config.superbwarfare.title": "卓越前线",
|
||||||
"config.superbwarfare.client.reload": "换弹配置",
|
"config.superbwarfare.client.reload": "换弹配置",
|
||||||
|
|
Loading…
Add table
Reference in a new issue