注册所有护甲
This commit is contained in:
parent
c8f1d2271a
commit
b2804b6a23
23 changed files with 685 additions and 10 deletions
|
@ -52,6 +52,7 @@ public class ModUtils {
|
||||||
ModMenuTypes.REGISTRY.register(bus);
|
ModMenuTypes.REGISTRY.register(bus);
|
||||||
ModVillagers.register(bus);
|
ModVillagers.register(bus);
|
||||||
ModRecipes.RECIPE_SERIALIZERS.register(bus);
|
ModRecipes.RECIPE_SERIALIZERS.register(bus);
|
||||||
|
ModArmorMaterials.MATERIALS.register(bus);
|
||||||
|
|
||||||
// bus.addListener(this::onCommonSetup);
|
// bus.addListener(this::onCommonSetup);
|
||||||
// bus.addListener(this::onClientSetup);
|
// bus.addListener(this::onClientSetup);
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.model.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.ModUtils;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.GeHelmetM35;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
public class GeHelmetM35Model extends GeoModel<GeHelmetM35> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(GeHelmetM35 object) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(GeHelmetM35 object) {
|
||||||
|
return ModUtils.loc("geo/ge_helmet_m_35.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(GeHelmetM35 object) {
|
||||||
|
return ModUtils.loc("textures/armor/ge_helmet_m_35.png");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.model.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.ModUtils;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.RuChest6b43;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
public class RuChest6b43Model extends GeoModel<RuChest6b43> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(RuChest6b43 object) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(RuChest6b43 object) {
|
||||||
|
return ModUtils.loc("geo/ru_chest_6b43.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(RuChest6b43 object) {
|
||||||
|
return ModUtils.loc("textures/armor/ru_chest_6b43.png");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.model.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.ModUtils;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.RuHelmet6b47;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
public class RuHelmet6b47Model extends GeoModel<RuHelmet6b47> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(RuHelmet6b47 object) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(RuHelmet6b47 object) {
|
||||||
|
return ModUtils.loc("geo/ru_helmet_6b47.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(RuHelmet6b47 object) {
|
||||||
|
return ModUtils.loc("textures/armor/ru_helmet_6b47.png");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.model.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.ModUtils;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.UsChestIotv;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
public class UsChestIotvModel extends GeoModel<UsChestIotv> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(UsChestIotv object) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(UsChestIotv object) {
|
||||||
|
return ModUtils.loc("geo/us_chest_iotv.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(UsChestIotv object) {
|
||||||
|
return ModUtils.loc("textures/armor/us_chest_iotv.png");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.model.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.ModUtils;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.UsHelmetPastg;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
|
public class UsHelmetPastgModel extends GeoModel<UsHelmetPastg> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getAnimationResource(UsHelmetPastg object) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getModelResource(UsHelmetPastg object) {
|
||||||
|
return ModUtils.loc("geo/us_helmet_pastg.geo.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getTextureResource(UsHelmetPastg object) {
|
||||||
|
return ModUtils.loc("textures/armor/us_helmet_pastg.png");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.renderer.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.model.armor.GeHelmetM35Model;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.GeHelmetM35;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
|
||||||
|
public class GeHelmetM35ArmorRenderer extends GeoArmorRenderer<GeHelmetM35> {
|
||||||
|
public GeHelmetM35ArmorRenderer() {
|
||||||
|
super(new GeHelmetM35Model());
|
||||||
|
this.head = new GeoBone(null, "", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RenderType getRenderType(GeHelmetM35 animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
|
||||||
|
return RenderType.entityTranslucent(getTextureLocation(animatable));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.renderer.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.model.armor.RuChest6b43Model;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.RuChest6b43;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
|
||||||
|
public class RuChest6b43ArmorRenderer extends GeoArmorRenderer<RuChest6b43> {
|
||||||
|
public RuChest6b43ArmorRenderer() {
|
||||||
|
super(new RuChest6b43Model());
|
||||||
|
this.body = new GeoBone(null, "armorBody", false, (double) 0, false, false);
|
||||||
|
this.rightArm = new GeoBone(null, "armorRightArm", false, (double) 0, false, false);
|
||||||
|
this.leftArm = new GeoBone(null, "armorLeftArm", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RenderType getRenderType(RuChest6b43 animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
|
||||||
|
return RenderType.entityTranslucent(getTextureLocation(animatable));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.renderer.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.model.armor.RuHelmet6b47Model;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.RuHelmet6b47;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
|
||||||
|
public class RuHelmet6b47ArmorRenderer extends GeoArmorRenderer<RuHelmet6b47> {
|
||||||
|
public RuHelmet6b47ArmorRenderer() {
|
||||||
|
super(new RuHelmet6b47Model());
|
||||||
|
this.head = new GeoBone(null, "", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RenderType getRenderType(RuHelmet6b47 animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
|
||||||
|
return RenderType.entityTranslucent(getTextureLocation(animatable));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.renderer.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.model.armor.UsChestIotvModel;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.UsChestIotv;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
|
||||||
|
public class UsChestIotvArmorRenderer extends GeoArmorRenderer<UsChestIotv> {
|
||||||
|
public UsChestIotvArmorRenderer() {
|
||||||
|
super(new UsChestIotvModel());
|
||||||
|
this.body = new GeoBone(null, "armorBody", false, (double) 0, false, false);
|
||||||
|
this.rightArm = new GeoBone(null, "armorRightArm", false, (double) 0, false, false);
|
||||||
|
this.leftArm = new GeoBone(null, "armorLeftArm", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RenderType getRenderType(UsChestIotv animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
|
||||||
|
return RenderType.entityTranslucent(getTextureLocation(animatable));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.atsuishio.superbwarfare.client.renderer.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.model.armor.UsHelmetPastgModel;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.UsHelmetPastg;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
|
||||||
|
public class UsHelmetPastgArmorRenderer extends GeoArmorRenderer<UsHelmetPastg> {
|
||||||
|
public UsHelmetPastgArmorRenderer() {
|
||||||
|
super(new UsHelmetPastgModel());
|
||||||
|
this.head = new GeoBone(null, "", false, (double) 0, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RenderType getRenderType(UsHelmetPastg animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
|
||||||
|
return RenderType.entityTranslucent(getTextureLocation(animatable));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.atsuishio.superbwarfare.init;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.ModUtils;
|
||||||
|
import net.minecraft.Util;
|
||||||
|
import net.minecraft.core.registries.BuiltInRegistries;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.item.ArmorMaterial;
|
||||||
|
import net.minecraft.world.item.crafting.Ingredient;
|
||||||
|
import net.neoforged.neoforge.registries.DeferredHolder;
|
||||||
|
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||||
|
|
||||||
|
import java.util.EnumMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ModArmorMaterials {
|
||||||
|
|
||||||
|
public static final DeferredRegister<ArmorMaterial> MATERIALS = DeferredRegister.create(BuiltInRegistries.ARMOR_MATERIAL, ModUtils.MODID);
|
||||||
|
|
||||||
|
public static final DeferredHolder<ArmorMaterial, ArmorMaterial> CEMENTED_CARBIDE = MATERIALS.register("cemented_carbide", () -> new ArmorMaterial(
|
||||||
|
Util.make(new EnumMap<>(ArmorItem.Type.class), p -> {
|
||||||
|
p.put(ArmorItem.Type.BOOTS, 3);
|
||||||
|
p.put(ArmorItem.Type.LEGGINGS, 6);
|
||||||
|
p.put(ArmorItem.Type.CHESTPLATE, 8);
|
||||||
|
p.put(ArmorItem.Type.HELMET, 3);
|
||||||
|
}),
|
||||||
|
10,
|
||||||
|
SoundEvents.ARMOR_EQUIP_IRON,
|
||||||
|
() -> Ingredient.of(ModItems.CEMENTED_CARBIDE_INGOT.value()),
|
||||||
|
List.of(),
|
||||||
|
4F, 0.05F)
|
||||||
|
);
|
||||||
|
|
||||||
|
public static final DeferredHolder<ArmorMaterial, ArmorMaterial> STEEL = MATERIALS.register("steel", () -> new ArmorMaterial(
|
||||||
|
Util.make(new EnumMap<>(ArmorItem.Type.class), p -> {
|
||||||
|
p.put(ArmorItem.Type.BOOTS, 2);
|
||||||
|
p.put(ArmorItem.Type.LEGGINGS, 5);
|
||||||
|
p.put(ArmorItem.Type.CHESTPLATE, 7);
|
||||||
|
p.put(ArmorItem.Type.HELMET, 2);
|
||||||
|
}),
|
||||||
|
9,
|
||||||
|
SoundEvents.ARMOR_EQUIP_IRON,
|
||||||
|
() -> Ingredient.of(ModItems.STEEL_INGOT.value()),
|
||||||
|
List.of(),
|
||||||
|
1F, 0)
|
||||||
|
);
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package com.atsuishio.superbwarfare.init;
|
||||||
|
|
||||||
import com.atsuishio.superbwarfare.ModUtils;
|
import com.atsuishio.superbwarfare.ModUtils;
|
||||||
import com.atsuishio.superbwarfare.item.*;
|
import com.atsuishio.superbwarfare.item.*;
|
||||||
|
import com.atsuishio.superbwarfare.item.armor.*;
|
||||||
import com.atsuishio.superbwarfare.item.common.BlueprintItem;
|
import com.atsuishio.superbwarfare.item.common.BlueprintItem;
|
||||||
import com.atsuishio.superbwarfare.item.common.CannonShellItem;
|
import com.atsuishio.superbwarfare.item.common.CannonShellItem;
|
||||||
import com.atsuishio.superbwarfare.item.common.MaterialPack;
|
import com.atsuishio.superbwarfare.item.common.MaterialPack;
|
||||||
|
@ -138,13 +139,13 @@ public class ModItems {
|
||||||
// public static final DeferredHolder<Item, Item> HAMMER = ITEMS.register("hammer", Hammer::new);
|
// public static final DeferredHolder<Item, Item> HAMMER = ITEMS.register("hammer", Hammer::new);
|
||||||
public static final DeferredHolder<Item, Item> CROWBAR = ITEMS.register("crowbar", Crowbar::new);
|
public static final DeferredHolder<Item, Item> CROWBAR = ITEMS.register("crowbar", Crowbar::new);
|
||||||
// public static final DeferredHolder<Item, Item> DEFUSER = ITEMS.register("defuser", Defuser::new);
|
// public static final DeferredHolder<Item, Item> DEFUSER = ITEMS.register("defuser", Defuser::new);
|
||||||
// public static final DeferredHolder<Item, Item> ARMOR_PLATE = ITEMS.register("armor_plate", ArmorPlate::new);
|
public static final DeferredHolder<Item, Item> ARMOR_PLATE = ITEMS.register("armor_plate", ArmorPlate::new);
|
||||||
//
|
//
|
||||||
// public static final DeferredHolder<Item, Item> RU_HELMET_6B47 = ITEMS.register("ru_helmet_6b47", RuHelmet6b47::new);
|
public static final DeferredHolder<Item, Item> RU_HELMET_6B47 = ITEMS.register("ru_helmet_6b47", RuHelmet6b47::new);
|
||||||
// public static final DeferredHolder<Item, Item> RU_CHEST_6B43 = ITEMS.register("ru_chest_6b43", RuChest6b43::new);
|
public static final DeferredHolder<Item, Item> RU_CHEST_6B43 = ITEMS.register("ru_chest_6b43", RuChest6b43::new);
|
||||||
// public static final DeferredHolder<Item, Item> US_HELMET_PASTG = ITEMS.register("us_helmet_pastg", UsHelmetPastg::new);
|
public static final DeferredHolder<Item, Item> US_HELMET_PASTG = ITEMS.register("us_helmet_pastg", UsHelmetPastg::new);
|
||||||
// public static final DeferredHolder<Item, Item> US_CHEST_IOTV = ITEMS.register("us_chest_iotv", UsChestIotv::new);
|
public static final DeferredHolder<Item, Item> US_CHEST_IOTV = ITEMS.register("us_chest_iotv", UsChestIotv::new);
|
||||||
// public static final DeferredHolder<Item, Item> GE_HELMET_M_35 = ITEMS.register("ge_helmet_m_35", GeHelmetM35::new);
|
public static final DeferredHolder<Item, Item> GE_HELMET_M_35 = ITEMS.register("ge_helmet_m_35", GeHelmetM35::new);
|
||||||
// public static final DeferredHolder<Item, Item> MORTAR_DEPLOYER = ITEMS.register("mortar_deployer", MortarDeployer::new);
|
// public static final DeferredHolder<Item, Item> MORTAR_DEPLOYER = ITEMS.register("mortar_deployer", MortarDeployer::new);
|
||||||
public static final DeferredHolder<Item, Item> MORTAR_BARREL = ITEMS.register("mortar_barrel", () -> new Item(new Item.Properties()));
|
public static final DeferredHolder<Item, Item> MORTAR_BARREL = ITEMS.register("mortar_barrel", () -> new Item(new Item.Properties()));
|
||||||
public static final DeferredHolder<Item, Item> MORTAR_BASE_PLATE = ITEMS.register("mortar_base_plate", () -> new Item(new Item.Properties()));
|
public static final DeferredHolder<Item, Item> MORTAR_BASE_PLATE = ITEMS.register("mortar_base_plate", () -> new Item(new Item.Properties()));
|
||||||
|
|
107
src/main/java/com/atsuishio/superbwarfare/item/ArmorPlate.java
Normal file
107
src/main/java/com/atsuishio/superbwarfare/item/ArmorPlate.java
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
package com.atsuishio.superbwarfare.item;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.init.ModItems;
|
||||||
|
import com.atsuishio.superbwarfare.init.ModTags;
|
||||||
|
import com.atsuishio.superbwarfare.tools.NBTTool;
|
||||||
|
import net.minecraft.ChatFormatting;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.sounds.SoundEvents;
|
||||||
|
import net.minecraft.sounds.SoundSource;
|
||||||
|
import net.minecraft.util.Mth;
|
||||||
|
import net.minecraft.world.InteractionHand;
|
||||||
|
import net.minecraft.world.InteractionResultHolder;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.TooltipFlag;
|
||||||
|
import net.minecraft.world.item.UseAnim;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ArmorPlate extends Item {
|
||||||
|
public ArmorPlate() {
|
||||||
|
super(new Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@ParametersAreNonnullByDefault
|
||||||
|
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
|
||||||
|
if (NBTTool.getOrCreateTag(stack).getBoolean("Infinite")) {
|
||||||
|
tooltipComponents.add(Component.translatable("des.superbwarfare.armor_plate.infinite").withStyle(ChatFormatting.GRAY));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@ParametersAreNonnullByDefault
|
||||||
|
public @NotNull InteractionResultHolder<ItemStack> use(Level worldIn, Player playerIn, InteractionHand handIn) {
|
||||||
|
ItemStack stack = playerIn.getItemInHand(handIn);
|
||||||
|
ItemStack armor = playerIn.getItemBySlot(EquipmentSlot.CHEST);
|
||||||
|
|
||||||
|
if (armor == ItemStack.EMPTY) return InteractionResultHolder.fail(stack);
|
||||||
|
|
||||||
|
int armorLevel = 1;
|
||||||
|
if (armor.is(ModTags.Items.MILITARY_ARMOR)) {
|
||||||
|
armorLevel = 2;
|
||||||
|
} else if (armor.is(ModTags.Items.MILITARY_ARMOR_HEAVY)) {
|
||||||
|
armorLevel = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO 解决数据双端同步问题
|
||||||
|
if (NBTTool.getOrCreateTag(armor).getDouble("ArmorPlate") < armorLevel * 15) {
|
||||||
|
playerIn.startUsingItem(handIn);
|
||||||
|
}
|
||||||
|
|
||||||
|
return InteractionResultHolder.fail(stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull UseAnim getUseAnimation(@NotNull ItemStack stack) {
|
||||||
|
return UseAnim.BOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@ParametersAreNonnullByDefault
|
||||||
|
public @NotNull ItemStack finishUsingItem(ItemStack pStack, Level pLevel, LivingEntity pLivingEntity) {
|
||||||
|
if (!pLevel.isClientSide) {
|
||||||
|
ItemStack armor = pLivingEntity.getItemBySlot(EquipmentSlot.CHEST);
|
||||||
|
|
||||||
|
int armorLevel = 1;
|
||||||
|
if (armor.is(ModTags.Items.MILITARY_ARMOR)) {
|
||||||
|
armorLevel = 2;
|
||||||
|
} else if (armor.is(ModTags.Items.MILITARY_ARMOR_HEAVY)) {
|
||||||
|
armorLevel = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
NBTTool.getOrCreateTag(armor).putDouble("ArmorPlate", Mth.clamp(NBTTool.getOrCreateTag(armor).getDouble("ArmorPlate") + 15, 0, armorLevel * 15));
|
||||||
|
|
||||||
|
if (pLivingEntity instanceof ServerPlayer serverPlayer) {
|
||||||
|
serverPlayer.level().playSound((Entity) null, serverPlayer.getOnPos(), SoundEvents.ARMOR_EQUIP_IRON.value(), SoundSource.PLAYERS, 0.5f, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pLivingEntity instanceof Player player && !player.isCreative() && !NBTTool.getOrCreateTag(pStack).getBoolean("Infinite")) {
|
||||||
|
pStack.shrink(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.finishUsingItem(pStack, pLevel, pLivingEntity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@ParametersAreNonnullByDefault
|
||||||
|
public int getUseDuration(ItemStack stack, LivingEntity entity) {
|
||||||
|
return 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack getInfiniteInstance() {
|
||||||
|
ItemStack stack = new ItemStack(ModItems.ARMOR_PLATE.get());
|
||||||
|
NBTTool.getOrCreateTag(stack).putBoolean("Infinite", true);
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package com.atsuishio.superbwarfare.item;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
|
||||||
|
public interface CustomRendererArmor {
|
||||||
|
GeoArmorRenderer<? extends Item> getRenderer();
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package com.atsuishio.superbwarfare.item;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import software.bernie.geckolib.renderer.GeoItemRenderer;
|
||||||
|
|
||||||
|
public interface CustomRendererItem {
|
||||||
|
GeoItemRenderer<? extends Item> getRenderer();
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.atsuishio.superbwarfare.item.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.init.ModItems;
|
||||||
|
import com.atsuishio.superbwarfare.item.CustomRendererArmor;
|
||||||
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.neoforged.bus.api.SubscribeEvent;
|
||||||
|
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;
|
||||||
|
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
|
||||||
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
|
||||||
|
public class ArmorRendererRegister {
|
||||||
|
@SubscribeEvent
|
||||||
|
private static void registerArmorExtensions(RegisterClientExtensionsEvent event) {
|
||||||
|
|
||||||
|
for (var item : ModItems.ITEMS.getEntries()) {
|
||||||
|
if (!(item instanceof CustomRendererArmor armor)) continue;
|
||||||
|
event.registerItem(new IClientItemExtensions() {
|
||||||
|
|
||||||
|
private GeoArmorRenderer<?> renderer;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@ParametersAreNonnullByDefault
|
||||||
|
public @NotNull HumanoidModel<?> getHumanoidArmorModel(LivingEntity livingEntity, ItemStack itemStack, EquipmentSlot equipmentSlot, HumanoidModel<?> original) {
|
||||||
|
if (this.renderer == null)
|
||||||
|
this.renderer = armor.getRenderer();
|
||||||
|
|
||||||
|
// TODO other params?
|
||||||
|
this.renderer.prepForRender(livingEntity, itemStack, equipmentSlot, original);
|
||||||
|
return this.renderer;
|
||||||
|
}
|
||||||
|
|
||||||
|
}, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.atsuishio.superbwarfare.item.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.renderer.armor.GeHelmetM35ArmorRenderer;
|
||||||
|
import com.atsuishio.superbwarfare.init.ModArmorMaterials;
|
||||||
|
import com.atsuishio.superbwarfare.item.CustomRendererArmor;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
|
||||||
|
public class GeHelmetM35 extends ArmorItem implements GeoItem, CustomRendererArmor {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
|
||||||
|
public GeHelmetM35() {
|
||||||
|
super(ModArmorMaterials.STEEL, Type.HELMET, new Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GeoArmorRenderer<? extends Item> getRenderer() {
|
||||||
|
return new GeHelmetM35ArmorRenderer();
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO attribute modifier
|
||||||
|
// @Override
|
||||||
|
// public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
||||||
|
// Multimap<Attribute, AttributeModifier> map = super.getDefaultAttributeModifiers(slot);
|
||||||
|
// UUID uuid = new UUID(slot.toString().hashCode(), 0);
|
||||||
|
// if (slot == EquipmentSlot.HEAD) {
|
||||||
|
// map = HashMultimap.create(map);
|
||||||
|
// map.put(ModAttributes.BULLET_RESISTANCE.get(), new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER,
|
||||||
|
// 0.1 * Math.max(0, 1 - (double) stack.getDamageValue() / stack.getMaxDamage()), AttributeModifier.Operation.ADDITION));
|
||||||
|
// }
|
||||||
|
// return map;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.atsuishio.superbwarfare.item.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.renderer.armor.RuChest6b43ArmorRenderer;
|
||||||
|
import com.atsuishio.superbwarfare.init.ModArmorMaterials;
|
||||||
|
import com.atsuishio.superbwarfare.item.CustomRendererArmor;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
|
||||||
|
public class RuChest6b43 extends ArmorItem implements GeoItem, CustomRendererArmor {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
|
||||||
|
public RuChest6b43() {
|
||||||
|
super(ModArmorMaterials.CEMENTED_CARBIDE, Type.CHESTPLATE, new Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GeoArmorRenderer<? extends Item> getRenderer() {
|
||||||
|
return new RuChest6b43ArmorRenderer();
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO attribute
|
||||||
|
// @Override
|
||||||
|
// public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
||||||
|
// Multimap<Attribute, AttributeModifier> map = super.getDefaultAttributeModifiers(slot);
|
||||||
|
// UUID uuid = new UUID(slot.toString().hashCode(), 0);
|
||||||
|
// if (slot == EquipmentSlot.CHEST) {
|
||||||
|
// map = HashMultimap.create(map);
|
||||||
|
// map.put(ModAttributes.BULLET_RESISTANCE.get(), new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER,
|
||||||
|
// 0.5 * Math.max(0, 1 - (double) stack.getDamageValue() / stack.getMaxDamage()), AttributeModifier.Operation.ADDITION));
|
||||||
|
// }
|
||||||
|
// return map;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.atsuishio.superbwarfare.item.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.renderer.armor.RuHelmet6b47ArmorRenderer;
|
||||||
|
import com.atsuishio.superbwarfare.init.ModArmorMaterials;
|
||||||
|
import com.atsuishio.superbwarfare.item.CustomRendererArmor;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
|
||||||
|
public class RuHelmet6b47 extends ArmorItem implements GeoItem, CustomRendererArmor {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
|
||||||
|
public RuHelmet6b47() {
|
||||||
|
super(ModArmorMaterials.CEMENTED_CARBIDE, Type.HELMET, new Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GeoArmorRenderer<? extends Item> getRenderer() {
|
||||||
|
return new RuHelmet6b47ArmorRenderer();
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo attribute
|
||||||
|
// @Override
|
||||||
|
// public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
||||||
|
// Multimap<Attribute, AttributeModifier> map = super.getDefaultAttributeModifiers(slot);
|
||||||
|
// UUID uuid = new UUID(slot.toString().hashCode(), 0);
|
||||||
|
// if (slot == EquipmentSlot.HEAD) {
|
||||||
|
// map = HashMultimap.create(map);
|
||||||
|
// map.put(ModAttributes.BULLET_RESISTANCE.get(), new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER,
|
||||||
|
// 0.2 * Math.max(0, 1 - (double) stack.getDamageValue() / stack.getMaxDamage()), AttributeModifier.Operation.ADDITION));
|
||||||
|
// }
|
||||||
|
// return map;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.atsuishio.superbwarfare.item.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.renderer.armor.UsChestIotvArmorRenderer;
|
||||||
|
import com.atsuishio.superbwarfare.init.ModArmorMaterials;
|
||||||
|
import com.atsuishio.superbwarfare.item.CustomRendererArmor;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
|
||||||
|
public class UsChestIotv extends ArmorItem implements GeoItem, CustomRendererArmor {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
|
||||||
|
public UsChestIotv() {
|
||||||
|
super(ModArmorMaterials.CEMENTED_CARBIDE, Type.CHESTPLATE, new Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GeoArmorRenderer<? extends Item> getRenderer() {
|
||||||
|
return new UsChestIotvArmorRenderer();
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo attribute
|
||||||
|
// @Override
|
||||||
|
// public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
||||||
|
// Multimap<Attribute, AttributeModifier> map = super.getDefaultAttributeModifiers(slot);
|
||||||
|
// UUID uuid = new UUID(slot.toString().hashCode(), 0);
|
||||||
|
// if (slot == EquipmentSlot.CHEST) {
|
||||||
|
// map = HashMultimap.create(map);
|
||||||
|
// map.put(ModAttributes.BULLET_RESISTANCE.get(), new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER,
|
||||||
|
// 0.5 * Math.max(0, 1 - (double) stack.getDamageValue() / stack.getMaxDamage()), AttributeModifier.Operation.ADDITION));
|
||||||
|
// }
|
||||||
|
// return map;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.atsuishio.superbwarfare.item.armor;
|
||||||
|
|
||||||
|
import com.atsuishio.superbwarfare.client.renderer.armor.UsHelmetPastgArmorRenderer;
|
||||||
|
import com.atsuishio.superbwarfare.init.ModArmorMaterials;
|
||||||
|
import com.atsuishio.superbwarfare.item.CustomRendererArmor;
|
||||||
|
import net.minecraft.world.item.ArmorItem;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
|
||||||
|
import software.bernie.geckolib.animation.AnimatableManager;
|
||||||
|
import software.bernie.geckolib.renderer.GeoArmorRenderer;
|
||||||
|
import software.bernie.geckolib.util.GeckoLibUtil;
|
||||||
|
|
||||||
|
public class UsHelmetPastg extends ArmorItem implements GeoItem, CustomRendererArmor {
|
||||||
|
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
|
||||||
|
|
||||||
|
public UsHelmetPastg() {
|
||||||
|
super(ModArmorMaterials.CEMENTED_CARBIDE, Type.HELMET, new Properties());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GeoArmorRenderer<? extends Item> getRenderer() {
|
||||||
|
return new UsHelmetPastgArmorRenderer();
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo attribute
|
||||||
|
// @Override
|
||||||
|
// public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlot slot, ItemStack stack) {
|
||||||
|
// Multimap<Attribute, AttributeModifier> map = super.getDefaultAttributeModifiers(slot);
|
||||||
|
// UUID uuid = new UUID(slot.toString().hashCode(), 0);
|
||||||
|
// if (slot == EquipmentSlot.HEAD) {
|
||||||
|
// map = HashMultimap.create(map);
|
||||||
|
// map.put(ModAttributes.BULLET_RESISTANCE.get(), new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER,
|
||||||
|
// 0.2 * Math.max(0, 1 - (double) stack.getDamageValue() / stack.getMaxDamage()), AttributeModifier.Operation.ADDITION));
|
||||||
|
// }
|
||||||
|
// return map;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnimatableInstanceCache getAnimatableInstanceCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ import com.atsuishio.superbwarfare.client.PoseTool;
|
||||||
import com.atsuishio.superbwarfare.client.tooltip.component.GunImageComponent;
|
import com.atsuishio.superbwarfare.client.tooltip.component.GunImageComponent;
|
||||||
import com.atsuishio.superbwarfare.init.ModItems;
|
import com.atsuishio.superbwarfare.init.ModItems;
|
||||||
import com.atsuishio.superbwarfare.init.ModTags;
|
import com.atsuishio.superbwarfare.init.ModTags;
|
||||||
|
import com.atsuishio.superbwarfare.item.CustomRendererItem;
|
||||||
import com.atsuishio.superbwarfare.perk.Perk;
|
import com.atsuishio.superbwarfare.perk.Perk;
|
||||||
import com.atsuishio.superbwarfare.tools.AmmoType;
|
import com.atsuishio.superbwarfare.tools.AmmoType;
|
||||||
import com.atsuishio.superbwarfare.tools.GunsTool;
|
import com.atsuishio.superbwarfare.tools.GunsTool;
|
||||||
|
@ -32,14 +33,13 @@ import net.neoforged.fml.common.EventBusSubscriber;
|
||||||
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;
|
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;
|
||||||
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent;
|
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import software.bernie.geckolib.renderer.GeoItemRenderer;
|
|
||||||
|
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@EventBusSubscriber(modid = ModUtils.MODID, bus = EventBusSubscriber.Bus.MOD)
|
@EventBusSubscriber(modid = ModUtils.MODID, bus = EventBusSubscriber.Bus.MOD)
|
||||||
public abstract class GunItem extends Item {
|
public abstract class GunItem extends Item implements CustomRendererItem {
|
||||||
|
|
||||||
public GunItem(Properties properties) {
|
public GunItem(Properties properties) {
|
||||||
super(properties);
|
super(properties);
|
||||||
|
@ -414,8 +414,6 @@ public abstract class GunItem extends Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract GeoItemRenderer<? extends GunItem> getRenderer();
|
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
private static void registerGunExtensions(RegisterClientExtensionsEvent event) {
|
private static void registerGunExtensions(RegisterClientExtensionsEvent event) {
|
||||||
for (var item : ModItems.GUNS.getEntries()) {
|
for (var item : ModItems.GUNS.getEntries()) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue