添加98k

This commit is contained in:
Atsuihsio 2024-08-11 22:02:35 +08:00
parent 037e7acdde
commit ce1f33be33
43 changed files with 7074 additions and 10 deletions

View file

@ -0,0 +1,27 @@
package net.mcreator.superbwarfare.client.layer;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.item.gun.K98Item;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoRenderer;
import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
public class K98Layer extends GeoRenderLayer<K98Item> {
private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/item/k98_e.png");
public K98Layer(GeoRenderer<K98Item> entityRenderer) {
super(entityRenderer);
}
@Override
public void render(PoseStack poseStack, K98Item animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
RenderType glowRenderType = RenderType.eyes(LAYER);
getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1);
}
}

View file

@ -0,0 +1,126 @@
package net.mcreator.superbwarfare.client.model.item;
import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.item.gun.K98Item;
import net.mcreator.superbwarfare.network.ModVariables;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.model.GeoModel;
public class K98ItemModel extends GeoModel<K98Item> {
@Override
public ResourceLocation getAnimationResource(K98Item animatable) {
return new ResourceLocation(ModUtils.MODID, "animations/k98.animation.json");
}
@Override
public ResourceLocation getModelResource(K98Item animatable) {
return new ResourceLocation(ModUtils.MODID, "geo/kar98k.geo.json");
}
@Override
public ResourceLocation getTextureResource(K98Item animatable) {
return new ResourceLocation(ModUtils.MODID, "textures/item/k98.png");
}
@Override
public void setCustomAnimations(K98Item animatable, long instanceId, AnimationState animationState) {
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.GUN)) return;
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
flare.setHidden(false);
flare.setScaleX((float) (0.6 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (0.6 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));
} else {
flare.setHidden(true);
}
double p = player.getPersistentData().getDouble("zoom_pos");
double zp = player.getPersistentData().getDouble("zoom_pos_z");
gun.setPosX(2.11f * (float) p);
gun.setPosY(1.52f * (float) p - (float) (0.2f * zp));
gun.setPosZ(10f * (float) p + (float) (0.3f * zp));
gun.setScaleZ(1f - (0.7f * (float) p));
double fp = player.getPersistentData().getDouble("fire_pos");
double fr = player.getPersistentData().getDouble("fire_rot");
if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zooming) {
shen.setPosY(0.1f * (float) (fp + 2 * fr));
shen.setPosZ(4.6f * (float) (fp + 0.54f * fr));
shen.setRotX(0.03f * (float) (fp + fr));
shen.setRotZ(0f);
} else {
shen.setPosY(0.18f * (float) (fp + 2 * fr));
shen.setPosZ(4.8f * (float) (fp + 0.54f * fr));
shen.setRotX(0.27f * (float) (0.18f * fp + fr));
shen.setRotZ(-0.04f * (float) (fp + 1.3 * fr));
}
shen.setPosX(0.5f * (float)fr * (float)((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).recoilHorizon * fp));
CoreGeoBone root = getAnimationProcessor().getBone("root");
float PosX = (float) player.getPersistentData().getDouble("gun_move_posX");
float PosY = (float) player.getPersistentData().getDouble("gun_move_posY");
double y = player.getPersistentData().getDouble("y");
double x = player.getPersistentData().getDouble("x");
root.setPosX(PosX);
root.setPosY((float) y + PosY);
root.setRotX((float) x);
float RotZ = (float) player.getPersistentData().getDouble("gun_move_rotZ");
root.setRotY(0.2f * PosX);
root.setRotZ(0.2f * PosX + RotZ);
CoreGeoBone move = getAnimationProcessor().getBone("move");
double m = player.getPersistentData().getDouble("move");
double vy = player.getPersistentData().getDouble("vy");
move.setPosX(9.3f * (float) m);
move.setPosY(2f * (float) vy);
double xRot = player.getPersistentData().getDouble("xRot");
double yRot = player.getPersistentData().getDouble("yRot");
double zRot = player.getPersistentData().getDouble("zRot");
move.setRotX(0.75f * Mth.DEG_TO_RAD * (float) xRot - 0.15f * (float) vy);
move.setRotY(0.75f * Mth.DEG_TO_RAD * (float) yRot);
move.setRotZ(2.7f * (float) m + Mth.DEG_TO_RAD * (float) zRot);
CoreGeoBone camera = getAnimationProcessor().getBone("camera");
player.getPersistentData().putDouble("camera_rot_x", Mth.RAD_TO_DEG * camera.getRotX());
player.getPersistentData().putDouble("camera_rot_y", Mth.RAD_TO_DEG * camera.getRotY());
player.getPersistentData().putDouble("camera_rot_z", Mth.RAD_TO_DEG * camera.getRotZ());
}
}

View file

@ -0,0 +1,19 @@
package net.mcreator.superbwarfare.client.renderer.item;
import net.mcreator.superbwarfare.client.layer.K98Layer;
import net.mcreator.superbwarfare.client.model.item.K98ItemModel;
import net.mcreator.superbwarfare.item.gun.K98Item;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.renderer.GeoItemRenderer;
public class K98ItemRenderer extends GeoItemRenderer<K98Item> {
public K98ItemRenderer() {
super(new K98ItemModel());
this.addRenderLayer(new K98Layer(this));
}
@Override
public ResourceLocation getTextureLocation(K98Item instance) {
return super.getTextureLocation(instance);
}
}

View file

@ -41,6 +41,7 @@ public class ModItems {
public static final RegistryObject<Item> QBZ_95 = GUNS.register("qbz_95", Qbz95Item::new); public static final RegistryObject<Item> QBZ_95 = GUNS.register("qbz_95", Qbz95Item::new);
public static final RegistryObject<Item> MK_14 = GUNS.register("mk_14", Mk14Item::new); public static final RegistryObject<Item> MK_14 = GUNS.register("mk_14", Mk14Item::new);
public static final RegistryObject<Item> MARLIN = GUNS.register("marlin", MarlinItem::new); public static final RegistryObject<Item> MARLIN = GUNS.register("marlin", MarlinItem::new);
public static final RegistryObject<Item> K_98 = GUNS.register("k_98", K98Item::new);
public static final RegistryObject<Item> SVD = GUNS.register("svd", SvdItem::new); public static final RegistryObject<Item> SVD = GUNS.register("svd", SvdItem::new);
public static final RegistryObject<Item> M_98B = GUNS.register("m_98b", M98bItem::new); public static final RegistryObject<Item> M_98B = GUNS.register("m_98b", M98bItem::new);
public static final RegistryObject<Item> SENTINEL = GUNS.register("sentinel", SentinelItem::new); public static final RegistryObject<Item> SENTINEL = GUNS.register("sentinel", SentinelItem::new);
@ -144,7 +145,7 @@ public class ModItems {
public static final RegistryObject<Item> TRACHELIUM_BLUEPRINT = ITEMS.register("trachelium_blueprint", () -> new BlueprintItem(RarityTool.LEGENDARY)); public static final RegistryObject<Item> TRACHELIUM_BLUEPRINT = ITEMS.register("trachelium_blueprint", () -> new BlueprintItem(RarityTool.LEGENDARY));
public static final RegistryObject<Item> GLOCK_17_BLUEPRINT = ITEMS.register("glock_17_blueprint", () -> new BlueprintItem(Rarity.COMMON)); public static final RegistryObject<Item> GLOCK_17_BLUEPRINT = ITEMS.register("glock_17_blueprint", () -> new BlueprintItem(Rarity.COMMON));
public static final RegistryObject<Item> GLOCK_18_BLUEPRINT = ITEMS.register("glock_18_blueprint", () -> new BlueprintItem(Rarity.COMMON)); public static final RegistryObject<Item> GLOCK_18_BLUEPRINT = ITEMS.register("glock_18_blueprint", () -> new BlueprintItem(Rarity.RARE));
public static final RegistryObject<Item> HUNTING_RIFLE_BLUEPRINT = ITEMS.register("hunting_rifle_blueprint", () -> new BlueprintItem(Rarity.EPIC)); public static final RegistryObject<Item> HUNTING_RIFLE_BLUEPRINT = ITEMS.register("hunting_rifle_blueprint", () -> new BlueprintItem(Rarity.EPIC));
public static final RegistryObject<Item> M_79_BLUEPRINT = ITEMS.register("m_79_blueprint", () -> new BlueprintItem(Rarity.RARE)); public static final RegistryObject<Item> M_79_BLUEPRINT = ITEMS.register("m_79_blueprint", () -> new BlueprintItem(Rarity.RARE));
public static final RegistryObject<Item> RPG_BLUEPRINT = ITEMS.register("rpg_blueprint", () -> new BlueprintItem(Rarity.EPIC)); public static final RegistryObject<Item> RPG_BLUEPRINT = ITEMS.register("rpg_blueprint", () -> new BlueprintItem(Rarity.EPIC));
@ -169,6 +170,7 @@ public class ModItems {
public static final RegistryObject<Item> TASER_BLUEPRINT = ITEMS.register("taser_blueprint", () -> new BlueprintItem(Rarity.COMMON)); public static final RegistryObject<Item> TASER_BLUEPRINT = ITEMS.register("taser_blueprint", () -> new BlueprintItem(Rarity.COMMON));
public static final RegistryObject<Item> M_1911_BLUEPRINT = ITEMS.register("m_1911_blueprint", () -> new BlueprintItem(Rarity.COMMON)); public static final RegistryObject<Item> M_1911_BLUEPRINT = ITEMS.register("m_1911_blueprint", () -> new BlueprintItem(Rarity.COMMON));
public static final RegistryObject<Item> QBZ_95_BLUEPRINT = ITEMS.register("qbz_95_blueprint", () -> new BlueprintItem(Rarity.EPIC)); public static final RegistryObject<Item> QBZ_95_BLUEPRINT = ITEMS.register("qbz_95_blueprint", () -> new BlueprintItem(Rarity.EPIC));
public static final RegistryObject<Item> K_98_BLUEPRINT = ITEMS.register("k_98_blueprint", () -> new BlueprintItem(Rarity.RARE));
/** /**
* Block * Block

View file

@ -210,6 +210,13 @@ public class ModSounds {
public static final RegistryObject<SoundEvent> QBZ_95_RELOAD_NORMAL = REGISTRY.register("qbz_95_reload_normal", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "qbz_95_reload_normal"))); public static final RegistryObject<SoundEvent> QBZ_95_RELOAD_NORMAL = REGISTRY.register("qbz_95_reload_normal", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "qbz_95_reload_normal")));
public static final RegistryObject<SoundEvent> QBZ_95_RELOAD_EMPTY = REGISTRY.register("qbz_95_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "qbz_95_reload_empty"))); public static final RegistryObject<SoundEvent> QBZ_95_RELOAD_EMPTY = REGISTRY.register("qbz_95_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "qbz_95_reload_empty")));
public static final RegistryObject<SoundEvent> K_98_FIRE_1P = REGISTRY.register("k_98_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "k_98_fire_1p")));
public static final RegistryObject<SoundEvent> K_98_FIRE_3P = REGISTRY.register("k_98_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "k_98_fire_3p")));
public static final RegistryObject<SoundEvent> K_98_FAR = REGISTRY.register("k_98_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "k_98_far")));
public static final RegistryObject<SoundEvent> K_98_VERYFAR = REGISTRY.register("k_98_veryfar", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "k_98_veryfar")));
public static final RegistryObject<SoundEvent> K_98_RELOAD_EMPTY = REGISTRY.register("k_98_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "k_98_reload_empty")));
public static final RegistryObject<SoundEvent> K_98_BOLT = REGISTRY.register("k_98_bolt", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "k_98_bolt")));
public static final RegistryObject<SoundEvent> MK_42_FIRE_1P = REGISTRY.register("mk_42_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "mk_42_fire_1p"))); public static final RegistryObject<SoundEvent> MK_42_FIRE_1P = REGISTRY.register("mk_42_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "mk_42_fire_1p")));
public static final RegistryObject<SoundEvent> MK_42_FIRE_3P = REGISTRY.register("mk_42_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "mk_42_fire_3p"))); public static final RegistryObject<SoundEvent> MK_42_FIRE_3P = REGISTRY.register("mk_42_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "mk_42_fire_3p")));
public static final RegistryObject<SoundEvent> MK_42_FAR = REGISTRY.register("mk_42_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "mk_42_far"))); public static final RegistryObject<SoundEvent> MK_42_FAR = REGISTRY.register("mk_42_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation("superbwarfare", "mk_42_far")));

View file

@ -37,6 +37,7 @@ public class ModTabs {
output.accept(Qbz95Item.getGunInstance()); output.accept(Qbz95Item.getGunInstance());
output.accept(Mk14Item.getGunInstance()); output.accept(Mk14Item.getGunInstance());
output.accept(MarlinItem.getGunInstance()); output.accept(MarlinItem.getGunInstance());
output.accept(K98Item.getGunInstance());
output.accept(SvdItem.getGunInstance()); output.accept(SvdItem.getGunInstance());
output.accept(HuntingRifle.getGunInstance()); output.accept(HuntingRifle.getGunInstance());
output.accept(M98bItem.getGunInstance()); output.accept(M98bItem.getGunInstance());

View file

@ -50,7 +50,7 @@ public class Glock18Item extends GunItem implements GeoItem, AnimatedItem {
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
public Glock18Item() { public Glock18Item() {
super(new Properties().stacksTo(1).rarity(Rarity.COMMON)); super(new Properties().stacksTo(1).rarity(Rarity.RARE));
} }
@Override @Override

View file

@ -0,0 +1,204 @@
package net.mcreator.superbwarfare.item.gun;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.client.renderer.item.K98ItemRenderer;
import net.mcreator.superbwarfare.init.ModItems;
import net.mcreator.superbwarfare.init.ModSounds;
import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.item.AnimatedItem;
import net.mcreator.superbwarfare.tools.GunsTool;
import net.mcreator.superbwarfare.tools.TooltipTool;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.EquipmentSlot;
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.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.core.animation.AnimatableManager;
import software.bernie.geckolib.core.animation.AnimationController;
import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.core.animation.RawAnimation;
import software.bernie.geckolib.core.object.PlayState;
import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.function.Consumer;
public class K98Item extends GunItem implements GeoItem, AnimatedItem {
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public String animationProcedure = "empty";
public static ItemDisplayContext transformType;
public K98Item() {
super(new Properties().stacksTo(1).rarity(Rarity.RARE));
}
@Override
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
super.initializeClient(consumer);
consumer.accept(new IClientItemExtensions() {
private final BlockEntityWithoutLevelRenderer renderer = new K98ItemRenderer();
@Override
public BlockEntityWithoutLevelRenderer getCustomRenderer() {
return renderer;
}
@Override
public HumanoidModel.ArmPose getArmPose(LivingEntity entityLiving, InteractionHand hand, ItemStack itemStack) {
return HumanoidModel.ArmPose.BOW_AND_ARROW;
}
});
}
public void getTransformType(ItemDisplayContext type) {
transformType = type;
}
private PlayState fireAnimPredicate(AnimationState event) {
LocalPlayer player = Minecraft.getInstance().player;
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
if (this.animationProcedure.equals("empty")) {
if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.k98.shift"));
}
if (stack.getOrCreateTag().getInt("fire_animation") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.k98.fire"));
}
if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.k98.reload_empty"));
}
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k98.idle"));
}
return PlayState.STOP;
}
private PlayState idlePredicate(AnimationState<K98Item> event) {
LocalPlayer player = Minecraft.getInstance().player;
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
if (this.animationProcedure.equals("empty")) {
if (stack.getOrCreateTag().getInt("draw_time") < 16) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k98.draw"));
}
if (player.isSprinting() && player.onGround()
&& player.getPersistentData().getDouble("noRun") == 0
&& !(stack.getOrCreateTag().getBoolean("is_empty_reloading"))) {
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k98.run_fast"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k98.run"));
}
}
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k98.idle"));
}
return PlayState.STOP;
}
private PlayState procedurePredicate(AnimationState<K98Item> event) {
if (transformType != null && transformType.firstPerson()) {
if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure));
if (event.getController().getAnimationState() == AnimationController.State.STOPPED) {
this.animationProcedure = "empty";
event.getController().forceAnimationReset();
}
} else if (this.animationProcedure.equals("empty")) {
return PlayState.STOP;
}
}
return PlayState.CONTINUE;
}
@Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
var fireAnimController = new AnimationController<>(this, "fireAnimController", 1, this::fireAnimPredicate);
data.add(fireAnimController);
var idleController = new AnimationController<>(this, "idleController", 4, this::idlePredicate);
data.add(idleController);
}
@Override
public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.cache;
}
@Override
public void appendHoverText(ItemStack stack, Level world, List<Component> list, TooltipFlag flag) {
TooltipTool.addGunTips(list, stack);
}
@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.MOVEMENT_SPEED,
new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER, -0.05f, AttributeModifier.Operation.MULTIPLY_BASE));
}
return map;
}
@Override
public Set<SoundEvent> getReloadSound() {
return Set.of(
ModSounds.K_98_RELOAD_EMPTY.get(),
ModSounds.K_98_BOLT.get()
);
}
public static ItemStack getGunInstance() {
ItemStack stack = new ItemStack(ModItems.K_98.get());
GunsTool.initCreativeGun(stack, ModItems.K_98.getId().getPath());
return stack;
}
@Override
public void setAnimationProcedure(String procedure) {
this.animationProcedure = procedure;
}
@Override
public ResourceLocation getGunIcon() {
return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/k98_icon.png");
}
@Override
public String getGunDisplayName() {
return " KAR-98K";
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -42,6 +42,7 @@
"item.superbwarfare.glock_18": "GLOCK-18", "item.superbwarfare.glock_18": "GLOCK-18",
"item.superbwarfare.m_1911": "M1911A1", "item.superbwarfare.m_1911": "M1911A1",
"item.superbwarfare.qbz_95": "QBZ-95-1", "item.superbwarfare.qbz_95": "QBZ-95-1",
"item.superbwarfare.k_98": "KAR-98K",
"des.superbwarfare.tips.damage": "Damage: ", "des.superbwarfare.tips.damage": "Damage: ",
"des.superbwarfare.tips.level": "Level: ", "des.superbwarfare.tips.level": "Level: ",
@ -75,6 +76,7 @@
"item.superbwarfare.glock_18_blueprint": "GLOCK-18 Blueprint", "item.superbwarfare.glock_18_blueprint": "GLOCK-18 Blueprint",
"item.superbwarfare.m_1911_blueprint": "M1911 Blueprint", "item.superbwarfare.m_1911_blueprint": "M1911 Blueprint",
"item.superbwarfare.qbz_95_blueprint": "QBZ-95-1 Blueprint", "item.superbwarfare.qbz_95_blueprint": "QBZ-95-1 Blueprint",
"item.superbwarfare.k_98_blueprint": "KAR-98K Blueprint",
"item.superbwarfare.common_material_pack": "Common Material Pack", "item.superbwarfare.common_material_pack": "Common Material Pack",
"item.superbwarfare.rare_material_pack": "Rare Material Pack", "item.superbwarfare.rare_material_pack": "Rare Material Pack",

View file

@ -42,6 +42,7 @@
"item.superbwarfare.glock_18": "格洛克18手枪", "item.superbwarfare.glock_18": "格洛克18手枪",
"item.superbwarfare.m_1911": "M1911手枪", "item.superbwarfare.m_1911": "M1911手枪",
"item.superbwarfare.qbz_95": "95-1式自动步枪", "item.superbwarfare.qbz_95": "95-1式自动步枪",
"item.superbwarfare.k_98": "KAR-98K",
"des.superbwarfare.tips.damage": "伤害: ", "des.superbwarfare.tips.damage": "伤害: ",
"des.superbwarfare.tips.level": "等级: ", "des.superbwarfare.tips.level": "等级: ",
@ -75,6 +76,7 @@
"item.superbwarfare.glock_18_blueprint": "格洛克18手枪蓝图", "item.superbwarfare.glock_18_blueprint": "格洛克18手枪蓝图",
"item.superbwarfare.m_1911_blueprint": "M1911手枪蓝图", "item.superbwarfare.m_1911_blueprint": "M1911手枪蓝图",
"item.superbwarfare.qbz_95_blueprint": "95-1式自动步枪蓝图", "item.superbwarfare.qbz_95_blueprint": "95-1式自动步枪蓝图",
"item.superbwarfare.k_98_blueprint": "KAR-98K蓝图",
"item.superbwarfare.common_material_pack": "普通材料包", "item.superbwarfare.common_material_pack": "普通材料包",
"item.superbwarfare.rare_material_pack": "稀有材料包", "item.superbwarfare.rare_material_pack": "稀有材料包",

View file

@ -0,0 +1,47 @@
{
"credit": "Made with Blockbench",
"parent": "builtin/entity",
"texture_size": [
256,
256
],
"gui_light": "front",
"display": {
"firstperson_righthand": {
"translation": [
-6.75,
3,
3.5
],
"scale": [
1.05,
1.05,
1.05
]
},
"firstperson_lefthand": {
"scale": [
0,
0,
0
]
},
"gui": {
"rotation": [
165.69,
-39.63,
178.66
],
"translation": [
-1.9,
-3.25,
0
],
"scale": [
0.18,
0.18,
0.18
]
}
}
}

View file

@ -0,0 +1,260 @@
{
"credit": "Made with Blockbench",
"texture_size": [64, 64],
"textures": {
"0": "superbwarfare:item/hunting_rifle3d",
"particle": "superbwarfare:item/hunting_rifle3d"
},
"elements": [
{
"from": [7.5, 7, 15.7],
"to": [8.5, 7.4, 17.15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5.5, 5, 5.75, 5.25], "texture": "#0"},
"east": {"uv": [1, 1, 8.75, 1.25], "texture": "#0"},
"south": {"uv": [5.5, 5.25, 5.75, 5.5], "texture": "#0"},
"west": {"uv": [1, 1.25, 8.75, 1.5], "texture": "#0"},
"up": {"uv": [1.25, 9.25, 1, 1.5], "texture": "#0"},
"down": {"uv": [1.5, 1.5, 1.25, 9.25], "texture": "#0"}
}
},
{
"from": [7.7, 6.4, -12],
"to": [8.3, 7, 18.75],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5.5, 5, 5.75, 5.25], "texture": "#0"},
"east": {"uv": [1, 1, 8.75, 1.25], "texture": "#0"},
"south": {"uv": [5.5, 5.25, 5.75, 5.5], "texture": "#0"},
"west": {"uv": [1, 1.25, 8.75, 1.5], "texture": "#0"},
"up": {"uv": [1.25, 9.25, 1, 1.5], "texture": "#0"},
"down": {"uv": [1.5, 1.5, 1.25, 9.25], "texture": "#0"}
}
},
{
"from": [7.7, 7, -11.9],
"to": [8.3, 7.5, -11.35],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5.5, 5, 5.75, 5.25], "texture": "#0"},
"east": {"uv": [1, 1, 8.75, 1.25], "texture": "#0"},
"south": {"uv": [5.5, 5.25, 5.75, 5.5], "texture": "#0"},
"west": {"uv": [1, 1.25, 8.75, 1.5], "texture": "#0"},
"up": {"uv": [1.25, 9.25, 1, 1.5], "texture": "#0"},
"down": {"uv": [1.5, 1.5, 1.25, 9.25], "texture": "#0"}
}
},
{
"from": [7.35, 5.3, -4.8],
"to": [8.65, 7.1, -4.05],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5.5, 5, 5.75, 5.25], "texture": "#0"},
"east": {"uv": [1, 1, 8.75, 1.25], "texture": "#0"},
"south": {"uv": [5.5, 5.25, 5.75, 5.5], "texture": "#0"},
"west": {"uv": [1, 1.25, 8.75, 1.5], "texture": "#0"},
"up": {"uv": [1.25, 9.25, 1, 1.5], "texture": "#0"},
"down": {"uv": [1.5, 1.5, 1.25, 9.25], "texture": "#0"}
}
},
{
"from": [7.35, 5.3, -3.5],
"to": [8.65, 7.1, -2.85],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5.5, 5, 5.75, 5.25], "texture": "#0"},
"east": {"uv": [1, 1, 8.75, 1.25], "texture": "#0"},
"south": {"uv": [5.5, 5.25, 5.75, 5.5], "texture": "#0"},
"west": {"uv": [1, 1.25, 8.75, 1.5], "texture": "#0"},
"up": {"uv": [1.25, 9.25, 1, 1.5], "texture": "#0"},
"down": {"uv": [1.5, 1.5, 1.25, 9.25], "texture": "#0"}
}
},
{
"from": [7.25, 5.3, 1.65],
"to": [8.75, 7.2, 2.7],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5.5, 5, 5.75, 5.25], "texture": "#0"},
"east": {"uv": [1, 1, 8.75, 1.25], "texture": "#0"},
"south": {"uv": [5.5, 5.25, 5.75, 5.5], "texture": "#0"},
"west": {"uv": [1, 1.25, 8.75, 1.5], "texture": "#0"},
"up": {"uv": [1.25, 9.25, 1, 1.5], "texture": "#0"},
"down": {"uv": [1.5, 1.5, 1.25, 9.25], "texture": "#0"}
}
},
{
"from": [7.5, 7, 7.7],
"to": [8.5, 7.3, 11.75],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5.5, 5, 5.75, 5.25], "texture": "#0"},
"east": {"uv": [1, 1, 8.75, 1.25], "texture": "#0"},
"south": {"uv": [5.5, 5.25, 5.75, 5.5], "texture": "#0"},
"west": {"uv": [1, 1.25, 8.75, 1.5], "texture": "#0"},
"up": {"uv": [1.25, 9.25, 1, 1.5], "texture": "#0"},
"down": {"uv": [1.5, 1.5, 1.25, 9.25], "texture": "#0"}
}
},
{
"from": [8.3, 6.8, 17.15],
"to": [9.1, 7.2, 17.55],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, -3.6]},
"faces": {
"north": {"uv": [5.5, 5.5, 5.75, 5.75], "texture": "#0"},
"east": {"uv": [5.75, 3.5, 6, 3.75], "texture": "#0"},
"south": {"uv": [5.75, 3.75, 6, 4], "texture": "#0"},
"west": {"uv": [5.75, 5, 6, 5.25], "texture": "#0"},
"up": {"uv": [6, 5.5, 5.75, 5.25], "texture": "#0"},
"down": {"uv": [5.75, 5.75, 5.5, 6], "texture": "#0"}
}
},
{
"from": [8.8683, 5.75391, 17.15],
"to": [9.2683, 7.15391, 17.55],
"rotation": {"angle": 22.5, "axis": "z", "origin": [9.0683, 6.75391, 17.35]},
"faces": {
"north": {"uv": [5.5, 5.5, 5.75, 5.75], "rotation": 270, "texture": "#0"},
"east": {"uv": [6, 5.5, 5.75, 5.25], "rotation": 90, "texture": "#0"},
"south": {"uv": [5.75, 3.75, 6, 4], "rotation": 90, "texture": "#0"},
"west": {"uv": [5.75, 5.75, 5.5, 6], "rotation": 90, "texture": "#0"},
"up": {"uv": [5.75, 5, 6, 5.25], "rotation": 90, "texture": "#0"},
"down": {"uv": [5.75, 3.5, 6, 3.75], "rotation": 90, "texture": "#0"}
}
},
{
"from": [7.7, 7, 11.75],
"to": [8.3, 7.2, 18.35],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 4]},
"faces": {
"north": {"uv": [5.75, 5.5, 6, 5.75], "texture": "#0"},
"east": {"uv": [5.75, 5.75, 6, 6], "texture": "#0"},
"south": {"uv": [0, 6, 0.25, 6.25], "texture": "#0"},
"west": {"uv": [0.25, 6, 0.5, 6.25], "texture": "#0"},
"up": {"uv": [0.75, 6.25, 0.5, 6], "texture": "#0"},
"down": {"uv": [6.25, 0.5, 6, 0.75], "texture": "#0"}
}
},
{
"from": [7.25, 5.05, 9],
"to": [8.75, 6.75, 19],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5, 0.5, 5.5, 1], "texture": "#0"},
"east": {"uv": [0, 0, 4, 0.5], "texture": "#0"},
"south": {"uv": [5, 5, 5.5, 5.5], "texture": "#0"},
"west": {"uv": [0, 0.5, 4, 1], "texture": "#0"},
"up": {"uv": [0.5, 5, 0, 1], "texture": "#0"},
"down": {"uv": [1, 1, 0.5, 5], "texture": "#0"}
}
},
{
"from": [7.45, 5.35, -4.9],
"to": [8.55, 6.75, 9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5, 0.5, 5.5, 1], "texture": "#0"},
"east": {"uv": [0, 0, 4, 0.5], "texture": "#0"},
"south": {"uv": [5, 5, 5.5, 5.5], "texture": "#0"},
"west": {"uv": [0, 0.5, 4, 1], "texture": "#0"},
"up": {"uv": [0.5, 5, 0, 1], "texture": "#0"},
"down": {"uv": [1, 1, 0.5, 5], "texture": "#0"}
}
},
{
"from": [7.45, 6.75, 0.7],
"to": [8.55, 7.05, 7.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 0.5]},
"faces": {
"north": {"uv": [5, 0.5, 5.5, 1], "texture": "#0"},
"east": {"uv": [0, 0, 4, 0.5], "texture": "#0"},
"south": {"uv": [5, 5, 5.5, 5.5], "texture": "#0"},
"west": {"uv": [0, 0.5, 4, 1], "texture": "#0"},
"up": {"uv": [0.5, 5, 0, 1], "texture": "#0"},
"down": {"uv": [1, 1, 0.5, 5], "texture": "#0"}
}
},
{
"from": [7.25, 0.48603, 17.41424],
"to": [8.75, 2.28603, 29.91424],
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 1.28603, 29.57807]},
"faces": {
"north": {"uv": [5.5, 0.5, 6, 1], "texture": "#0"},
"east": {"uv": [1.5, 1.5, 4.5, 2], "texture": "#0"},
"south": {"uv": [1.5, 5.5, 2, 6], "texture": "#0"},
"west": {"uv": [1.5, 2, 4.5, 2.5], "texture": "#0"},
"up": {"uv": [2, 5.5, 1.5, 2.5], "texture": "#0"},
"down": {"uv": [2.5, 2.5, 2, 5.5], "texture": "#0"}
}
},
{
"from": [7.25, 3.68658, 21.6194],
"to": [8.75, 5.58658, 30.3694],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 3.83658, 35.48323]},
"faces": {
"north": {"uv": [5.5, 1.5, 6, 2], "texture": "#0"},
"east": {"uv": [3.5, 3.5, 5.75, 4], "texture": "#0"},
"south": {"uv": [2, 5.5, 2.5, 6], "texture": "#0"},
"west": {"uv": [4, 0, 6.25, 0.5], "texture": "#0"},
"up": {"uv": [4, 6.25, 3.5, 4], "texture": "#0"},
"down": {"uv": [4.5, 4, 4, 6.25], "texture": "#0"}
}
},
{
"from": [7.25, 1.88658, 26.1194],
"to": [8.75, 5.58658, 30.3694],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 3.83658, 35.48323]},
"faces": {
"north": {"uv": [0, 5, 0.5, 6], "texture": "#0"},
"east": {"uv": [4.5, 1.5, 5.5, 2.5], "texture": "#0"},
"south": {"uv": [0.5, 5, 1, 6], "texture": "#0"},
"west": {"uv": [4.5, 4, 5.5, 5], "texture": "#0"},
"up": {"uv": [5.5, 3.5, 5, 2.5], "texture": "#0"},
"down": {"uv": [5, 5, 4.5, 6], "texture": "#0"}
}
},
{
"from": [7.25, 0.36705, 29.34206],
"to": [8.75, 1.88658, 30.3694],
"rotation": {"angle": 0, "axis": "x", "origin": [8, 3.93658, 35.48323]},
"faces": {
"north": {"uv": [5.5, 2, 6, 2.5], "texture": "#0"},
"east": {"uv": [5.5, 2.5, 6, 3], "texture": "#0"},
"south": {"uv": [5.5, 3, 6, 3.5], "texture": "#0"},
"west": {"uv": [5.5, 4, 6, 4.5], "texture": "#0"},
"up": {"uv": [6, 5, 5.5, 4.5], "texture": "#0"},
"down": {"uv": [5.5, 5.5, 5, 6], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [-1.5, 2, -4.75],
"scale": [0.7, 0.7, 0.7]
},
"thirdperson_lefthand": {
"translation": [-1.5, 2, -4.75],
"scale": [0.7, 0.7, 0.7]
},
"ground": {
"translation": [0, 1.5, 0],
"scale": [0.5, 0.5, 0.5]
},
"head": {
"translation": [0, 9.75, -4.25]
},
"fixed": {
"rotation": [0, -90, 0],
"translation": [3.5, 2.25, 0]
}
},
"groups": [
{
"name": "group",
"origin": [8, 3.83658, 35.48323],
"color": 0,
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
}
]
}

View file

@ -0,0 +1,6 @@
{
"parent": "superbwarfare:displaysettings/k98.item",
"textures": {
"layer0": "superbwarfare:item/k98"
}
}

View file

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

View file

@ -0,0 +1,27 @@
{
"loader": "forge:separate_transforms",
"gui_light": "front",
"base": {
"parent": "superbwarfare:item/k98_base"
},
"perspectives": {
"gui": {
"parent": "superbwarfare:item/k98_icon"
},
"thirdperson_righthand": {
"parent": "superbwarfare:item/k98_3d"
},
"thirdperson_lefthand": {
"parent": "superbwarfare:item/98_3d"
},
"ground": {
"parent": "superbwarfare:item/98_3d"
},
"fixed": {
"parent": "superbwarfare:item/98_3d"
},
"head": {
"parent": "superbwarfare:item/98_3d"
}
}
}

View file

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

View file

@ -1362,6 +1362,55 @@
] ]
}, },
"k_98_fire_1p": {
"sounds": [
{
"name": "superbwarfare:k_98/k_98_fire_1p",
"stream": false
}
]
},
"k_98_fire_3p": {
"sounds": [
{
"name": "superbwarfare:k_98/k_98_fire_3p",
"stream": false
}
]
},
"k_98_far": {
"sounds": [
{
"name": "superbwarfare:k_98/k_98_far",
"stream": false
}
]
},
"k_98_veryfar": {
"sounds": [
{
"name": "superbwarfare:k_98/k_98_veryfar",
"stream": false
}
]
},
"k_98_reload_empty": {
"sounds": [
{
"name": "superbwarfare:k_98/k_98_reload_empty",
"stream": false
}
]
},
"k_98_bolt": {
"sounds": [
{
"name": "superbwarfare:k_98/k_98_bolt",
"stream": false
}
]
},
"lightsaber": { "lightsaber": {
"sounds": [ "sounds": [
{ {

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -0,0 +1,23 @@
{
"zoom_speed": 1.05,
"zoom": 1.25,
"spread": 5,
"zoomSpread": 0.001,
"recoil_x": 0.007,
"recoil_y": 0.013,
"damage": 35,
"headshot": 3,
"velocity": 37.75,
"projectile_amount": 1,
"mag": 5,
"fire_interval": 2,
"bolt_action_time": 22,
"weight": 1,
"fire_mode": 0,
"semi": 1,
"burst": 0,
"auto": 0,
"burst_size": 1,
"empty_reload_time": 59,
"BypassesArmor": 0.5
}

View file

@ -49,7 +49,7 @@
{ {
"type": "minecraft:item", "type": "minecraft:item",
"name": "superbwarfare:glock_18_blueprint", "name": "superbwarfare:glock_18_blueprint",
"weight": 39, "weight": 15,
"functions": [ "functions": [
{ {
"function": "set_count", "function": "set_count",

View file

@ -35,7 +35,7 @@
{ {
"type": "minecraft:item", "type": "minecraft:item",
"name": "superbwarfare:glock_18_blueprint", "name": "superbwarfare:glock_18_blueprint",
"weight": 11, "weight": 15,
"functions": [ "functions": [
{ {
"function": "set_count", "function": "set_count",

View file

@ -0,0 +1,24 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"pattern": [
"aba",
"aca",
"aaa"
],
"key": {
"a": {
"item": "minecraft:diamond"
},
"b": {
"item": "superbwarfare:k_98_blueprint"
},
"c": {
"item": "minecraft:lapis_lazuli"
}
},
"result": {
"item": "superbwarfare:k_98_blueprint",
"count": 2
}
}

View file

@ -0,0 +1,15 @@
{
"type": "minecraft:smithing_transform",
"template": {
"item": "superbwarfare:k_98_blueprint"
},
"base": {
"item": "superbwarfare:rare_material_pack"
},
"addition": {
"tag": "minecraft:logs"
},
"result": {
"item": "superbwarfare:k_98"
}
}

View file

@ -25,6 +25,7 @@
"superbwarfare:glock_17", "superbwarfare:glock_17",
"superbwarfare:glock_18", "superbwarfare:glock_18",
"superbwarfare:m_1911", "superbwarfare:m_1911",
"superbwarfare:qbz_95" "superbwarfare:qbz_95",
"superbwarfare:k_98"
] ]
} }

View file

@ -24,6 +24,7 @@
"superbwarfare:glock_17", "superbwarfare:glock_17",
"superbwarfare:glock_18", "superbwarfare:glock_18",
"superbwarfare:m_1911", "superbwarfare:m_1911",
"superbwarfare:qbz_95" "superbwarfare:qbz_95",
"superbwarfare:k_98"
] ]
} }

View file

@ -28,6 +28,7 @@
"superbwarfare:glock_17", "superbwarfare:glock_17",
"superbwarfare:glock_18", "superbwarfare:glock_18",
"superbwarfare:m_1911", "superbwarfare:m_1911",
"superbwarfare:qbz_95" "superbwarfare:qbz_95",
"superbwarfare:k_98"
] ]
} }

View file

@ -23,6 +23,7 @@
"superbwarfare:glock_17", "superbwarfare:glock_17",
"superbwarfare:glock_18", "superbwarfare:glock_18",
"superbwarfare:m_1911", "superbwarfare:m_1911",
"superbwarfare:qbz_95" "superbwarfare:qbz_95",
"superbwarfare:k_98"
] ]
} }

View file

@ -5,6 +5,7 @@
"superbwarfare:ntw_20", "superbwarfare:ntw_20",
"superbwarfare:sentinel", "superbwarfare:sentinel",
"superbwarfare:svd", "superbwarfare:svd",
"superbwarfare:m_98b" "superbwarfare:m_98b",
"superbwarfare:k_98"
] ]
} }

View file

@ -5,6 +5,7 @@
"superbwarfare:ntw_20", "superbwarfare:ntw_20",
"superbwarfare:sentinel", "superbwarfare:sentinel",
"superbwarfare:svd", "superbwarfare:svd",
"superbwarfare:m_98b" "superbwarfare:m_98b",
"superbwarfare:k_98"
] ]
} }