调整1130配方,添加1130的能量系统

This commit is contained in:
Atsuishio 2025-05-01 01:12:47 +08:00 committed by Light_Quanta
parent 2ceef7636c
commit 2c320c25f4
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
4 changed files with 72 additions and 22 deletions

View file

@ -108,9 +108,12 @@ public class VehicleConfig {
public static ModConfigSpec.IntValue PRISM_TANK_SHOOT_COST_MODE_2; public static ModConfigSpec.IntValue PRISM_TANK_SHOOT_COST_MODE_2;
public static ModConfigSpec.IntValue HPJ11_HP; public static ModConfigSpec.IntValue HPJ11_HP;
public static ModConfigSpec.IntValue HPJ11_MAX_ENERGY;
public static ModConfigSpec.DoubleValue HPJ11_DAMAGE; public static ModConfigSpec.DoubleValue HPJ11_DAMAGE;
public static ModConfigSpec.DoubleValue HPJ11_EXPLOSION_DAMAGE; public static ModConfigSpec.DoubleValue HPJ11_EXPLOSION_DAMAGE;
public static ModConfigSpec.DoubleValue HPJ11_EXPLOSION_RADIUS; public static ModConfigSpec.DoubleValue HPJ11_EXPLOSION_RADIUS;
public static ModConfigSpec.IntValue HPJ11_SHOOT_COST;
public static ModConfigSpec.IntValue HPJ11_SEEK_COST;
public static void init(ModConfigSpec.Builder builder) { public static void init(ModConfigSpec.Builder builder) {
builder.push("vehicle"); builder.push("vehicle");
@ -427,6 +430,9 @@ public class VehicleConfig {
builder.comment("The health of HPJ-11"); builder.comment("The health of HPJ-11");
HPJ11_HP = builder.defineInRange("hpj_11_hp", 350, 1, 10000000); HPJ11_HP = builder.defineInRange("hpj_11_hp", 350, 1, 10000000);
builder.comment("The max energy storage of HPJ-11");
HPJ11_MAX_ENERGY = builder.defineInRange("hpj_11_max_energy", 5000000, 0, 2147483647);
builder.comment("The damage of HPJ-11"); builder.comment("The damage of HPJ-11");
HPJ11_DAMAGE = builder.defineInRange("hpj_11_damage", 20d, 1, 10000000); HPJ11_DAMAGE = builder.defineInRange("hpj_11_damage", 20d, 1, 10000000);
@ -436,6 +442,12 @@ public class VehicleConfig {
builder.comment("The explosion radius of HPJ-11"); builder.comment("The explosion radius of HPJ-11");
HPJ11_EXPLOSION_RADIUS = builder.defineInRange("hpj_11_explosion_radius", 4d, 1, 50); HPJ11_EXPLOSION_RADIUS = builder.defineInRange("hpj_11_explosion_radius", 4d, 1, 50);
builder.comment("The energy cost of HPJ-11 per shoot");
HPJ11_SHOOT_COST = builder.defineInRange("hpj_11_shoot_cost", 64, 0, 2147483647);
builder.comment("The energy cost of HPJ-11 find a new target");
HPJ11_SEEK_COST = builder.defineInRange("hpj_11_seek_cost", 1024, 0, 2147483647);
builder.pop(); builder.pop();
builder.pop(); builder.pop();

View file

@ -256,14 +256,17 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
return; return;
} }
if (this.getEnergy() <= VehicleConfig.HPJ11_SEEK_COST.get()) return;
Matrix4f transform = getBarrelTransform(1); Matrix4f transform = getBarrelTransform(1);
Vector4f worldPosition = transformPosition(transform, 0f, 0.4f, 0); Vector4f worldPosition = transformPosition(transform, 0f, 0.4f, 0);
Vec3 barrelRootPos = new Vec3(worldPosition.x, worldPosition.y, worldPosition.z); Vec3 barrelRootPos = new Vec3(worldPosition.x, worldPosition.y, worldPosition.z);
if (entityData.get(TARGET_UUID).equals("none") && tickCount % 2 == 0) { if (entityData.get(TARGET_UUID).equals("none") && tickCount % 2 == 0) {
Entity naerestEntity = seekNearLivingEntity(barrelRootPos,-32.5,90,3,160, 0.3); Entity naerestEntity = seekNearLivingEntity(barrelRootPos, -32.5, 90, 3, 160, 0.3);
if (naerestEntity != null) { if (naerestEntity != null) {
entityData.set(TARGET_UUID, naerestEntity.getStringUUID()); entityData.set(TARGET_UUID, naerestEntity.getStringUUID());
this.consumeEnergy(VehicleConfig.HPJ11_SEEK_COST.get());
} }
} }
@ -474,6 +477,7 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
@Override @Override
public void vehicleShoot(Player player, int type) { public void vehicleShoot(Player player, int type) {
if (cannotFire) return; if (cannotFire) return;
if (this.getEnergy() < VehicleConfig.HPJ11_SHOOT_COST.get()) return;
boolean hasCreativeAmmo = (getFirstPassenger() instanceof Player pPlayer && InventoryTool.hasCreativeAmmoBox(pPlayer)) || hasItem(ModItems.CREATIVE_AMMO_BOX.get()); boolean hasCreativeAmmo = (getFirstPassenger() instanceof Player pPlayer && InventoryTool.hasCreativeAmmoBox(pPlayer)) || hasItem(ModItems.CREATIVE_AMMO_BOX.get());
@ -496,6 +500,8 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
this.entityData.set(HEAT, this.entityData.get(HEAT) + 2); this.entityData.set(HEAT, this.entityData.get(HEAT) + 2);
this.entityData.set(ANIM_TIME, 1); this.entityData.set(ANIM_TIME, 1);
this.consumeEnergy(VehicleConfig.HPJ11_SHOOT_COST.get());
if (hasCreativeAmmo) return; if (hasCreativeAmmo) return;
this.getItemStacks().stream().filter(stack -> stack.is(ModItems.SMALL_SHELL.get())).findFirst().ifPresent(stack -> stack.shrink(1)); this.getItemStacks().stream().filter(stack -> stack.is(ModItems.SMALL_SHELL.get())).findFirst().ifPresent(stack -> stack.shrink(1));
@ -514,6 +520,8 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
@Override @Override
public void travel() { public void travel() {
if (this.getEnergy() <= 0) return;
Entity passenger = this.getFirstPassenger(); Entity passenger = this.getFirstPassenger();
if (passenger != null) { if (passenger != null) {
float diffY = Mth.wrapDegrees(passenger.getYHeadRot() - this.getYRot()); float diffY = Mth.wrapDegrees(passenger.getYHeadRot() - this.getYRot());
@ -547,6 +555,11 @@ public class Hpj11Entity extends ContainerMobileVehicleEntity implements GeoEnti
return this.cache; return this.cache;
} }
@Override
public int getMaxEnergy() {
return VehicleConfig.HPJ11_MAX_ENERGY.get();
}
@Override @Override
public float getMaxHealth() { public float getMaxHealth() {
return VehicleConfig.HPJ11_HP.get(); return VehicleConfig.HPJ11_HP.get();

View file

@ -0,0 +1,46 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
"abc",
"def",
"ghg"
],
"key": {
"a": {
"item": "superbwarfare:hpj_11_blueprint"
},
"b": {
"item": "minecraft:observer"
},
"c": {
"item": "minecraft:comparator"
},
"d": {
"tag": "superbwarfare:storage_blocks/steel"
},
"e": {
"item": "superbwarfare:cannon_core"
},
"f": {
"item": "superbwarfare:large_motor"
},
"g": {
"item": "minecraft:iron_ingot"
},
"h": {
"item": "superbwarfare:medium_battery_pack"
}
},
"result": {
"id": "superbwarfare:container",
"components": {
"minecraft:block_entity_data": {
"id": "superbwarfare:container",
"EntityType": "superbwarfare:hpj_11"
}
}
}
}

View file

@ -1,21 +0,0 @@
{
"type": "minecraft:smithing_transform",
"template": {
"item": "superbwarfare:hpj_11_blueprint"
},
"base": {
"item": "superbwarfare:cannon_core"
},
"addition": {
"tag": "superbwarfare:storage_blocks/steel"
},
"result": {
"id": "superbwarfare:container",
"components": {
"minecraft:block_entity_data": {
"id": "superbwarfare:container",
"EntityType": "superbwarfare:hpj_11"
}
}
}
}