diff --git a/src/generated/resources/assets/superbwarfare/models/item/cm_head.json b/src/generated/resources/assets/superbwarfare/models/item/cm_head.json new file mode 100644 index 000000000..9a3c516fe --- /dev/null +++ b/src/generated/resources/assets/superbwarfare/models/item/cm_head.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "superbwarfare:item/cm_head" + } +} \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemModelProvider.java b/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemModelProvider.java index 91035bcee..9a5b548cc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemModelProvider.java +++ b/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemModelProvider.java @@ -97,6 +97,7 @@ public class ModItemModelProvider extends ItemModelProvider { simpleItem(ModItems.BLU_43_MINE); simpleItem(ModItems.AP_HEAD); simpleItem(ModItems.HE_HEAD); + simpleItem(ModItems.CM_HEAD); simpleItem(ModItems.CANNON_CORE); simpleItem(ModItems.COPPER_PLATE); simpleItem(ModItems.STEEL_INGOT); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/MediumRocketEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/MediumRocketEntity.java index 08b7551ab..e23c88c8b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/MediumRocketEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/MediumRocketEntity.java @@ -264,7 +264,7 @@ public class MediumRocketEntity extends FastThrowableProjectile implements GeoEn double dh = position().vectorTo(finalPos).horizontalDistance(); int t = (int) (dh / vh); - sparedTime = tickCount + t - 5; + sparedTime = tickCount + t - 10; active = true; } @@ -309,14 +309,14 @@ public class MediumRocketEntity extends FastThrowableProjectile implements GeoEn ParticleTool.spawnMediumExplosionParticles(serverLevel, position()); for (int index0 = 0; index0 < sparedAmount; index0++) { GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(shooter, serverLevel, - 2 * damage / sparedAmount, + 6 * damage / sparedAmount, 5 * explosionDamage / sparedAmount, radius / 2 ); gunGrenadeEntity.setPos(position().x, position().y, position().z); - gunGrenadeEntity.shoot(getDeltaMovement().x, getDeltaMovement().y, getDeltaMovement().z, (float) (1.25f * getDeltaMovement().length()), - 30); + gunGrenadeEntity.shoot(getDeltaMovement().x, getDeltaMovement().y, getDeltaMovement().z, (float) (random.nextFloat() * 0.1f + 0.8f * getDeltaMovement().length()), + 25); serverLevel.addFreshEntity(gunGrenadeEntity); } discard(); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java index 95a7d6fd6..8941c0a9d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Type63Entity.java @@ -202,7 +202,7 @@ public class Type63Entity extends ContainerMobileVehicleEntity implements GeoEnt } else { // 撬棍发射 for (int i = 0; i < 12; i++) { - if (items.get(i).getItem() instanceof MediumRocketItem && cooldown == 0) { + if (items.get(i).getItem() instanceof MediumRocketItem && cooldown == 0 && getEnergy() > 0) { shoot(player, i); items.set(i, ItemStack.EMPTY); setChanged(); @@ -268,6 +268,7 @@ public class Type63Entity extends ContainerMobileVehicleEntity implements GeoEnt } } + consumeEnergy(1); ShakeClientMessage.sendToNearbyPlayers(this, 8, 8, 10, 20); } @@ -494,9 +495,4 @@ public class Type63Entity extends ContainerMobileVehicleEntity implements GeoEnt public void setChanged() { this.entityData.set(LOADED_AMMO, this.items.stream().map(i -> i.isEmpty() ? 0 : 1).toList()); } - - @Override - public boolean hasEnergyStorage() { - return false; - } } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java b/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java index 91cc33a81..5bb9b30b2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModItems.java @@ -181,6 +181,7 @@ public class ModItems { public static final DeferredHolder PRIMER = ITEMS.register("primer", () -> new Item(new Item.Properties())); public static final DeferredHolder AP_HEAD = ITEMS.register("ap_head", () -> new Item(new Item.Properties())); public static final DeferredHolder HE_HEAD = ITEMS.register("he_head", () -> new Item(new Item.Properties())); + public static final DeferredHolder CM_HEAD = ITEMS.register("cm_head", () -> new Item(new Item.Properties())); public static final DeferredHolder CANNON_CORE = ITEMS.register("cannon_core", () -> new Item(new Item.Properties())); public static final DeferredHolder COPPER_PLATE = ITEMS.register("copper_plate", () -> new Item(new Item.Properties())); public static final DeferredHolder STEEL_INGOT = ITEMS.register("steel_ingot", () -> new Item(new Item.Properties())); diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 361bcbdb9..5289751ed 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -225,6 +225,7 @@ "item.superbwarfare.primer": "Primer", "item.superbwarfare.ap_head": "AP Warhead", "item.superbwarfare.he_head": "HE Warhead", + "item.superbwarfare.cm_head": "CM Warhead", "item.superbwarfare.cannon_core": "Cannon Core", "item.superbwarfare.dog_tag": "Dog Tag", "curios.identifier.dog_tag": "Dog Tag", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index c5d8d5a93..a660574c8 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -225,6 +225,7 @@ "item.superbwarfare.primer": "底火", "item.superbwarfare.ap_head": "穿甲弹头", "item.superbwarfare.he_head": "高爆弹头", + "item.superbwarfare.cm_head": "集束弹头", "item.superbwarfare.cannon_core": "火炮核心", "item.superbwarfare.dog_tag": "狗牌", "curios.identifier.dog_tag": "狗牌", diff --git a/src/main/resources/assets/superbwarfare/textures/item/cm_head.png b/src/main/resources/assets/superbwarfare/textures/item/cm_head.png new file mode 100644 index 000000000..ab6dd5572 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/item/cm_head.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/medium_rocket_cm.png b/src/main/resources/assets/superbwarfare/textures/item/medium_rocket_cm.png index 57afe542e..d7cb3829d 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/item/medium_rocket_cm.png and b/src/main/resources/assets/superbwarfare/textures/item/medium_rocket_cm.png differ diff --git a/src/main/resources/data/superbwarfare/recipe/cm_head_crafting.json b/src/main/resources/data/superbwarfare/recipe/cm_head_crafting.json new file mode 100644 index 000000000..2cac021b4 --- /dev/null +++ b/src/main/resources/data/superbwarfare/recipe/cm_head_crafting.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "ddd", + "bdb", + "cac" + ], + "key": { + "a": { + "item": "minecraft:gunpowder" + }, + "b": { + "item": "minecraft:iron_ingot" + }, + "c": { + "tag": "superbwarfare:ingots/steel" + }, + "d": { + "item": "superbwarfare:grenade_40mm" + } + }, + "result": { + "id": "superbwarfare:cm_head", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/recipe/medium_rocket_ap_crafting.json b/src/main/resources/data/superbwarfare/recipe/medium_rocket_ap_crafting.json new file mode 100644 index 000000000..b6453990b --- /dev/null +++ b/src/main/resources/data/superbwarfare/recipe/medium_rocket_ap_crafting.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "b", + "b" + ], + "key": { + "a": { + "item": "superbwarfare:ap_head" + }, + "b": { + "item": "superbwarfare:small_rocket" + } + }, + "result": { + "id": "superbwarfare:medium_rocket_ap", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/recipe/medium_rocket_cm_crafting.json b/src/main/resources/data/superbwarfare/recipe/medium_rocket_cm_crafting.json new file mode 100644 index 000000000..eef1c626e --- /dev/null +++ b/src/main/resources/data/superbwarfare/recipe/medium_rocket_cm_crafting.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "b", + "b" + ], + "key": { + "a": { + "item": "superbwarfare:cm_head" + }, + "b": { + "item": "superbwarfare:small_rocket" + } + }, + "result": { + "id": "superbwarfare:medium_rocket_cm", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/recipe/medium_rocket_he_crafting.json b/src/main/resources/data/superbwarfare/recipe/medium_rocket_he_crafting.json new file mode 100644 index 000000000..2059fc711 --- /dev/null +++ b/src/main/resources/data/superbwarfare/recipe/medium_rocket_he_crafting.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "a", + "b", + "b" + ], + "key": { + "a": { + "item": "superbwarfare:he_head" + }, + "b": { + "item": "superbwarfare:small_rocket" + } + }, + "result": { + "id": "superbwarfare:medium_rocket_he", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/recipe/type_63_crafting.json b/src/main/resources/data/superbwarfare/recipe/type_63_crafting.json new file mode 100644 index 000000000..8a7fccb32 --- /dev/null +++ b/src/main/resources/data/superbwarfare/recipe/type_63_crafting.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "abc", + "ddd", + "e e" + ], + "key": { + "a": { + "item": "minecraft:dispenser" + }, + "b": { + "item": "minecraft:flint_and_steel" + }, + "c": { + "item": "superbwarfare:cell" + }, + "d": { + "tag": "superbwarfare:ingots/steel" + }, + "e": { + "item": "superbwarfare:wheel" + } + }, + "result": { + "id": "superbwarfare:container", + "components": { + "minecraft:block_entity_data": { + "id": "superbwarfare:container", + "EntityType": "superbwarfare:type_63" + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/vehicles/type_63.json b/src/main/resources/data/superbwarfare/vehicles/type_63.json index a4381af2d..a5dd1f492 100644 --- a/src/main/resources/data/superbwarfare/vehicles/type_63.json +++ b/src/main/resources/data/superbwarfare/vehicles/type_63.json @@ -1,5 +1,92 @@ { "ID": "superbwarfare:type_63", "MaxHealth": 100, - "Mass": 0.45 + "MaxEnergy": 24000, + "Mass": 0.45, + "DamageModifiers": [ + { + "Type": "Multiply", + "Value": 0.1, + "Source": "minecraft:arrow" + }, + { + "Type": "Multiply", + "Value": 0.2, + "Source": "minecraft:trident" + }, + { + "Type": "Multiply", + "Value": 0.2, + "Source": "minecraft:mob_attack" + }, + { + "Type": "Multiply", + "Value": 0.2, + "Source": "minecraft:mob_attack_no_aggro" + }, + { + "Type": "Multiply", + "Value": 0.4, + "Source": "minecraft:mob_projectile" + }, + { + "Type": "Multiply", + "Value": 0.4, + "Source": "minecraft:player_attack" + }, + { + "Type": "Multiply", + "Value": 1.5, + "Source": "minecraft:explosion" + }, + { + "Type": "Multiply", + "Value": 1.5, + "Source": "minecraft:player_explosion" + }, + { + "Type": "Multiply", + "Value": 0.5, + "Source": "superbwarfare:custom_explosion" + }, + { + "Type": "Multiply", + "Value": 0.5, + "Source": "superbwarfare:projectile_boom" + }, + { + "Type": "Multiply", + "Value": 0.5, + "Source": "superbwarfare:mine" + }, + { + "Type": "Multiply", + "Value": 0.5, + "Source": "superbwarfare:lunge_mine" + }, + { + "Type": "Multiply", + "Value": 0.6, + "Source": "superbwarfare:cannon_fire" + }, + { + "Type": "Multiply", + "Value": 0.5, + "Source": "#superbwarfare:projectile" + }, + { + "Type": "Multiply", + "Value": 0.8, + "Source": "#superbwarfare:projectile_absolute" + }, + { + "Type": "Multiply", + "Value": 5, + "Source": "superbwarfare:vehicle_strike" + }, + { + "Type": "Reduce", + "Value": 1 + } + ] } \ No newline at end of file