添加重型武装模块,修改载具能量,调整配方,添加yx100配方

This commit is contained in:
Atsuihsio 2025-03-11 19:44:42 +08:00
parent 1544196810
commit d3acc4b065
21 changed files with 199 additions and 34 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2025-03-11T18:41:51.1447737 Item Models: superbwarfare
// 1.20.1 2025-03-11T19:24:00.2918063 Item Models: superbwarfare
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/aa_12_blueprint.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_12_blueprint.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_47_blueprint.json
@ -34,6 +34,7 @@ c102839d5f7d4bdc1c6cbfbf4c2c907b70f22052 assets/superbwarfare/models/item/fusee.
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/glock_18_blueprint.json
8752c2b2b648ff23d6b93eedcc6c0500c695afd7 assets/superbwarfare/models/item/grain.json
afbfd24461fb7e6b43a8e029f0a894b84d8b6638 assets/superbwarfare/models/item/heavy_ammo.json
89750640cc16a7b2d5bc3fc82ec8a53026c0466e assets/superbwarfare/models/item/heavy_armament_module.json
e7a6de100f377835831211168d98c8d19434af24 assets/superbwarfare/models/item/he_head.json
d23520b099cb796401635fe75b5b852fc957d4ea assets/superbwarfare/models/item/high_energy_explosives.json
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/hk_416_blueprint.json

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "superbwarfare:item/heavy_armament_module"
}
}

View file

@ -41,6 +41,10 @@ public class VehicleConfig {
public static ForgeConfigSpec.IntValue ANNIHILATOR_SHOOT_COST;
public static ForgeConfigSpec.IntValue ANNIHILATOR_MAX_ENERGY;
public static ForgeConfigSpec.IntValue LASER_TOWER_HP;
public static ForgeConfigSpec.IntValue LASER_TOWER_SHOOT_COST;
public static ForgeConfigSpec.IntValue LASER_TOWER_MAX_ENERGY;
public static ForgeConfigSpec.IntValue SPEEDBOAT_HP;
public static ForgeConfigSpec.IntValue SPEEDBOAT_ENERGY_COST;
public static ForgeConfigSpec.IntValue SPEEDBOAT_MAX_ENERGY;
@ -74,6 +78,17 @@ public class VehicleConfig {
public static ForgeConfigSpec.IntValue BMP_2_CANNON_EXPLOSION_DAMAGE;
public static ForgeConfigSpec.DoubleValue BMP_2_CANNON_EXPLOSION_RADIUS;
public static ForgeConfigSpec.IntValue YX_100_HP;
public static ForgeConfigSpec.IntValue YX_100_SHOOT_COST;
public static ForgeConfigSpec.IntValue YX_100_ENERGY_COST;
public static ForgeConfigSpec.IntValue YX_100_MAX_ENERGY;
public static ForgeConfigSpec.IntValue YX_100_AP_CANNON_DAMAGE;
public static ForgeConfigSpec.IntValue YX_100_AP_CANNON_EXPLOSION_DAMAGE;
public static ForgeConfigSpec.DoubleValue YX_100_AP_CANNON_EXPLOSION_RADIUS;
public static ForgeConfigSpec.IntValue YX_100_HE_CANNON_DAMAGE;
public static ForgeConfigSpec.IntValue YX_100_HE_CANNON_EXPLOSION_DAMAGE;
public static ForgeConfigSpec.DoubleValue YX_100_HE_CANNON_EXPLOSION_RADIUS;
public static void init(ForgeConfigSpec.Builder builder) {
builder.push("vehicle");
@ -171,6 +186,19 @@ public class VehicleConfig {
builder.pop();
builder.push("laser_tower");
builder.comment("The HealthPoint of Laser_Tower");
LASER_TOWER_HP = builder.defineInRange("laser_tower_hp", 100, 1, 10000000);
builder.comment("The energy cost of Laser_Tower per shoot");
LASER_TOWER_SHOOT_COST = builder.defineInRange("laser_tower_shoot_cost", 5000, 0, 2147483647);
builder.comment("The max energy storage of Laser_Tower");
LASER_TOWER_MAX_ENERGY = builder.defineInRange("laser_tower_max_energy", 500000, 0, 2147483647);
builder.pop();
builder.push("speedboat");
builder.comment("The HealthPoint of Speedboat");
@ -180,7 +208,7 @@ public class VehicleConfig {
SPEEDBOAT_ENERGY_COST = builder.defineInRange("speedboat_energy_cost", 16, 0, 2147483647);
builder.comment("The max energy storage of Speedboat");
SPEEDBOAT_MAX_ENERGY = builder.defineInRange("speedboat_max_energy", 1000000, 0, 2147483647);
SPEEDBOAT_MAX_ENERGY = builder.defineInRange("speedboat_max_energy", 500000, 0, 2147483647);
builder.pop();
@ -196,7 +224,7 @@ public class VehicleConfig {
AH_6_MAX_ENERGY_COST = builder.defineInRange("ah_6_max_energy_cost", 128, 0, 2147483647);
builder.comment("The max energy storage of AH-6");
AH_6_MAX_ENERGY = builder.defineInRange("ah_6_max_energy", 4000000, 0, 2147483647);
AH_6_MAX_ENERGY = builder.defineInRange("ah_6_max_energy", 5000000, 0, 2147483647);
builder.comment("The cannon damage of AH-6");
AH_6_CANNON_DAMAGE = builder.defineInRange("ah_6_cannon_damage", 20, 1, 10000000);
@ -221,7 +249,7 @@ public class VehicleConfig {
LAV_150_ENERGY_COST = builder.defineInRange("lav_150_energy_cost", 64, 0, 2147483647);
builder.comment("The max energy storage of Lav_150");
LAV_150_MAX_ENERGY = builder.defineInRange("lav_150_max_energy", 3000000, 0, 2147483647);
LAV_150_MAX_ENERGY = builder.defineInRange("lav_150_max_energy", 5000000, 0, 2147483647);
builder.comment("The cannon damage of Lav_150");
LAV_150_CANNON_DAMAGE = builder.defineInRange("lav_150_cannon_damage", 45, 1, 10000000);
@ -243,7 +271,7 @@ public class VehicleConfig {
TOM_6_ENERGY_COST = builder.defineInRange("tom_6_energy_cost", 16, 0, 2147483647);
builder.comment("The max energy storage of Tom_6");
TOM_6_MAX_ENERGY = builder.defineInRange("tom_6_max_energy", 160000, 0, 2147483647);
TOM_6_MAX_ENERGY = builder.defineInRange("tom_6_max_energy", 100000, 0, 2147483647);
builder.comment("The Melon Bomb explosion damage of Tom_6");
TOM_6_BOMB_EXPLOSION_DAMAGE = builder.defineInRange("tom_6_bomb_explosion_damage", 500, 1, 10000000);
@ -262,7 +290,7 @@ public class VehicleConfig {
BMP_2_ENERGY_COST = builder.defineInRange("bmp_2_energy_cost", 64, 0, 2147483647);
builder.comment("The max energy storage of Bmp_2");
BMP_2_MAX_ENERGY = builder.defineInRange("bmp_2_max_energy", 3000000, 0, 2147483647);
BMP_2_MAX_ENERGY = builder.defineInRange("bmp_2_max_energy", 5000000, 0, 2147483647);
builder.comment("The cannon damage of Bmp_2");
BMP_2_CANNON_DAMAGE = builder.defineInRange("bmp_2_cannon_damage", 55, 1, 10000000);
@ -275,6 +303,40 @@ public class VehicleConfig {
builder.pop();
builder.push("yx_100");
builder.comment("The HealthPoint of Yx_100");
YX_100_HP = builder.defineInRange("yx_100_hp", 500, 1, 10000000);
builder.comment("The energy cost of Yx_100 per tick");
YX_100_ENERGY_COST = builder.defineInRange("yx_100_energy_cost", 128, 0, 2147483647);
builder.comment("The energy cost of Yx_100 per shoot");
YX_100_SHOOT_COST = builder.defineInRange("yx_100_shoot_cost", 24000, 0, 2147483647);
builder.comment("The max energy storage of Yx_100");
YX_100_MAX_ENERGY = builder.defineInRange("yx_100_max_energy", 20000000, 0, 2147483647);
builder.comment("The cannon damage of Yx_100");
YX_100_AP_CANNON_DAMAGE = builder.defineInRange("yx_100_ap_cannon_damage", 500, 1, 10000000);
builder.comment("The cannon explosion damage of Yx_100");
YX_100_AP_CANNON_EXPLOSION_DAMAGE = builder.defineInRange("yx_100_ap_cannon_explosion_damage", 100, 1, 10000000);
builder.comment("The cannon explosion radius of Yx_100");
YX_100_AP_CANNON_EXPLOSION_RADIUS = builder.defineInRange("yx_100_ap_cannon_explosion_radius", 4d, 1d, 10000000d);
builder.comment("The cannon damage of Yx_100");
YX_100_HE_CANNON_DAMAGE = builder.defineInRange("yx_100_he_cannon_damage", 150, 1, 10000000);
builder.comment("The cannon explosion damage of Yx_100");
YX_100_HE_CANNON_EXPLOSION_DAMAGE = builder.defineInRange("yx_100_he_cannon_explosion_damage", 150, 1, 10000000);
builder.comment("The cannon explosion radius of Yx_100");
YX_100_HE_CANNON_EXPLOSION_RADIUS = builder.defineInRange("yx_100_he_cannon_explosion_radius", 10d, 1d, 10000000d);
builder.pop();
builder.pop();
}
}

View file

@ -36,6 +36,7 @@ public class ModItemModelProvider extends ItemModelProvider {
simpleItem(ModItems.DRONE);
simpleItem(ModItems.LIGHT_ARMAMENT_MODULE);
simpleItem(ModItems.MEDIUM_ARMAMENT_MODULE);
simpleItem(ModItems.HEAVY_ARMAMENT_MODULE);
simpleItem(ModItems.TARGET_DEPLOYER);
simpleItem(ModItems.MORTAR_DEPLOYER);

View file

@ -1,5 +1,6 @@
package com.atsuishio.superbwarfare.entity.vehicle;
import com.atsuishio.superbwarfare.config.server.VehicleConfig;
import com.atsuishio.superbwarfare.entity.TargetEntity;
import com.atsuishio.superbwarfare.entity.vehicle.base.EnergyVehicleEntity;
import com.atsuishio.superbwarfare.entity.vehicle.damage.DamageModifier;
@ -64,9 +65,9 @@ public class LaserTowerEntity extends EnergyVehicleEntity implements GeoEntity,
public static final EntityDataAccessor<Float> LASER_LENGTH = SynchedEntityData.defineId(LaserTowerEntity.class, EntityDataSerializers.FLOAT);
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static final float MAX_HEALTH = 100;
public static final int MAX_ENERGY = 500000;
public static final int SHOOT_COST = 5000;
public static final float MAX_HEALTH = VehicleConfig.LASER_TOWER_HP.get();
public static final int MAX_ENERGY = VehicleConfig.LASER_TOWER_MAX_ENERGY.get();
public static final int SHOOT_COST = VehicleConfig.LASER_TOWER_SHOOT_COST.get();
public int changeTargetTimer = 5000;
public LaserTowerEntity(PlayMessages.SpawnEntity packet, Level world) {

View file

@ -77,9 +77,9 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
public static final EntityDataAccessor<Integer> GUN_FIRE_TIME = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
public static final EntityDataAccessor<Integer> MACHINE_GUN_HEAT = SynchedEntityData.defineId(Yx100Entity.class, EntityDataSerializers.INT);
public static final float MAX_HEALTH = 500;
public static final int MAX_ENERGY = 5000000;
public static final int SHOOT_COST = 10000;
public static final float MAX_HEALTH = VehicleConfig.YX_100_HP.get();
public static final int MAX_ENERGY = VehicleConfig.YX_100_MAX_ENERGY.get();
public static final int SHOOT_COST = VehicleConfig.YX_100_SHOOT_COST.get();
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public float turretYRot;
@ -117,9 +117,9 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
new VehicleWeapon[]{
// AP
new CannonShellWeapon()
.hitDamage(500)
.explosionRadius(4)
.explosionDamage(100)
.hitDamage(VehicleConfig.YX_100_AP_CANNON_DAMAGE.get())
.explosionRadius(VehicleConfig.YX_100_AP_CANNON_EXPLOSION_RADIUS.get().floatValue())
.explosionDamage(VehicleConfig.YX_100_AP_CANNON_EXPLOSION_DAMAGE.get())
.fireProbability(0)
.fireTime(0)
.durability(60)
@ -129,9 +129,9 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
.icon(ModUtils.loc("textures/screens/vehicle_weapon/ap_shell.png")),
// HE
new CannonShellWeapon()
.hitDamage(100)
.explosionRadius(10)
.explosionDamage(150)
.hitDamage(VehicleConfig.YX_100_HE_CANNON_DAMAGE.get())
.explosionRadius(VehicleConfig.YX_100_HE_CANNON_EXPLOSION_RADIUS.get().floatValue())
.explosionDamage(VehicleConfig.YX_100_HE_CANNON_EXPLOSION_DAMAGE.get())
.fireProbability(0.18F)
.fireTime(2)
.durability(1)
@ -910,7 +910,7 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
@Override
public boolean canShoot(Player player) {
return switch (getSeatIndex(player)) {
case 0 -> this.entityData.get(LOADED_AMMO) > 0 && getEnergy() > 10000;
case 0 -> this.entityData.get(LOADED_AMMO) > 0 && getEnergy() > SHOOT_COST;
case 1 -> (this.entityData.get(MG_AMMO) > 0 || InventoryTool.hasCreativeAmmoBox(player)) && !cannotFire;
default -> false;
};

View file

@ -241,6 +241,7 @@ public class ModItems {
public static final RegistryObject<Item> ANNIHILATOR_BLUEPRINT = ITEMS.register("annihilator_blueprint", () -> new BlueprintItem(RarityTool.LEGENDARY));
public static final RegistryObject<Item> LIGHT_ARMAMENT_MODULE = ITEMS.register("light_armament_module", () -> new BlueprintItem(Rarity.RARE));
public static final RegistryObject<Item> MEDIUM_ARMAMENT_MODULE = ITEMS.register("medium_armament_module", () -> new BlueprintItem(Rarity.EPIC));
public static final RegistryObject<Item> HEAVY_ARMAMENT_MODULE = ITEMS.register("heavy_armament_module", () -> new BlueprintItem(RarityTool.LEGENDARY));
/**
* Block

View file

@ -215,6 +215,7 @@
"item.superbwarfare.beam_test": "[ZzzzBoom!]",
"item.superbwarfare.light_armament_module": "Light Armament Module",
"item.superbwarfare.medium_armament_module": "Medium Armament Module",
"item.superbwarfare.heavy_armament_module": "Heavy Armament Module",
"attribute.superbwarfare.bullet_resistance": "Bullet Resistance",

View file

@ -215,6 +215,7 @@
"item.superbwarfare.beam_test": "[滋崩]",
"item.superbwarfare.light_armament_module": "轻型武装模块",
"item.superbwarfare.medium_armament_module": "中型武装模块",
"item.superbwarfare.heavy_armament_module": "重型武装模块",
"attribute.superbwarfare.bullet_resistance": "子弹防护",

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

View file

@ -26,7 +26,7 @@
"item": "minecraft:chest"
},
"g": {
"item": "superbwarfare:cell"
"item": "superbwarfare:medium_battery_pack"
},
"h": {
"item": "superbwarfare:light_armament_module"

View file

@ -4,7 +4,7 @@
"pattern": [
"aaa",
"bbb",
"dcd"
"dce"
],
"key": {
"a": {
@ -18,6 +18,9 @@
},
"d": {
"item": "minecraft:netherite_block"
},
"e": {
"item": "superbwarfare:large_battery_pack"
}
},
"result": {

View file

@ -0,0 +1,27 @@
{
"type": "minecraft:crafting_shaped",
"category": "equipment",
"pattern": [
" b ",
"cdc",
" e "
],
"key": {
"b": {
"tag": "forge:plates/copper"
},
"c": {
"tag": "forge:glass_panes"
},
"d": {
"item": "minecraft:redstone"
},
"e": {
"item": "minecraft:iron_ingot"
}
},
"result": {
"item": "superbwarfare:battery",
"count": 1
}
}

View file

@ -11,7 +11,7 @@
"item": "superbwarfare:light_armament_module"
},
"d": {
"item": "superbwarfare:cell"
"item": "superbwarfare:medium_battery_pack"
},
"e": {
"tag": "superbwarfare:storage_blocks/steel"

View file

@ -2,22 +2,19 @@
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
" b ",
"cdc",
" e "
"b ",
"d ",
"e "
],
"key": {
"b": {
"tag": "forge:plates/copper"
},
"c": {
"tag": "forge:glass_panes"
"item": "minecraft:gold_nugget"
},
"d": {
"item": "minecraft:redstone"
},
"e": {
"item": "minecraft:iron_ingot"
"item": "minecraft:iron_nugget"
}
},
"result": {

View file

@ -0,0 +1,27 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
"ddd",
"abc",
"ddd"
],
"key": {
"a": {
"item": "superbwarfare:cannon_core"
},
"b": {
"item": "superbwarfare:legendary_material_pack"
},
"c": {
"item": "superbwarfare:medium_armament_module"
},
"d": {
"item": "minecraft:netherite_ingot"
}
},
"result": {
"item": "superbwarfare:heavy_armament_module",
"count": 1
}
}

View file

@ -14,7 +14,7 @@
"item": "superbwarfare:motor"
},
"c": {
"item": "superbwarfare:cell"
"item": "superbwarfare:small_battery_pack"
},
"d": {
"item": "minecraft:iron_ingot"

View file

@ -11,7 +11,7 @@
"item": "superbwarfare:light_armament_module"
},
"d": {
"item": "superbwarfare:cell"
"item": "superbwarfare:medium_battery_pack"
},
"e": {
"tag": "superbwarfare:storage_blocks/steel"

View file

@ -26,7 +26,7 @@
"item": "minecraft:chest"
},
"g": {
"item": "superbwarfare:cell"
"item": "superbwarfare:small_battery_pack"
},
"h": {
"item": "superbwarfare:large_motor"

View file

@ -11,7 +11,7 @@
"tag": "minecraft:planks"
},
"b": {
"item": "superbwarfare:cell"
"item": "superbwarfare:battery"
},
"c": {
"item": "minecraft:minecart"

View file

@ -0,0 +1,37 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
"dbf",
"eee",
"hgh"
],
"key": {
"b": {
"item": "superbwarfare:light_armament_module"
},
"d": {
"item": "superbwarfare:large_battery_pack"
},
"e": {
"item": "superbwarfare:cemented_carbide_block"
},
"f": {
"item": "superbwarfare:heavy_armament_module"
},
"g": {
"item": "superbwarfare:large_motor"
},
"h": {
"item": "superbwarfare:track"
}
},
"result": {
"item": "superbwarfare:container",
"nbt": {
"BlockEntityTag": {
"EntityType": "superbwarfare:yx_100"
}
}
}
}