回滚customClientFactory

This commit is contained in:
17146 2024-05-29 02:12:45 +08:00
parent 083f6bcdf2
commit 2515eff9b6
28 changed files with 127 additions and 99 deletions

View file

@ -27,6 +27,7 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.network.PlayMessages;
import java.util.Optional; import java.util.Optional;
@ -46,6 +47,10 @@ public class BocekArrowEntity extends AbstractArrow implements ItemSupplier {
super(TargetModEntities.BOCEK_ARROW.get(), entity, level); super(TargetModEntities.BOCEK_ARROW.get(), entity, level);
} }
public BocekArrowEntity(PlayMessages.SpawnEntity packet, Level world) {
super(TargetModEntities.BOCEK_ARROW.get(), world);
}
@Override @Override
public Packet<ClientGamePacketListener> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);

View file

@ -27,6 +27,7 @@ import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.network.PlayMessages;
import java.util.Optional; import java.util.Optional;
@ -46,6 +47,10 @@ public class GunGrenadeEntity extends ThrowableItemProjectile {
this.damage = damage; this.damage = damage;
} }
public GunGrenadeEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
this(TargetModEntities.GUN_GRENADE.get(), level);
}
@Override @Override
public Packet<ClientGamePacketListener> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);

View file

@ -1,5 +1,6 @@
package net.mcreator.target.entity; package net.mcreator.target.entity;
import net.mcreator.target.init.TargetModEntities;
import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.tools.ParticleTool; import net.mcreator.target.tools.ParticleTool;
import net.minecraft.core.particles.ParticleTypes; import net.minecraft.core.particles.ParticleTypes;
@ -15,6 +16,7 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.EntityHitResult;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PlayMessages;
public class MortarShellEntity extends ThrowableItemProjectile { public class MortarShellEntity extends ThrowableItemProjectile {
private float damage = 100f; private float damage = 100f;
@ -36,6 +38,10 @@ public class MortarShellEntity extends ThrowableItemProjectile {
this.damage = damage; this.damage = damage;
} }
public MortarShellEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
this(TargetModEntities.MORTAR_SHELL.get(), level);
}
@Override @Override
public Packet<ClientGamePacketListener> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);

View file

@ -38,6 +38,7 @@ import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.entity.IEntityAdditionalSpawnData; import net.minecraftforge.entity.IEntityAdditionalSpawnData;
import net.minecraftforge.entity.PartEntity; import net.minecraftforge.entity.PartEntity;
import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.network.PlayMessages;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
@ -65,6 +66,10 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa
super(TargetModEntities.PROJECTILE.get(), level); super(TargetModEntities.PROJECTILE.get(), level);
} }
public ProjectileEntity(PlayMessages.SpawnEntity packet, Level world) {
super(TargetModEntities.PROJECTILE.get(), world);
}
public ProjectileEntity shooter(LivingEntity shooter) { public ProjectileEntity shooter(LivingEntity shooter) {
this.shooter = shooter; this.shooter = shooter;
return this; return this;

View file

@ -27,6 +27,7 @@ import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.network.PlayMessages;
import java.util.Optional; import java.util.Optional;
@ -46,6 +47,10 @@ public class RpgRocketEntity extends ThrowableItemProjectile {
this.damage = damage; this.damage = damage;
} }
public RpgRocketEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
this(TargetModEntities.RPG_ROCKET.get(), level);
}
@Override @Override
public Packet<ClientGamePacketListener> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);

View file

@ -23,6 +23,7 @@ import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.network.PlayMessages;
import java.util.Optional; import java.util.Optional;
@ -42,6 +43,10 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile {
this.damage = damage; this.damage = damage;
} }
public TaserBulletProjectileEntity(PlayMessages.SpawnEntity packet, Level level) {
this(TargetModEntities.TASER_BULLET_PROJECTILE.get(), level);
}
@Override @Override
public Packet<ClientGamePacketListener> getAddEntityPacket() { public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this); return NetworkHooks.getEntitySpawningPacket(this);

View file

@ -27,20 +27,20 @@ public class TargetModEntities {
public static final RegistryObject<EntityType<ClaymoreEntity>> CLAYMORE = register("claymore", public static final RegistryObject<EntityType<ClaymoreEntity>> CLAYMORE = register("claymore",
EntityType.Builder.<ClaymoreEntity>of(ClaymoreEntity::new, MobCategory.CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(ClaymoreEntity::new).fireImmune().sized(0.5f, 0.5f)); EntityType.Builder.<ClaymoreEntity>of(ClaymoreEntity::new, MobCategory.CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(ClaymoreEntity::new).fireImmune().sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<TaserBulletProjectileEntity>> TASER_BULLET_PROJECTILE = register("projectile_taser_bullet_projectile", public static final RegistryObject<EntityType<TaserBulletProjectileEntity>> TASER_BULLET_PROJECTILE = register("projectile_taser_bullet_projectile",
EntityType.Builder.<TaserBulletProjectileEntity>of(TaserBulletProjectileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64) EntityType.Builder.<TaserBulletProjectileEntity>of(TaserBulletProjectileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setCustomClientFactory(TaserBulletProjectileEntity::new)
.setUpdateInterval(1).sized(0.5f, 0.5f)); .setUpdateInterval(1).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<GunGrenadeEntity>> GUN_GRENADE = register("projectile_gun_grenade", public static final RegistryObject<EntityType<GunGrenadeEntity>> GUN_GRENADE = register("projectile_gun_grenade",
EntityType.Builder.<GunGrenadeEntity>of(GunGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); EntityType.Builder.<GunGrenadeEntity>of(GunGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(GunGrenadeEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<TargetEntity>> TARGET = register("target", public static final RegistryObject<EntityType<TargetEntity>> TARGET = register("target",
EntityType.Builder.<TargetEntity>of(TargetEntity::new, MobCategory.CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(TargetEntity::new).fireImmune().sized(0.875f, 2f)); EntityType.Builder.<TargetEntity>of(TargetEntity::new, MobCategory.CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(TargetEntity::new).fireImmune().sized(0.875f, 2f));
public static final RegistryObject<EntityType<RpgRocketEntity>> RPG_ROCKET = register("projectile_rpg_rocket", public static final RegistryObject<EntityType<RpgRocketEntity>> RPG_ROCKET = register("projectile_rpg_rocket",
EntityType.Builder.<RpgRocketEntity>of(RpgRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); EntityType.Builder.<RpgRocketEntity>of(RpgRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(RpgRocketEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<MortarShellEntity>> MORTAR_SHELL = register("projectile_mortar_shell", public static final RegistryObject<EntityType<MortarShellEntity>> MORTAR_SHELL = register("projectile_mortar_shell",
EntityType.Builder.<MortarShellEntity>of(MortarShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); EntityType.Builder.<MortarShellEntity>of(MortarShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(MortarShellEntity::new).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<BocekArrowEntity>> BOCEK_ARROW = register("projectile_bocekarrow", public static final RegistryObject<EntityType<BocekArrowEntity>> BOCEK_ARROW = register("projectile_bocekarrow",
EntityType.Builder.<BocekArrowEntity>of(BocekArrowEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); EntityType.Builder.<BocekArrowEntity>of(BocekArrowEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setCustomClientFactory(BocekArrowEntity::new).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f));
public static final RegistryObject<EntityType<ProjectileEntity>> PROJECTILE = register("projectile", public static final RegistryObject<EntityType<ProjectileEntity>> PROJECTILE = register("projectile",
EntityType.Builder.<ProjectileEntity>of(ProjectileEntity::new, MobCategory.MISC).setTrackingRange(512).sized(0.5f, 0.5f)); EntityType.Builder.<ProjectileEntity>of(ProjectileEntity::new, MobCategory.MISC).setCustomClientFactory(ProjectileEntity::new).setTrackingRange(512).sized(0.5f, 0.5f));
private static <T extends Entity> RegistryObject<EntityType<T>> register(String registryname, EntityType.Builder<T> entityTypeBuilder) { private static <T extends Entity> RegistryObject<EntityType<T>> register(String registryname, EntityType.Builder<T> entityTypeBuilder) {

View file

@ -43,12 +43,11 @@ public class Hammer extends SwordItem {
@Override @Override
public ItemStack getCraftingRemainingItem(ItemStack itemstack) { public ItemStack getCraftingRemainingItem(ItemStack itemstack) {
ItemStack retval = new ItemStack(this); itemstack.setDamageValue(itemstack.getDamageValue() + 1);
retval.setDamageValue(itemstack.getDamageValue() + 1); if (itemstack.getDamageValue() >= itemstack.getMaxDamage()) {
if (retval.getDamageValue() >= retval.getMaxDamage()) {
return ItemStack.EMPTY; return ItemStack.EMPTY;
} }
return retval; return itemstack;
} }
@Override @Override

View file

@ -54,7 +54,7 @@ public class LightSaber extends SwordItem implements GeoItem, AnimatedItem {
transformType = type; transformType = type;
} }
private PlayState idlePredicate(AnimationState event) { private PlayState idlePredicate(AnimationState<LightSaber> event) {
if (transformType != null && transformType.firstPerson()) { if (transformType != null && transformType.firstPerson()) {
if (this.animationProcedure.equals("empty")) { if (this.animationProcedure.equals("empty")) {
event.getController().setAnimation(RawAnimation.begin().thenLoop("animation.lightsaber.idle")); event.getController().setAnimation(RawAnimation.begin().thenLoop("animation.lightsaber.idle"));
@ -64,7 +64,7 @@ public class LightSaber extends SwordItem implements GeoItem, AnimatedItem {
return PlayState.STOP; return PlayState.STOP;
} }
private PlayState procedurePredicate(AnimationState event) { private PlayState procedurePredicate(AnimationState<LightSaber> event) {
if (transformType != null && transformType.firstPerson()) { if (transformType != null && transformType.firstPerson()) {
if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) { if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure)); event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure));
@ -123,4 +123,9 @@ public class LightSaber extends SwordItem implements GeoItem, AnimatedItem {
public void setAnimationProcedure(String procedure) { public void setAnimationProcedure(String procedure) {
this.animationProcedure = procedure; this.animationProcedure = procedure;
} }
@Override
public boolean isDamageable(ItemStack stack) {
return false;
}
} }

View file

@ -200,7 +200,7 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE); GunsTool.reload(entity, GunInfo.Type.RIFLE);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 51) { if (tag.getDouble("reload_time") == 51) {
@ -220,7 +220,7 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE, true); GunsTool.reload(entity, GunInfo.Type.RIFLE, true);
} }
} }
} }

View file

@ -200,7 +200,7 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SHOTGUN); GunsTool.reload(entity, GunInfo.Type.SHOTGUN);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 44) { if (tag.getDouble("reload_time") == 44) {
@ -220,7 +220,7 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SHOTGUN, true); GunsTool.reload(entity, GunInfo.Type.SHOTGUN, true);
} }
} }
} }

View file

@ -191,7 +191,7 @@ public class Abekiri extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SHOTGUN); GunsTool.reload(entity, GunInfo.Type.SHOTGUN);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") == 1) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") == 1) {
if (tag.getDouble("reload_time") == 83) { if (tag.getDouble("reload_time") == 83) {
@ -211,7 +211,7 @@ public class Abekiri extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SHOTGUN); GunsTool.reload(entity, GunInfo.Type.SHOTGUN);
} }
} }
} }

View file

@ -188,7 +188,7 @@ public class Devotion extends GunItem implements GeoItem, AnimatedItem {
itemTag.putDouble("reload_time", 0); itemTag.putDouble("reload_time", 0);
} }
if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) { if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE); GunsTool.reload(entity, GunInfo.Type.RIFLE);
} }
} else if (itemTag.getBoolean("reloading") && itemTag.getInt("ammo") > 0) { } else if (itemTag.getBoolean("reloading") && itemTag.getInt("ammo") > 0) {
if (itemTag.getDouble("reload_time") == 70) { if (itemTag.getDouble("reload_time") == 70) {
@ -208,7 +208,7 @@ public class Devotion extends GunItem implements GeoItem, AnimatedItem {
itemTag.putDouble("reload_time", 0); itemTag.putDouble("reload_time", 0);
} }
if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) { if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE, true); GunsTool.reload(entity, GunInfo.Type.RIFLE, true);
} }
} }
} }

View file

@ -197,7 +197,7 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE); GunsTool.reload(entity, GunInfo.Type.RIFLE);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 53) { if (tag.getDouble("reload_time") == 53) {
@ -219,7 +219,7 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE, true); GunsTool.reload(entity, GunInfo.Type.RIFLE, true);
} }
} }
} }

View file

@ -189,7 +189,7 @@ public class HuntingRifle extends GunItem implements GeoItem, AnimatedItem {
itemTag.putDouble("reload_time", 0); itemTag.putDouble("reload_time", 0);
} }
if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) { if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SNIPER); GunsTool.reload(entity, GunInfo.Type.SNIPER);
} }
} }
} }

View file

@ -192,7 +192,7 @@ public class Kraber extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SNIPER); GunsTool.reload(entity, GunInfo.Type.SNIPER);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 65) { if (tag.getDouble("reload_time") == 65) {
@ -212,7 +212,7 @@ public class Kraber extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SNIPER, true); GunsTool.reload(entity, GunInfo.Type.SNIPER, true);
} }
} }
} }

View file

@ -196,7 +196,7 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE); GunsTool.reload(entity, GunInfo.Type.RIFLE);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 53) { if (tag.getDouble("reload_time") == 53) {
@ -216,7 +216,7 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE, true); GunsTool.reload(entity, GunInfo.Type.RIFLE, true);
} }
} }
} }

View file

@ -181,7 +181,7 @@ public class M60Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE); GunsTool.reload(entity, GunInfo.Type.RIFLE);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 111) { if (tag.getDouble("reload_time") == 111) {
@ -201,7 +201,7 @@ public class M60Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE); GunsTool.reload(entity, GunInfo.Type.RIFLE);
} }
} }
} }

View file

@ -192,7 +192,7 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SNIPER); GunsTool.reload(entity, GunInfo.Type.SNIPER);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 57) { if (tag.getDouble("reload_time") == 57) {
@ -212,7 +212,7 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SNIPER, true); GunsTool.reload(entity, GunInfo.Type.SNIPER, true);
} }
} }
} }

View file

@ -176,7 +176,7 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("gj", 0); tag.putDouble("gj", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE); GunsTool.reload(entity, GunInfo.Type.RIFLE);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 45) { if (tag.getDouble("reload_time") == 45) {
@ -196,7 +196,7 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE, true); GunsTool.reload(entity, GunInfo.Type.RIFLE, true);
} }
} }
} }

View file

@ -196,7 +196,7 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE); GunsTool.reload(entity, GunInfo.Type.RIFLE);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 66) { if (tag.getDouble("reload_time") == 66) {
@ -216,7 +216,7 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE, true); GunsTool.reload(entity, GunInfo.Type.RIFLE, true);
} }
} }
} }

View file

@ -201,7 +201,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SNIPER); GunsTool.reload(entity, GunInfo.Type.SNIPER);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 53) { if (tag.getDouble("reload_time") == 53) {
@ -221,7 +221,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SNIPER, true); GunsTool.reload(entity, GunInfo.Type.SNIPER, true);
} }
} }
if (tag.getDouble("firing") > 0) { if (tag.getDouble("firing") > 0) {

View file

@ -195,7 +195,7 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("gj", 0); tag.putDouble("gj", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE); GunsTool.reload(entity, GunInfo.Type.RIFLE);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 51) { if (tag.getDouble("reload_time") == 51) {
@ -215,7 +215,7 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.RIFLE, true); GunsTool.reload(entity, GunInfo.Type.RIFLE, true);
} }
} }
} }

View file

@ -169,7 +169,7 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("gj", 0); tag.putDouble("gj", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SNIPER); GunsTool.reload(entity, GunInfo.Type.SNIPER);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 55) { if (tag.getDouble("reload_time") == 55) {
@ -189,7 +189,7 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.SNIPER, true); GunsTool.reload(entity, GunInfo.Type.SNIPER, true);
} }
} }
} }

View file

@ -188,7 +188,7 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
itemTag.putDouble("reload_time", 0); itemTag.putDouble("reload_time", 0);
} }
if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) { if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.HANDGUN); GunsTool.reload(entity, GunInfo.Type.HANDGUN);
} }
} }
} }

View file

@ -6,10 +6,8 @@ import net.mcreator.target.TargetMod;
import net.mcreator.target.client.renderer.item.VectorItemRenderer; import net.mcreator.target.client.renderer.item.VectorItemRenderer;
import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.item.AnimatedItem; import net.mcreator.target.item.AnimatedItem;
import net.mcreator.target.tools.GunInfo; import net.mcreator.target.tools.GunInfo;
import net.mcreator.target.tools.GunReload;
import net.mcreator.target.tools.GunsTool; import net.mcreator.target.tools.GunsTool;
import net.mcreator.target.tools.TooltipTool; import net.mcreator.target.tools.TooltipTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -34,8 +32,6 @@ import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.item.*; import net.minecraft.world.item.*;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.GeoItem;
@ -228,7 +224,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.HANDGUN); GunsTool.reload(entity, GunInfo.Type.HANDGUN);
} }
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
if (tag.getDouble("reload_time") == 47) { if (tag.getDouble("reload_time") == 47) {
@ -249,7 +245,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) {
GunReload.reload(entity, GunInfo.Type.HANDGUN, true); GunsTool.reload(entity, GunInfo.Type.HANDGUN, true);
} }
} }
} }

View file

@ -1,51 +0,0 @@
package net.mcreator.target.tools;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
public class GunReload {
public static void reload(Entity entity, GunInfo.Type type) {
reload(entity, type, false);
}
public static void reload(Entity entity, GunInfo.Type type, boolean extraOne) {
if (!(entity instanceof LivingEntity living)) return;
CompoundTag tag = living.getMainHandItem().getOrCreateTag();
int mag = tag.getInt("mag");
int ammo = tag.getInt("ammo");
int ammoToAdd = mag - ammo + (extraOne ? 1 : 0);
/*
* 空仓换弹的栓动武器应该在换单后取消待上膛标记
*/
if (ammo == 0 && tag.getDouble("bolt_action_time") > 0) {
tag.putDouble("need_bolt_action", 0);
}
int playerAmmo = entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).map(c -> switch (type) {
case RIFLE -> c.rifleAmmo;
case HANDGUN -> c.handgunAmmo;
case SHOTGUN -> c.shotgunAmmo;
case SNIPER -> c.sniperAmmo;
}).orElse(0);
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
var newAmmoCount = Math.max(0, playerAmmo - ammoToAdd);
switch (type) {
case RIFLE -> capability.rifleAmmo = newAmmoCount;
case HANDGUN -> capability.handgunAmmo = newAmmoCount;
case SHOTGUN -> capability.shotgunAmmo = newAmmoCount;
case SNIPER -> capability.sniperAmmo = newAmmoCount;
}
capability.syncPlayerVariables(entity);
});
tag.putInt("ammo", ammo + Math.min(ammoToAdd, playerAmmo));
tag.putBoolean("reloading", false);
tag.putBoolean("empty_reload", false);
}
}

View file

@ -4,8 +4,11 @@ import com.google.gson.stream.JsonReader;
import net.mcreator.target.TargetMod; import net.mcreator.target.TargetMod;
import net.mcreator.target.network.TargetModVariables; import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.network.message.GunsDataMessage; import net.mcreator.target.network.message.GunsDataMessage;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerEvent;
@ -23,6 +26,9 @@ public class GunsTool {
public static HashMap<String, HashMap<String, Double>> gunsData = new HashMap<>(); public static HashMap<String, HashMap<String, Double>> gunsData = new HashMap<>();
/**
* 初始化数据从data中读取数据json文件
*/
public static void initJsonData(ResourceManager manager) { public static void initJsonData(ResourceManager manager) {
for (var entry : manager.listResources("guns", file -> file.getPath().endsWith(".json")).entrySet()) { for (var entry : manager.listResources("guns", file -> file.getPath().endsWith(".json")).entrySet()) {
var id = entry.getKey(); var id = entry.getKey();
@ -87,4 +93,46 @@ public class GunsTool {
initJsonData(event.getServer().getResourceManager()); initJsonData(event.getServer().getResourceManager());
} }
public static void reload(Entity entity, GunInfo.Type type) {
reload(entity, type, false);
}
public static void reload(Entity entity, GunInfo.Type type, boolean extraOne) {
if (!(entity instanceof LivingEntity living)) return;
CompoundTag tag = living.getMainHandItem().getOrCreateTag();
int mag = tag.getInt("mag");
int ammo = tag.getInt("ammo");
int ammoToAdd = mag - ammo + (extraOne ? 1 : 0);
/*
* 空仓换弹的栓动武器应该在换单后取消待上膛标记
*/
if (ammo == 0 && tag.getDouble("bolt_action_time") > 0) {
tag.putDouble("need_bolt_action", 0);
}
int playerAmmo = entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).map(c -> switch (type) {
case RIFLE -> c.rifleAmmo;
case HANDGUN -> c.handgunAmmo;
case SHOTGUN -> c.shotgunAmmo;
case SNIPER -> c.sniperAmmo;
}).orElse(0);
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
var newAmmoCount = Math.max(0, playerAmmo - ammoToAdd);
switch (type) {
case RIFLE -> capability.rifleAmmo = newAmmoCount;
case HANDGUN -> capability.handgunAmmo = newAmmoCount;
case SHOTGUN -> capability.shotgunAmmo = newAmmoCount;
case SNIPER -> capability.sniperAmmo = newAmmoCount;
}
capability.syncPlayerVariables(entity);
});
tag.putInt("ammo", ammo + Math.min(ammoToAdd, playerAmmo));
tag.putBoolean("reloading", false);
tag.putBoolean("empty_reload", false);
}
} }