添加新材料,修改部分配方,添加LAV150的配方,添加二次灾变近战功能
This commit is contained in:
parent
cda8be8b26
commit
b7f9ebce65
25 changed files with 418 additions and 10 deletions
|
@ -1,4 +1,4 @@
|
||||||
// 1.20.1 2025-01-17T20:28:44.4663695 Item Models: superbwarfare
|
// 1.20.1 2025-01-18T09:52:20.4788146 Item Models: superbwarfare
|
||||||
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/aa_12_blueprint.json
|
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/aa_12_blueprint.json
|
||||||
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_12_blueprint.json
|
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_12_blueprint.json
|
||||||
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_47_blueprint.json
|
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/ak_47_blueprint.json
|
||||||
|
@ -50,6 +50,7 @@ e04bbd61e716fc5d53c9425aba508fc3287bfd57 assets/superbwarfare/models/item/iron_p
|
||||||
95c0f92c4a4b3adff9c95878540071b04a921792 assets/superbwarfare/models/item/large_propeller.json
|
95c0f92c4a4b3adff9c95878540071b04a921792 assets/superbwarfare/models/item/large_propeller.json
|
||||||
ce9e4fd8ea92cfdbdda158776c1b6e1b482a3f2a assets/superbwarfare/models/item/lead_ingot.json
|
ce9e4fd8ea92cfdbdda158776c1b6e1b482a3f2a assets/superbwarfare/models/item/lead_ingot.json
|
||||||
f66c351b4843ad4d4e086ccfb7d4d0221227d196 assets/superbwarfare/models/item/legendary_material_pack.json
|
f66c351b4843ad4d4e086ccfb7d4d0221227d196 assets/superbwarfare/models/item/legendary_material_pack.json
|
||||||
|
ec76dc1a79f4c0e502fee53be8aa8e04420845fc assets/superbwarfare/models/item/light_armament_module.json
|
||||||
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/m2hb_blueprint.json
|
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/m2hb_blueprint.json
|
||||||
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/marlin_blueprint.json
|
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/marlin_blueprint.json
|
||||||
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/minigun_blueprint.json
|
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/minigun_blueprint.json
|
||||||
|
@ -111,3 +112,4 @@ b4e6c184478f8dc764fb7071ac5e30939cd01d9d assets/superbwarfare/models/item/tungst
|
||||||
fe78719387b06e37de4abe02c808a8f2dba179f8 assets/superbwarfare/models/item/us_chest_iotv.json
|
fe78719387b06e37de4abe02c808a8f2dba179f8 assets/superbwarfare/models/item/us_chest_iotv.json
|
||||||
01dabedc256e53d58a14f4ba9ce83b839f3a7bdb assets/superbwarfare/models/item/us_helmet_pastg.json
|
01dabedc256e53d58a14f4ba9ce83b839f3a7bdb assets/superbwarfare/models/item/us_helmet_pastg.json
|
||||||
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/vector_blueprint.json
|
13ca8d5676888ff51f3308d88e4bf67691fa34f8 assets/superbwarfare/models/item/vector_blueprint.json
|
||||||
|
7e4ba98653b69bcdc7e9bdbd05d2e8b8b20df293 assets/superbwarfare/models/item/wheel.json
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "superbwarfare:item/light_armament_module"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "superbwarfare:item/wheel"
|
||||||
|
}
|
||||||
|
}
|
|
@ -167,6 +167,7 @@ public class ModUtils {
|
||||||
addNetworkMessage(PlayerStopRidingMessage.class, PlayerStopRidingMessage::encode, PlayerStopRidingMessage::decode, PlayerStopRidingMessage::handler);
|
addNetworkMessage(PlayerStopRidingMessage.class, PlayerStopRidingMessage::encode, PlayerStopRidingMessage::decode, PlayerStopRidingMessage::handler);
|
||||||
addNetworkMessage(AimVillagerMessage.class, AimVillagerMessage::encode, AimVillagerMessage::decode, AimVillagerMessage::handler);
|
addNetworkMessage(AimVillagerMessage.class, AimVillagerMessage::encode, AimVillagerMessage::decode, AimVillagerMessage::handler);
|
||||||
addNetworkMessage(ShowChargingRangeMessage.class, ShowChargingRangeMessage::encode, ShowChargingRangeMessage::decode, ShowChargingRangeMessage::handler);
|
addNetworkMessage(ShowChargingRangeMessage.class, ShowChargingRangeMessage::encode, ShowChargingRangeMessage::decode, ShowChargingRangeMessage::handler);
|
||||||
|
addNetworkMessage(MeleeAttackMessage.class, MeleeAttackMessage::encode, MeleeAttackMessage::decode, MeleeAttackMessage::handler);
|
||||||
|
|
||||||
event.enqueueWork(() -> BrewingRecipeRegistry.addRecipe(Ingredient.of(PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER)),
|
event.enqueueWork(() -> BrewingRecipeRegistry.addRecipe(Ingredient.of(PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER)),
|
||||||
Ingredient.of(Items.LIGHTNING_ROD), PotionUtils.setPotion(new ItemStack(Items.POTION), ModPotion.SHOCK.get())));
|
Ingredient.of(Items.LIGHTNING_ROD), PotionUtils.setPotion(new ItemStack(Items.POTION), ModPotion.SHOCK.get())));
|
||||||
|
|
|
@ -31,7 +31,9 @@ public class ModItemModelProvider extends ItemModelProvider {
|
||||||
simpleItem(ModItems.LARGE_PROPELLER);
|
simpleItem(ModItems.LARGE_PROPELLER);
|
||||||
simpleItem(ModItems.MOTOR);
|
simpleItem(ModItems.MOTOR);
|
||||||
simpleItem(ModItems.LARGE_MOTOR);
|
simpleItem(ModItems.LARGE_MOTOR);
|
||||||
|
simpleItem(ModItems.WHEEL);
|
||||||
simpleItem(ModItems.DRONE);
|
simpleItem(ModItems.DRONE);
|
||||||
|
simpleItem(ModItems.LIGHT_ARMAMENT_MODULE);
|
||||||
|
|
||||||
simpleItem(ModItems.TARGET_DEPLOYER);
|
simpleItem(ModItems.TARGET_DEPLOYER);
|
||||||
simpleItem(ModItems.MORTAR_DEPLOYER);
|
simpleItem(ModItems.MORTAR_DEPLOYER);
|
||||||
|
|
|
@ -301,8 +301,6 @@ public class Mk42Entity extends VehicleEntity implements GeoEntity, ICannonEntit
|
||||||
this.setXRot(Mth.clamp(this.getXRot() + Mth.clamp(diffX, -3f, 3f), -85, 16.3f));
|
this.setXRot(Mth.clamp(this.getXRot() + Mth.clamp(diffX, -3f, 3f), -85, 16.3f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setTarget(ItemStack stack) {
|
public boolean setTarget(ItemStack stack) {
|
||||||
|
|
|
@ -146,6 +146,7 @@ public class ClientEventHandler {
|
||||||
public static double shakeType = 0;
|
public static double shakeType = 0;
|
||||||
public static int lungeAttack;
|
public static int lungeAttack;
|
||||||
public static int lungeDraw;
|
public static int lungeDraw;
|
||||||
|
public static int gunMelee;
|
||||||
public static int lungeSprint;
|
public static int lungeSprint;
|
||||||
public static Entity entity;
|
public static Entity entity;
|
||||||
|
|
||||||
|
@ -220,6 +221,7 @@ public class ClientEventHandler {
|
||||||
isProne(player);
|
isProne(player);
|
||||||
beamShoot(player, stack);
|
beamShoot(player, stack);
|
||||||
handleLungeAttack(player, stack);
|
handleLungeAttack(player, stack);
|
||||||
|
handleGunMelee(player, stack);
|
||||||
|
|
||||||
if (event.phase == TickEvent.Phase.END) {
|
if (event.phase == TickEvent.Phase.END) {
|
||||||
handleVariableDecrease();
|
handleVariableDecrease();
|
||||||
|
@ -249,6 +251,43 @@ public class ClientEventHandler {
|
||||||
&& !level.getBlockState(BlockPos.containing(player.getX() + 0.7 * player.getLookAngle().x, player.getY() + 1.5, player.getZ() + 0.7 * player.getLookAngle().z)).canOcclude();
|
&& !level.getBlockState(BlockPos.containing(player.getX() + 0.7 * player.getLookAngle().x, player.getY() + 1.5, player.getZ() + 0.7 * player.getLookAngle().z)).canOcclude();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void handleGunMelee(Player player, ItemStack stack) {
|
||||||
|
if (stack.getItem() instanceof GunItem gunItem) {
|
||||||
|
if (gunItem.canUseMelee(stack) && gunMelee == 0 && drawTime < 0.01
|
||||||
|
&& ModKeyMappings.MELEE.isDown()
|
||||||
|
&& !(player.getVehicle() instanceof IArmedVehicleEntity iArmedVehicle && iArmedVehicle.isDriver(player) && iArmedVehicle.banHand())
|
||||||
|
&& !holdFireVehicle
|
||||||
|
&& !notInGame()
|
||||||
|
&& !player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).edit
|
||||||
|
&& !(stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading"))
|
||||||
|
&& !GunsTool.getGunBooleanTag(stack, "Reloading")
|
||||||
|
&& !player.getCooldowns().isOnCooldown(stack.getItem())
|
||||||
|
&& !GunsTool.getGunBooleanTag(stack, "Charging")) {
|
||||||
|
gunMelee = 36;
|
||||||
|
cantFireTime = 40;
|
||||||
|
player.playSound(SoundEvents.PLAYER_ATTACK_SWEEP, 1f, 1);
|
||||||
|
}
|
||||||
|
if (gunMelee == 22) {
|
||||||
|
|
||||||
|
boolean lookAtEntity = false;
|
||||||
|
|
||||||
|
Entity lookingEntity = TraceTool.findMeleeEntity(player, player.getEntityReach());
|
||||||
|
|
||||||
|
if (lookingEntity != null) {
|
||||||
|
lookAtEntity = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lookAtEntity) {
|
||||||
|
ModUtils.PACKET_HANDLER.sendToServer(new MeleeAttackMessage(lookingEntity.getUUID()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gunMelee > 0) {
|
||||||
|
gunMelee--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void handleLungeAttack(Player player, ItemStack stack) {
|
public static void handleLungeAttack(Player player, ItemStack stack) {
|
||||||
if (stack.is(ModItems.LUNGE_MINE.get()) && lungeAttack == 0 && lungeDraw == 0 && holdFire) {
|
if (stack.is(ModItems.LUNGE_MINE.get()) && lungeAttack == 0 && lungeDraw == 0 && holdFire) {
|
||||||
lungeAttack = 36;
|
lungeAttack = 36;
|
||||||
|
@ -260,12 +299,12 @@ public class ClientEventHandler {
|
||||||
|
|
||||||
boolean lookAtEntity = false;
|
boolean lookAtEntity = false;
|
||||||
|
|
||||||
Entity lookingEntity = TraceTool.findLookingEntity(player, player.getEntityReach() + 2);
|
Entity lookingEntity = TraceTool.findLookingEntity(player, player.getEntityReach() + 2.5);
|
||||||
|
|
||||||
BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(player.getBlockReach() + 2)),
|
BlockHitResult result = player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(player.getBlockReach() + 2.5)),
|
||||||
ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player));
|
ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player));
|
||||||
|
|
||||||
Vec3 looking = Vec3.atLowerCornerOf(player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(player.getBlockReach() + 2)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos());
|
Vec3 looking = Vec3.atLowerCornerOf(player.level().clip(new ClipContext(player.getEyePosition(), player.getEyePosition().add(player.getLookAngle().scale(player.getBlockReach() + 2.5)), ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos());
|
||||||
BlockState blockState = player.level().getBlockState(BlockPos.containing(looking.x(), looking.y(), looking.z()));
|
BlockState blockState = player.level().getBlockState(BlockPos.containing(looking.x(), looking.y(), looking.z()));
|
||||||
|
|
||||||
if (lookingEntity != null) {
|
if (lookingEntity != null) {
|
||||||
|
|
|
@ -123,6 +123,7 @@ public class ModItems {
|
||||||
public static final RegistryObject<Item> LARGE_PROPELLER = ITEMS.register("large_propeller", () -> new Item(new Item.Properties()));
|
public static final RegistryObject<Item> LARGE_PROPELLER = ITEMS.register("large_propeller", () -> new Item(new Item.Properties()));
|
||||||
public static final RegistryObject<Item> MOTOR = ITEMS.register("motor", () -> new Item(new Item.Properties()));
|
public static final RegistryObject<Item> MOTOR = ITEMS.register("motor", () -> new Item(new Item.Properties()));
|
||||||
public static final RegistryObject<Item> LARGE_MOTOR = ITEMS.register("large_motor", () -> new Item(new Item.Properties()));
|
public static final RegistryObject<Item> LARGE_MOTOR = ITEMS.register("large_motor", () -> new Item(new Item.Properties()));
|
||||||
|
public static final RegistryObject<Item> WHEEL = ITEMS.register("wheel", () -> new Item(new Item.Properties()));
|
||||||
public static final RegistryObject<Item> DRONE = ITEMS.register("drone", Drone::new);
|
public static final RegistryObject<Item> DRONE = ITEMS.register("drone", Drone::new);
|
||||||
|
|
||||||
public static final RegistryObject<Item> MONITOR = ITEMS.register("monitor", Monitor::new);
|
public static final RegistryObject<Item> MONITOR = ITEMS.register("monitor", Monitor::new);
|
||||||
|
@ -229,6 +230,7 @@ public class ModItems {
|
||||||
public static final RegistryObject<Item> MK_42_BLUEPRINT = ITEMS.register("mk_42_blueprint", () -> new BlueprintItem(RarityTool.LEGENDARY));
|
public static final RegistryObject<Item> MK_42_BLUEPRINT = ITEMS.register("mk_42_blueprint", () -> new BlueprintItem(RarityTool.LEGENDARY));
|
||||||
public static final RegistryObject<Item> MLE_1934_BLUEPRINT = ITEMS.register("mle_1934_blueprint", () -> new BlueprintItem(RarityTool.LEGENDARY));
|
public static final RegistryObject<Item> MLE_1934_BLUEPRINT = ITEMS.register("mle_1934_blueprint", () -> new BlueprintItem(RarityTool.LEGENDARY));
|
||||||
public static final RegistryObject<Item> ANNIHILATOR_BLUEPRINT = ITEMS.register("annihilator_blueprint", () -> new BlueprintItem(RarityTool.LEGENDARY));
|
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));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Block
|
* Block
|
||||||
|
|
|
@ -54,6 +54,7 @@ public class ModKeyMappings {
|
||||||
public static final KeyMapping HOLD_ZOOM = new KeyMapping("key.superbwarfare.hold_zoom", InputConstants.Type.MOUSE, GLFW.GLFW_MOUSE_BUTTON_RIGHT, "key.categories.superbwarfare");
|
public static final KeyMapping HOLD_ZOOM = new KeyMapping("key.superbwarfare.hold_zoom", InputConstants.Type.MOUSE, GLFW.GLFW_MOUSE_BUTTON_RIGHT, "key.categories.superbwarfare");
|
||||||
public static final KeyMapping SWITCH_ZOOM = new KeyMapping("key.superbwarfare.switch_zoom", GLFW.GLFW_KEY_UNKNOWN, "key.categories.superbwarfare");
|
public static final KeyMapping SWITCH_ZOOM = new KeyMapping("key.superbwarfare.switch_zoom", GLFW.GLFW_KEY_UNKNOWN, "key.categories.superbwarfare");
|
||||||
public static final KeyMapping RELEASE_DECOY = new KeyMapping("key.superbwarfare.release_decoy", GLFW.GLFW_KEY_X, "key.categories.superbwarfare");
|
public static final KeyMapping RELEASE_DECOY = new KeyMapping("key.superbwarfare.release_decoy", GLFW.GLFW_KEY_X, "key.categories.superbwarfare");
|
||||||
|
public static final KeyMapping MELEE = new KeyMapping("key.superbwarfare.melee", GLFW.GLFW_KEY_V, "key.categories.superbwarfare");
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerKeyMappings(RegisterKeyMappingsEvent event) {
|
public static void registerKeyMappings(RegisterKeyMappingsEvent event) {
|
||||||
|
@ -75,6 +76,7 @@ public class ModKeyMappings {
|
||||||
event.register(HOLD_ZOOM);
|
event.register(HOLD_ZOOM);
|
||||||
event.register(SWITCH_ZOOM);
|
event.register(SWITCH_ZOOM);
|
||||||
event.register(RELEASE_DECOY);
|
event.register(RELEASE_DECOY);
|
||||||
|
event.register(MELEE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(value = Dist.CLIENT)
|
@Mod.EventBusSubscriber(value = Dist.CLIENT)
|
||||||
|
|
|
@ -295,6 +295,9 @@ public abstract class GunItem extends Item {
|
||||||
public boolean ejectShell(ItemStack stack) {
|
public boolean ejectShell(ItemStack stack) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
public boolean canUseMelee(ItemStack stack) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public int getFireMode() {
|
public int getFireMode() {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -14,6 +14,8 @@ import com.atsuishio.superbwarfare.perk.Perk;
|
||||||
import com.atsuishio.superbwarfare.perk.PerkHelper;
|
import com.atsuishio.superbwarfare.perk.PerkHelper;
|
||||||
import com.atsuishio.superbwarfare.tools.GunsTool;
|
import com.atsuishio.superbwarfare.tools.GunsTool;
|
||||||
import com.atsuishio.superbwarfare.tools.RarityTool;
|
import com.atsuishio.superbwarfare.tools.RarityTool;
|
||||||
|
import com.google.common.collect.HashMultimap;
|
||||||
|
import com.google.common.collect.Multimap;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.model.HumanoidModel;
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
import net.minecraft.client.player.LocalPlayer;
|
||||||
|
@ -23,7 +25,11 @@ import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.effect.MobEffects;
|
import net.minecraft.world.effect.MobEffects;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.Attribute;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
||||||
|
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.inventory.tooltip.TooltipComponent;
|
import net.minecraft.world.inventory.tooltip.TooltipComponent;
|
||||||
import net.minecraft.world.item.ItemDisplayContext;
|
import net.minecraft.world.item.ItemDisplayContext;
|
||||||
|
@ -43,6 +49,7 @@ import software.bernie.geckolib.core.object.PlayState;
|
||||||
import software.bernie.geckolib.util.GeckoLibUtil;
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
@ -131,6 +138,10 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, AnimatedItem
|
||||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sc.iterativeload2"));
|
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sc.iterativeload2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ClientEventHandler.gunMelee > 0) {
|
||||||
|
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sc.hit"));
|
||||||
|
}
|
||||||
|
|
||||||
if (stack.getOrCreateTag().getInt("reload_stage") == 3) {
|
if (stack.getOrCreateTag().getInt("reload_stage") == 3) {
|
||||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sc.finish"));
|
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sc.finish"));
|
||||||
}
|
}
|
||||||
|
@ -151,6 +162,7 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, AnimatedItem
|
||||||
&& stack.getOrCreateTag().getInt("reload_stage") != 2
|
&& stack.getOrCreateTag().getInt("reload_stage") != 2
|
||||||
&& stack.getOrCreateTag().getInt("reload_stage") != 3
|
&& stack.getOrCreateTag().getInt("reload_stage") != 3
|
||||||
&& ClientEventHandler.drawTime < 0.01
|
&& ClientEventHandler.drawTime < 0.01
|
||||||
|
&& ClientEventHandler.gunMelee == 0
|
||||||
&& !GunsTool.getGunBooleanTag(stack, "Reloading")) {
|
&& !GunsTool.getGunBooleanTag(stack, "Reloading")) {
|
||||||
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
|
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
|
||||||
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.sc.run_fast"));
|
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.sc.run_fast"));
|
||||||
|
@ -264,11 +276,28 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, AnimatedItem
|
||||||
return Optional.of(new SecondaryCataclysmImageComponent(pStack));
|
return Optional.of(new SecondaryCataclysmImageComponent(pStack));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
||||||
|
Multimap<Attribute, AttributeModifier> map = super.getAttributeModifiers(slot, stack);
|
||||||
|
UUID uuid = new UUID(slot.toString().hashCode(), 0);
|
||||||
|
if (slot == EquipmentSlot.MAINHAND) {
|
||||||
|
map = HashMultimap.create(map);
|
||||||
|
map.put(Attributes.ATTACK_DAMAGE,
|
||||||
|
new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER,19, AttributeModifier.Operation.ADDITION));
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isIterativeReload(ItemStack stack) {
|
public boolean isIterativeReload(ItemStack stack) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canUseMelee(ItemStack stack) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getFireMode() {
|
public int getFireMode() {
|
||||||
return FireMode.SEMI.flag;
|
return FireMode.SEMI.flag;
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
package com.atsuishio.superbwarfare.network.message;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.tools.EntityFindUtil;
|
||||||
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class MeleeAttackMessage {
|
||||||
|
|
||||||
|
private final UUID uuid;
|
||||||
|
|
||||||
|
public MeleeAttackMessage(UUID uuid) {
|
||||||
|
|
||||||
|
this.uuid = uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MeleeAttackMessage decode(FriendlyByteBuf buffer) {
|
||||||
|
return new MeleeAttackMessage(buffer.readUUID());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void encode(MeleeAttackMessage message, FriendlyByteBuf buffer) {
|
||||||
|
buffer.writeUUID(message.uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handler(MeleeAttackMessage message, Supplier<NetworkEvent.Context> contextSupplier) {
|
||||||
|
NetworkEvent.Context context = contextSupplier.get();
|
||||||
|
context.enqueueWork(() -> {
|
||||||
|
if (context.getSender() != null) {
|
||||||
|
Player player = context.getSender();
|
||||||
|
|
||||||
|
Entity lookingEntity = EntityFindUtil.findEntity(player.level(), String.valueOf(message.uuid));
|
||||||
|
if (lookingEntity != null) {
|
||||||
|
player.attack(lookingEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
context.setPacketHandled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -44,6 +44,25 @@ public class TraceTool {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Entity findMeleeEntity(Entity entity, double entityReach) {
|
||||||
|
double distance = entityReach * entityReach;
|
||||||
|
Vec3 eyePos = entity.getEyePosition(1.0f);
|
||||||
|
HitResult hitResult = entity.pick(entityReach, 1.0f, false);
|
||||||
|
|
||||||
|
Vec3 viewVec = entity.getViewVector(1.0F);
|
||||||
|
Vec3 toVec = eyePos.add(viewVec.x * entityReach, viewVec.y * entityReach, viewVec.z * entityReach);
|
||||||
|
AABB aabb = entity.getBoundingBox().expandTowards(viewVec.scale(entityReach)).inflate(1.0D, 1.0D, 1.0D);
|
||||||
|
EntityHitResult entityhitresult = ProjectileUtil.getEntityHitResult(entity, eyePos, toVec, aabb, p -> !p.isSpectator() && entity.getVehicle() != p && p.isAlive(), distance);
|
||||||
|
if (entityhitresult != null) {
|
||||||
|
hitResult = entityhitresult;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (hitResult.getType() == HitResult.Type.ENTITY) {
|
||||||
|
return ((EntityHitResult) hitResult).getEntity();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public static Entity laserfindLookingEntity(Entity player, double entityReach) {
|
public static Entity laserfindLookingEntity(Entity player, double entityReach) {
|
||||||
|
|
||||||
BlockHitResult blockResult = player.level().clip(
|
BlockHitResult blockResult = player.level().clip(
|
||||||
|
|
|
@ -358,7 +358,7 @@
|
||||||
"0.975": [0, 0, 45],
|
"0.975": [0, 0, 45],
|
||||||
"1.1333": [0, 0, 45],
|
"1.1333": [0, 0, 45],
|
||||||
"1.4833": [0, 0, 45],
|
"1.4833": [0, 0, 45],
|
||||||
"1.4834": [0, 0, 0],
|
"1.4834": [0, 0, 0],
|
||||||
"1.5167": [0, 0, 0]
|
"1.5167": [0, 0, 0]
|
||||||
},
|
},
|
||||||
"position": [0, 0, 0]
|
"position": [0, 0, 0]
|
||||||
|
@ -1039,6 +1039,169 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.sc.hit": {
|
||||||
|
"animation_length": 1,
|
||||||
|
"bones": {
|
||||||
|
"0": {
|
||||||
|
"rotation": {
|
||||||
|
"0.0": {
|
||||||
|
"post": [0, 0, 0],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.0917": {
|
||||||
|
"post": [-5.94963, -8.76229, -6.05976],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.1667": {
|
||||||
|
"post": [14.48058, -6.87966, -12.98807],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.25": {
|
||||||
|
"post": [-2.38602, -3.01888, -5.49135],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.3": {
|
||||||
|
"post": [-2.38602, -3.01888, 7.65865],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.4": {
|
||||||
|
"post": [2.08183, 1.5984, -4.23932],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.5167": {
|
||||||
|
"post": [-2.07662, -0.86851, 1.03602],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.6333": {
|
||||||
|
"post": [1.13, 0.68, -0.56],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.75": {
|
||||||
|
"post": [0, 0, 0],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"position": {
|
||||||
|
"0.0": {
|
||||||
|
"post": [0, 0, 0],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.0667": {
|
||||||
|
"post": [-1.34989, -2.53343, -0.04567],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.1667": {
|
||||||
|
"post": [-4.3, -5, 9.45],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.25": {
|
||||||
|
"post": [-1.3, -2.8, -1.25],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.3": {
|
||||||
|
"post": [-0.05, -2.65, -7.45],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.4": {
|
||||||
|
"post": [0.09403, 0.11922, -1.00188],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.475": {
|
||||||
|
"post": [-0.1, 0.02, 1.05],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.5833": {
|
||||||
|
"post": [-0.09328, 0.05092, -0.10899],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.675": {
|
||||||
|
"post": [-0.01, 0.01, 0.24],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.75": {
|
||||||
|
"post": [0, 0, 0],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"camera": {
|
||||||
|
"rotation": {
|
||||||
|
"0.0": {
|
||||||
|
"post": [0, 0, 0],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.1": {
|
||||||
|
"post": [1.25, -1, -2],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.2083": {
|
||||||
|
"post": [1.25, -0.75, 1.05],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.3": {
|
||||||
|
"post": [1.91, -1.57, -3.13],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.3333": {
|
||||||
|
"post": [-2.08, 0.85, 3.57],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.4417": {
|
||||||
|
"post": [1.04, -1.31, -0.57],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.5667": {
|
||||||
|
"post": [-0.13, 0.13, 0.22],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.75": {
|
||||||
|
"post": [0, 0, 0],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tiba": {
|
||||||
|
"rotation": {
|
||||||
|
"0.0": {
|
||||||
|
"post": [0, 0, 0],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.0667": {
|
||||||
|
"post": [0, 0, -12],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.15": {
|
||||||
|
"post": [0, 0, 2.15],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.2417": {
|
||||||
|
"post": [0, 0, 19.73],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.3083": {
|
||||||
|
"post": [0, 0, -7.5],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.4": {
|
||||||
|
"post": [0, 0, 12.77],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.4833": {
|
||||||
|
"post": [0, 0, -2.77],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.6": {
|
||||||
|
"post": [0, 0, 1.57],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
},
|
||||||
|
"0.75": {
|
||||||
|
"post": [0, 0, 0],
|
||||||
|
"lerp_mode": "catmullrom"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -191,6 +191,7 @@
|
||||||
"item.superbwarfare.large_propeller": "Large Propeller",
|
"item.superbwarfare.large_propeller": "Large Propeller",
|
||||||
"item.superbwarfare.motor": "Motor",
|
"item.superbwarfare.motor": "Motor",
|
||||||
"item.superbwarfare.large_motor": "Large Motor",
|
"item.superbwarfare.large_motor": "Large Motor",
|
||||||
|
"item.superbwarfare.wheel": "Wheel",
|
||||||
"item.superbwarfare.hand_grenade": "Hand Grenade",
|
"item.superbwarfare.hand_grenade": "Hand Grenade",
|
||||||
"item.superbwarfare.rgo_grenade": "RGO Grenade",
|
"item.superbwarfare.rgo_grenade": "RGO Grenade",
|
||||||
"item.superbwarfare.transcript": "Transcript",
|
"item.superbwarfare.transcript": "Transcript",
|
||||||
|
@ -199,6 +200,7 @@
|
||||||
"des.superbwarfare.transcript.distance": "Distance: ",
|
"des.superbwarfare.transcript.distance": "Distance: ",
|
||||||
"des.superbwarfare.transcript.total": "Total: ",
|
"des.superbwarfare.transcript.total": "Total: ",
|
||||||
"item.superbwarfare.beam_test": "[ZzzzBoom!]",
|
"item.superbwarfare.beam_test": "[ZzzzBoom!]",
|
||||||
|
"item.superbwarfare.light_armament_module": "Light Armament Module",
|
||||||
|
|
||||||
"attribute.superbwarfare.bullet_resistance": "Bullet Resistance",
|
"attribute.superbwarfare.bullet_resistance": "Bullet Resistance",
|
||||||
|
|
||||||
|
@ -414,6 +416,7 @@
|
||||||
"key.superbwarfare.edit_stock": "Switch Stock",
|
"key.superbwarfare.edit_stock": "Switch Stock",
|
||||||
"key.superbwarfare.edit_grip": "Switch Grip",
|
"key.superbwarfare.edit_grip": "Switch Grip",
|
||||||
"key.superbwarfare.release_decoy": "Release Decoy",
|
"key.superbwarfare.release_decoy": "Release Decoy",
|
||||||
|
"key.superbwarfare.melee": "Melee",
|
||||||
|
|
||||||
"effect.superbwarfare.shock": "Shock",
|
"effect.superbwarfare.shock": "Shock",
|
||||||
"effect.superbwarfare.burn": "Burn",
|
"effect.superbwarfare.burn": "Burn",
|
||||||
|
|
|
@ -191,6 +191,7 @@
|
||||||
"item.superbwarfare.large_propeller": "大型螺旋桨",
|
"item.superbwarfare.large_propeller": "大型螺旋桨",
|
||||||
"item.superbwarfare.motor": "马达",
|
"item.superbwarfare.motor": "马达",
|
||||||
"item.superbwarfare.large_motor": "大型电动机",
|
"item.superbwarfare.large_motor": "大型电动机",
|
||||||
|
"item.superbwarfare.wheel": "车轮",
|
||||||
"item.superbwarfare.hand_grenade": "M67手榴弹",
|
"item.superbwarfare.hand_grenade": "M67手榴弹",
|
||||||
"item.superbwarfare.rgo_grenade": "RGO手榴弹",
|
"item.superbwarfare.rgo_grenade": "RGO手榴弹",
|
||||||
"item.superbwarfare.transcript": "成绩单",
|
"item.superbwarfare.transcript": "成绩单",
|
||||||
|
@ -199,6 +200,7 @@
|
||||||
"des.superbwarfare.transcript.distance": "距离:",
|
"des.superbwarfare.transcript.distance": "距离:",
|
||||||
"des.superbwarfare.transcript.total": "总环数:",
|
"des.superbwarfare.transcript.total": "总环数:",
|
||||||
"item.superbwarfare.beam_test": "[滋崩]",
|
"item.superbwarfare.beam_test": "[滋崩]",
|
||||||
|
"item.superbwarfare.light_armament_module": "轻型武装模块",
|
||||||
|
|
||||||
"attribute.superbwarfare.bullet_resistance": "子弹防护",
|
"attribute.superbwarfare.bullet_resistance": "子弹防护",
|
||||||
|
|
||||||
|
@ -412,6 +414,7 @@
|
||||||
"key.superbwarfare.edit_stock": "切换枪托",
|
"key.superbwarfare.edit_stock": "切换枪托",
|
||||||
"key.superbwarfare.edit_grip": "切换握把",
|
"key.superbwarfare.edit_grip": "切换握把",
|
||||||
"key.superbwarfare.release_decoy": "释放诱饵",
|
"key.superbwarfare.release_decoy": "释放诱饵",
|
||||||
|
"key.superbwarfare.melee": "枪械近战",
|
||||||
|
|
||||||
"effect.superbwarfare.shock": "电击",
|
"effect.superbwarfare.shock": "电击",
|
||||||
"effect.superbwarfare.burn": "点燃",
|
"effect.superbwarfare.burn": "点燃",
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 731 B |
BIN
src/main/resources/assets/superbwarfare/textures/item/wheel.png
Normal file
BIN
src/main/resources/assets/superbwarfare/textures/item/wheel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 590 B |
|
@ -29,7 +29,7 @@
|
||||||
"item": "superbwarfare:cell"
|
"item": "superbwarfare:cell"
|
||||||
},
|
},
|
||||||
"h": {
|
"h": {
|
||||||
"item": "minecraft:dispenser"
|
"item": "superbwarfare:light_armament_module"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"result": {
|
"result": {
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
"item": "minecraft:dispenser"
|
"item": "minecraft:dispenser"
|
||||||
},
|
},
|
||||||
"c": {
|
"c": {
|
||||||
"item": "minecraft:nether_star"
|
"item": "superbwarfare:cemented_carbide_action"
|
||||||
},
|
},
|
||||||
"d": {
|
"d": {
|
||||||
"item": "minecraft:piston"
|
"item": "minecraft:piston"
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "misc",
|
||||||
|
"pattern": [
|
||||||
|
"dbf",
|
||||||
|
"eee",
|
||||||
|
"hgh"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"b": {
|
||||||
|
"item": "superbwarfare:light_armament_module"
|
||||||
|
},
|
||||||
|
"d": {
|
||||||
|
"item": "superbwarfare:cell"
|
||||||
|
},
|
||||||
|
"e": {
|
||||||
|
"item":"superbwarfare:steel_block"
|
||||||
|
},
|
||||||
|
"f": {
|
||||||
|
"item": "minecraft:chest"
|
||||||
|
},
|
||||||
|
"g": {
|
||||||
|
"item": "superbwarfare:large_motor"
|
||||||
|
},
|
||||||
|
"h": {
|
||||||
|
"item": "superbwarfare:wheel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "superbwarfare:container",
|
||||||
|
"nbt": {
|
||||||
|
"BlockEntityTag": {
|
||||||
|
"EntityType": "superbwarfare:lav_150"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "misc",
|
||||||
|
"pattern": [
|
||||||
|
"ddd",
|
||||||
|
"abc",
|
||||||
|
"ddd"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"a": {
|
||||||
|
"item": "superbwarfare:steel_barrel"
|
||||||
|
},
|
||||||
|
"b": {
|
||||||
|
"item": "superbwarfare:rare_material_pack"
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"item": "minecraft:dispenser"
|
||||||
|
},
|
||||||
|
"d": {
|
||||||
|
"tag":"forge:ingots/steel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "superbwarfare:light_armament_module",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,7 +13,7 @@
|
||||||
"item": "superbwarfare:cell"
|
"item": "superbwarfare:cell"
|
||||||
},
|
},
|
||||||
"c": {
|
"c": {
|
||||||
"item": "minecraft:black_wool"
|
"item": "superbwarfare:wheel"
|
||||||
},
|
},
|
||||||
"d": {
|
"d": {
|
||||||
"item": "superbwarfare:motor"
|
"item": "superbwarfare:motor"
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "equipment",
|
||||||
|
"pattern": [
|
||||||
|
" a ",
|
||||||
|
"aba",
|
||||||
|
" a "
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"a": {
|
||||||
|
"item": "minecraft:black_wool"
|
||||||
|
},
|
||||||
|
"b": {
|
||||||
|
"tag":"forge:ingots/iron"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "superbwarfare:wheel",
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue