加入了开关PVP模式的指令,试验一下弹速 * 3
This commit is contained in:
parent
7602d903d0
commit
730af151b0
4 changed files with 240 additions and 32 deletions
|
@ -0,0 +1,55 @@
|
||||||
|
|
||||||
|
package net.mcreator.target.command;
|
||||||
|
|
||||||
|
import org.checkerframework.checker.units.qual.s;
|
||||||
|
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.event.RegisterCommandsEvent;
|
||||||
|
import net.minecraftforge.common.util.FakePlayerFactory;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.commands.Commands;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.world.level.LevelAccessor;
|
||||||
|
|
||||||
|
import net.mcreator.target.network.TargetModVariables;
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber
|
||||||
|
public class PvPmodeCommand {
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void registerCommand(RegisterCommandsEvent event) {
|
||||||
|
event.getDispatcher().register(Commands.literal("target:pvpmode").requires(s -> s.hasPermission(4)).executes(arguments -> {
|
||||||
|
Level world = arguments.getSource().getUnsidedLevel();
|
||||||
|
double x = arguments.getSource().getPosition().x();
|
||||||
|
double y = arguments.getSource().getPosition().y();
|
||||||
|
double z = arguments.getSource().getPosition().z();
|
||||||
|
Entity entity = arguments.getSource().getEntity();
|
||||||
|
if (entity == null && world instanceof ServerLevel _servLevel)
|
||||||
|
entity = FakePlayerFactory.getMinecraft(_servLevel);
|
||||||
|
Direction direction = Direction.DOWN;
|
||||||
|
if (entity != null)
|
||||||
|
direction = entity.getDirection();
|
||||||
|
|
||||||
|
if (TargetModVariables.MapVariables.get(world).pvpmode == true) {
|
||||||
|
TargetModVariables.MapVariables.get(world).pvpmode = false;
|
||||||
|
TargetModVariables.MapVariables.get(world).syncData(world);
|
||||||
|
if (entity instanceof Player _player && !_player.level().isClientSide())
|
||||||
|
_player.displayClientMessage(Component.literal("PVPMODE:OFF"), false);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
TargetModVariables.MapVariables.get(world).pvpmode = true;
|
||||||
|
TargetModVariables.MapVariables.get(world).syncData(world);
|
||||||
|
if (entity instanceof Player _player && !_player.level().isClientSide())
|
||||||
|
_player.displayClientMessage(Component.literal("PVPMODE:ON"), false);
|
||||||
|
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,33 +1,45 @@
|
||||||
package net.mcreator.target.network;
|
package net.mcreator.target.network;
|
||||||
|
|
||||||
import net.mcreator.target.TargetMod;
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.core.Direction;
|
|
||||||
import net.minecraft.nbt.CompoundTag;
|
|
||||||
import net.minecraft.nbt.Tag;
|
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
|
||||||
import net.minecraft.world.entity.Entity;
|
|
||||||
import net.minecraft.world.entity.player.Player;
|
|
||||||
import net.minecraftforge.common.capabilities.*;
|
|
||||||
import net.minecraftforge.common.util.FakePlayer;
|
|
||||||
import net.minecraftforge.common.util.LazyOptional;
|
|
||||||
import net.minecraftforge.event.AttachCapabilitiesEvent;
|
|
||||||
import net.minecraftforge.event.entity.player.PlayerEvent;
|
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
||||||
import net.minecraftforge.fml.common.Mod;
|
|
||||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
|
||||||
import net.minecraftforge.network.NetworkEvent;
|
|
||||||
import net.minecraftforge.network.PacketDistributor;
|
import net.minecraftforge.network.PacketDistributor;
|
||||||
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.event.entity.player.PlayerEvent;
|
||||||
|
import net.minecraftforge.event.AttachCapabilitiesEvent;
|
||||||
|
import net.minecraftforge.common.util.LazyOptional;
|
||||||
|
import net.minecraftforge.common.util.FakePlayer;
|
||||||
|
import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent;
|
||||||
|
import net.minecraftforge.common.capabilities.ICapabilitySerializable;
|
||||||
|
import net.minecraftforge.common.capabilities.CapabilityToken;
|
||||||
|
import net.minecraftforge.common.capabilities.CapabilityManager;
|
||||||
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.saveddata.SavedData;
|
||||||
|
import net.minecraft.world.level.ServerLevelAccessor;
|
||||||
|
import net.minecraft.world.level.LevelAccessor;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
|
import net.minecraft.nbt.Tag;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
||||||
|
import net.mcreator.target.TargetMod;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
|
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||||
public class TargetModVariables {
|
public class TargetModVariables {
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void init(FMLCommonSetupEvent event) {
|
public static void init(FMLCommonSetupEvent event) {
|
||||||
|
TargetMod.addNetworkMessage(SavedDataSyncMessage.class, SavedDataSyncMessage::buffer, SavedDataSyncMessage::new, SavedDataSyncMessage::handler);
|
||||||
TargetMod.addNetworkMessage(PlayerVariablesSyncMessage.class, PlayerVariablesSyncMessage::buffer, PlayerVariablesSyncMessage::new, PlayerVariablesSyncMessage::handler);
|
TargetMod.addNetworkMessage(PlayerVariablesSyncMessage.class, PlayerVariablesSyncMessage::buffer, PlayerVariablesSyncMessage::new, PlayerVariablesSyncMessage::handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +54,7 @@ public class TargetModVariables {
|
||||||
public static void onPlayerLoggedInSyncPlayerVariables(PlayerEvent.PlayerLoggedInEvent event) {
|
public static void onPlayerLoggedInSyncPlayerVariables(PlayerEvent.PlayerLoggedInEvent event) {
|
||||||
if (!event.getEntity().level().isClientSide()) {
|
if (!event.getEntity().level().isClientSide()) {
|
||||||
for (Entity entityiterator : new ArrayList<>(event.getEntity().level().players())) {
|
for (Entity entityiterator : new ArrayList<>(event.getEntity().level().players())) {
|
||||||
entityiterator.getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables()).syncPlayerVariables(entityiterator);
|
((PlayerVariables) entityiterator.getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())).syncPlayerVariables(entityiterator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,7 +63,7 @@ public class TargetModVariables {
|
||||||
public static void onPlayerRespawnedSyncPlayerVariables(PlayerEvent.PlayerRespawnEvent event) {
|
public static void onPlayerRespawnedSyncPlayerVariables(PlayerEvent.PlayerRespawnEvent event) {
|
||||||
if (!event.getEntity().level().isClientSide()) {
|
if (!event.getEntity().level().isClientSide()) {
|
||||||
for (Entity entityiterator : new ArrayList<>(event.getEntity().level().players())) {
|
for (Entity entityiterator : new ArrayList<>(event.getEntity().level().players())) {
|
||||||
entityiterator.getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables()).syncPlayerVariables(entityiterator);
|
((PlayerVariables) entityiterator.getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())).syncPlayerVariables(entityiterator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +72,7 @@ public class TargetModVariables {
|
||||||
public static void onPlayerChangedDimensionSyncPlayerVariables(PlayerEvent.PlayerChangedDimensionEvent event) {
|
public static void onPlayerChangedDimensionSyncPlayerVariables(PlayerEvent.PlayerChangedDimensionEvent event) {
|
||||||
if (!event.getEntity().level().isClientSide()) {
|
if (!event.getEntity().level().isClientSide()) {
|
||||||
for (Entity entityiterator : new ArrayList<>(event.getEntity().level().players())) {
|
for (Entity entityiterator : new ArrayList<>(event.getEntity().level().players())) {
|
||||||
entityiterator.getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables()).syncPlayerVariables(entityiterator);
|
((PlayerVariables) entityiterator.getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())).syncPlayerVariables(entityiterator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,8 +80,8 @@ public class TargetModVariables {
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void clonePlayer(PlayerEvent.Clone event) {
|
public static void clonePlayer(PlayerEvent.Clone event) {
|
||||||
event.getOriginal().revive();
|
event.getOriginal().revive();
|
||||||
PlayerVariables original = event.getOriginal().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables());
|
PlayerVariables original = ((PlayerVariables) event.getOriginal().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables()));
|
||||||
PlayerVariables clone = event.getEntity().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables());
|
PlayerVariables clone = ((PlayerVariables) event.getEntity().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables()));
|
||||||
clone.zoom = original.zoom;
|
clone.zoom = original.zoom;
|
||||||
clone.zooming = original.zooming;
|
clone.zooming = original.zooming;
|
||||||
clone.recoil = original.recoil;
|
clone.recoil = original.recoil;
|
||||||
|
@ -91,10 +103,143 @@ public class TargetModVariables {
|
||||||
}
|
}
|
||||||
if (!event.getEntity().level().isClientSide()) {
|
if (!event.getEntity().level().isClientSide()) {
|
||||||
for (Entity entityiterator : new ArrayList<>(event.getEntity().level().players())) {
|
for (Entity entityiterator : new ArrayList<>(event.getEntity().level().players())) {
|
||||||
entityiterator.getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables()).syncPlayerVariables(entityiterator);
|
((PlayerVariables) entityiterator.getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())).syncPlayerVariables(entityiterator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
|
||||||
|
if (!event.getEntity().level().isClientSide()) {
|
||||||
|
SavedData mapdata = MapVariables.get(event.getEntity().level());
|
||||||
|
SavedData worlddata = WorldVariables.get(event.getEntity().level());
|
||||||
|
if (mapdata != null)
|
||||||
|
TargetMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getEntity()), new SavedDataSyncMessage(0, mapdata));
|
||||||
|
if (worlddata != null)
|
||||||
|
TargetMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getEntity()), new SavedDataSyncMessage(1, worlddata));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent event) {
|
||||||
|
if (!event.getEntity().level().isClientSide()) {
|
||||||
|
SavedData worlddata = WorldVariables.get(event.getEntity().level());
|
||||||
|
if (worlddata != null)
|
||||||
|
TargetMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getEntity()), new SavedDataSyncMessage(1, worlddata));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class WorldVariables extends SavedData {
|
||||||
|
public static final String DATA_NAME = "target_worldvars";
|
||||||
|
|
||||||
|
public static WorldVariables load(CompoundTag tag) {
|
||||||
|
WorldVariables data = new WorldVariables();
|
||||||
|
data.read(tag);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void read(CompoundTag nbt) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompoundTag save(CompoundTag nbt) {
|
||||||
|
return nbt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void syncData(LevelAccessor world) {
|
||||||
|
this.setDirty();
|
||||||
|
if (world instanceof Level level && !level.isClientSide())
|
||||||
|
TargetMod.PACKET_HANDLER.send(PacketDistributor.DIMENSION.with(level::dimension), new SavedDataSyncMessage(1, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
static WorldVariables clientSide = new WorldVariables();
|
||||||
|
|
||||||
|
public static WorldVariables get(LevelAccessor world) {
|
||||||
|
if (world instanceof ServerLevel level) {
|
||||||
|
return level.getDataStorage().computeIfAbsent(e -> WorldVariables.load(e), WorldVariables::new, DATA_NAME);
|
||||||
|
} else {
|
||||||
|
return clientSide;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class MapVariables extends SavedData {
|
||||||
|
public static final String DATA_NAME = "target_mapvars";
|
||||||
|
public boolean pvpmode = false;
|
||||||
|
|
||||||
|
public static MapVariables load(CompoundTag tag) {
|
||||||
|
MapVariables data = new MapVariables();
|
||||||
|
data.read(tag);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void read(CompoundTag nbt) {
|
||||||
|
pvpmode = nbt.getBoolean("pvpmode");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompoundTag save(CompoundTag nbt) {
|
||||||
|
nbt.putBoolean("pvpmode", pvpmode);
|
||||||
|
return nbt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void syncData(LevelAccessor world) {
|
||||||
|
this.setDirty();
|
||||||
|
if (world instanceof Level && !world.isClientSide())
|
||||||
|
TargetMod.PACKET_HANDLER.send(PacketDistributor.ALL.noArg(), new SavedDataSyncMessage(0, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
static MapVariables clientSide = new MapVariables();
|
||||||
|
|
||||||
|
public static MapVariables get(LevelAccessor world) {
|
||||||
|
if (world instanceof ServerLevelAccessor serverLevelAcc) {
|
||||||
|
return serverLevelAcc.getLevel().getServer().getLevel(Level.OVERWORLD).getDataStorage().computeIfAbsent(e -> MapVariables.load(e), MapVariables::new, DATA_NAME);
|
||||||
|
} else {
|
||||||
|
return clientSide;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class SavedDataSyncMessage {
|
||||||
|
private final int type;
|
||||||
|
private SavedData data;
|
||||||
|
|
||||||
|
public SavedDataSyncMessage(FriendlyByteBuf buffer) {
|
||||||
|
this.type = buffer.readInt();
|
||||||
|
CompoundTag nbt = buffer.readNbt();
|
||||||
|
if (nbt != null) {
|
||||||
|
this.data = this.type == 0 ? new MapVariables() : new WorldVariables();
|
||||||
|
if (this.data instanceof MapVariables mapVariables)
|
||||||
|
mapVariables.read(nbt);
|
||||||
|
else if (this.data instanceof WorldVariables worldVariables)
|
||||||
|
worldVariables.read(nbt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SavedDataSyncMessage(int type, SavedData data) {
|
||||||
|
this.type = type;
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void buffer(SavedDataSyncMessage message, FriendlyByteBuf buffer) {
|
||||||
|
buffer.writeInt(message.type);
|
||||||
|
if (message.data != null)
|
||||||
|
buffer.writeNbt(message.data.save(new CompoundTag()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handler(SavedDataSyncMessage message, Supplier<NetworkEvent.Context> contextSupplier) {
|
||||||
|
NetworkEvent.Context context = contextSupplier.get();
|
||||||
|
context.enqueueWork(() -> {
|
||||||
|
if (!context.getDirection().getReceptionSide().isServer() && message.data != null) {
|
||||||
|
if (message.type == 0)
|
||||||
|
MapVariables.clientSide = (MapVariables) message.data;
|
||||||
|
else
|
||||||
|
WorldVariables.clientSide = (WorldVariables) message.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
context.setPacketHandled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Capability<PlayerVariables> PLAYER_VARIABLES_CAPABILITY = CapabilityManager.get(new CapabilityToken<PlayerVariables>() {
|
public static final Capability<PlayerVariables> PLAYER_VARIABLES_CAPABILITY = CapabilityManager.get(new CapabilityToken<PlayerVariables>() {
|
||||||
|
@ -147,7 +292,7 @@ public class TargetModVariables {
|
||||||
public double killind = 0;
|
public double killind = 0;
|
||||||
|
|
||||||
public void syncPlayerVariables(Entity entity) {
|
public void syncPlayerVariables(Entity entity) {
|
||||||
if (entity instanceof ServerPlayer)
|
if (entity instanceof ServerPlayer serverPlayer)
|
||||||
TargetMod.PACKET_HANDLER.send(PacketDistributor.DIMENSION.with(entity.level()::dimension), new PlayerVariablesSyncMessage(this, entity.getId()));
|
TargetMod.PACKET_HANDLER.send(PacketDistributor.DIMENSION.with(entity.level()::dimension), new PlayerVariablesSyncMessage(this, entity.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,7 +369,7 @@ public class TargetModVariables {
|
||||||
NetworkEvent.Context context = contextSupplier.get();
|
NetworkEvent.Context context = contextSupplier.get();
|
||||||
context.enqueueWork(() -> {
|
context.enqueueWork(() -> {
|
||||||
if (!context.getDirection().getReceptionSide().isServer()) {
|
if (!context.getDirection().getReceptionSide().isServer()) {
|
||||||
PlayerVariables variables = Minecraft.getInstance().player.level().getEntity(message.target).getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables());
|
PlayerVariables variables = ((PlayerVariables) Minecraft.getInstance().player.level().getEntity(message.target).getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables()));
|
||||||
variables.zoom = message.data.zoom;
|
variables.zoom = message.data.zoom;
|
||||||
variables.zooming = message.data.zooming;
|
variables.zooming = message.data.zooming;
|
||||||
variables.recoil = message.data.recoil;
|
variables.recoil = message.data.recoil;
|
||||||
|
|
|
@ -46,7 +46,7 @@ public class BulletFireNormalProcedure {
|
||||||
ProjectileEntity projectile = new ProjectileEntity(entity.level(), living, damage, headshot);
|
ProjectileEntity projectile = new ProjectileEntity(entity.level(), living, damage, headshot);
|
||||||
|
|
||||||
projectile.setPos((living.getX() + (-0.5) * living.getLookAngle().x), (living.getEyeY() - 0.1 + (-0.5) * living.getLookAngle().y), (living.getZ() + (-0.5) * living.getLookAngle().z));
|
projectile.setPos((living.getX() + (-0.5) * living.getLookAngle().x), (living.getEyeY() - 0.1 + (-0.5) * living.getLookAngle().y), (living.getZ() + (-0.5) * living.getLookAngle().z));
|
||||||
projectile.shoot(living.getLookAngle().x, living.getLookAngle().y, living.getLookAngle().z, velocity, 2.5f);
|
projectile.shoot(living.getLookAngle().x, living.getLookAngle().y, living.getLookAngle().z,3 * (float) heldItem.getOrCreateTag().getDouble("speed"), 2.5f);
|
||||||
entity.level().addFreshEntity(projectile);
|
entity.level().addFreshEntity(projectile);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -56,7 +56,7 @@ public class BulletFireNormalProcedure {
|
||||||
ProjectileEntity projectile = new ProjectileEntity(entity.level(), living, damage, headshot);
|
ProjectileEntity projectile = new ProjectileEntity(entity.level(), living, damage, headshot);
|
||||||
|
|
||||||
projectile.setPos((living.getX() + (-0.5) * living.getLookAngle().x), (living.getEyeY() - 0.1 + (-0.5) * living.getLookAngle().y), (living.getZ() + (-0.5) * living.getLookAngle().z));
|
projectile.setPos((living.getX() + (-0.5) * living.getLookAngle().x), (living.getEyeY() - 0.1 + (-0.5) * living.getLookAngle().y), (living.getZ() + (-0.5) * living.getLookAngle().z));
|
||||||
projectile.shoot(living.getLookAngle().x, living.getLookAngle().y, living.getLookAngle().z, (float) heldItem.getOrCreateTag().getDouble("velocity"),
|
projectile.shoot(living.getLookAngle().x, living.getLookAngle().y, living.getLookAngle().z,3 * (float) heldItem.getOrCreateTag().getDouble("velocity"),
|
||||||
(float) living.getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue());
|
(float) living.getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue());
|
||||||
entity.level().addFreshEntity(projectile);
|
entity.level().addFreshEntity(projectile);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,8 @@ import net.minecraftforge.eventbus.api.Event;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
|
||||||
|
import net.mcreator.target.network.TargetModVariables;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,11 +37,17 @@ public class GunsDataProcedure {
|
||||||
itemstackiterator = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY);
|
itemstackiterator = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY);
|
||||||
|
|
||||||
if (itemstackiterator.is(ItemTags.create(new ResourceLocation("target:gun")))) {
|
if (itemstackiterator.is(ItemTags.create(new ResourceLocation("target:gun")))) {
|
||||||
if (itemstackiterator.getOrCreateTag().getDouble("level") >= 10) {
|
|
||||||
itemstackiterator.getOrCreateTag().putDouble("damageadd", 1 + 0.05 * (itemstackiterator.getOrCreateTag().getDouble("level") - 10));
|
if (TargetModVariables.MapVariables.get(world).pvpmode == false) {
|
||||||
|
if (itemstackiterator.getOrCreateTag().getDouble("level") >= 10) {
|
||||||
|
itemstackiterator.getOrCreateTag().putDouble("damageadd", 1 + 0.05 * (itemstackiterator.getOrCreateTag().getDouble("level") - 10));
|
||||||
|
} else {
|
||||||
|
itemstackiterator.getOrCreateTag().putDouble("damageadd", 1);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
itemstackiterator.getOrCreateTag().putDouble("damageadd", 1);
|
itemstackiterator.getOrCreateTag().putDouble("damageadd", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemstackiterator.getItem() == TargetModItems.SKS.get()) {
|
if (itemstackiterator.getItem() == TargetModItems.SKS.get()) {
|
||||||
itemstackiterator.getOrCreateTag().putDouble("zoomspeed", 1);
|
itemstackiterator.getOrCreateTag().putDouble("zoomspeed", 1);
|
||||||
itemstackiterator.getOrCreateTag().putDouble("zoom", 1.25);
|
itemstackiterator.getOrCreateTag().putDouble("zoom", 1.25);
|
||||||
|
|
Loading…
Add table
Reference in a new issue