取消伤害随等级提升机制,删除pvpmode
This commit is contained in:
parent
586ad629dd
commit
62a9a53e3f
10 changed files with 40 additions and 128 deletions
|
@ -1,37 +0,0 @@
|
|||
|
||||
package net.mcreator.superbwarfare.command;
|
||||
|
||||
import net.mcreator.superbwarfare.network.ModVariables;
|
||||
import net.minecraft.commands.Commands;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.common.util.FakePlayerFactory;
|
||||
import net.minecraftforge.event.RegisterCommandsEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
|
||||
@Mod.EventBusSubscriber
|
||||
public class PVPModeCommand {
|
||||
@SubscribeEvent
|
||||
public static void registerCommand(RegisterCommandsEvent event) {
|
||||
event.getDispatcher().register(Commands.literal("superbwarfare:pvpmode").requires(s -> s.hasPermission(4)).executes(arguments -> {
|
||||
Level world = arguments.getSource().getUnsidedLevel();
|
||||
Entity entity = arguments.getSource().getEntity();
|
||||
if (entity == null && world instanceof ServerLevel server) {
|
||||
entity = FakePlayerFactory.getMinecraft(server);
|
||||
}
|
||||
|
||||
var mapVariables = ModVariables.MapVariables.get(world);
|
||||
mapVariables.pvpMode = !mapVariables.pvpMode;
|
||||
mapVariables.syncData(world);
|
||||
|
||||
if (entity instanceof Player player && !player.level().isClientSide()) {
|
||||
player.displayClientMessage(Component.translatable("commands.pvp_mode." + (mapVariables.pvpMode ? "on" : "off")), false);
|
||||
}
|
||||
return 0;
|
||||
}));
|
||||
}
|
||||
}
|
|
@ -194,7 +194,7 @@ public class GunEventHandler {
|
|||
|
||||
if (!player.level().isClientSide()) {
|
||||
float headshot = (float) heldItem.getOrCreateTag().getDouble("headshot");
|
||||
float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("sentinelChargeDamage")) * (float) heldItem.getOrCreateTag().getDouble("levelDamageMultiple") * (float) perkDamage(heldItem);
|
||||
float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("sentinelChargeDamage")) * (float) perkDamage(heldItem);
|
||||
float velocity = (float) heldItem.getOrCreateTag().getDouble("velocity") * (float) perkSpeed(heldItem);
|
||||
int projectileAmount = (int) heldItem.getOrCreateTag().getDouble("projectile_amount");
|
||||
float bypassArmorRate = (float) heldItem.getOrCreateTag().getDouble("BypassesArmor");
|
||||
|
|
|
@ -212,7 +212,7 @@ public class LivingEventHandler {
|
|||
var tag = stack.getOrCreateTag();
|
||||
int level = stack.getOrCreateTag().getInt("Level");
|
||||
double exp = stack.getOrCreateTag().getDouble("Exp");
|
||||
double upgradeExpNeeded = 20 * Math.pow(level, 2) + 160 * level + 20;
|
||||
double upgradeExpNeeded = 20 * Math.pow(level, 2) + 140 * level + 20;
|
||||
|
||||
if (exp >= upgradeExpNeeded) {
|
||||
tag.putDouble("Exp", exp - upgradeExpNeeded);
|
||||
|
|
|
@ -6,6 +6,8 @@ import net.mcreator.superbwarfare.init.ModSounds;
|
|||
import net.mcreator.superbwarfare.init.ModTags;
|
||||
import net.mcreator.superbwarfare.network.ModVariables;
|
||||
import net.mcreator.superbwarfare.network.message.SimulationDistanceMessage;
|
||||
import net.mcreator.superbwarfare.tools.GunInfo;
|
||||
import net.mcreator.superbwarfare.tools.GunsTool;
|
||||
import net.mcreator.superbwarfare.tools.SoundTool;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
|
@ -52,13 +54,29 @@ public class PlayerEventHandler {
|
|||
capability.syncPlayerVariables(player);
|
||||
});
|
||||
|
||||
if (!ModVariables.MapVariables.get(player.level()).pvpMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (ItemStack stack : player.getInventory().items) {
|
||||
if (stack.is(ModTags.Items.GUN)) {
|
||||
stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag"));
|
||||
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
|
||||
GunsTool.reload(player, GunInfo.Type.SHOTGUN);
|
||||
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) {
|
||||
GunsTool.reload(player, GunInfo.Type.SNIPER);
|
||||
} else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) {
|
||||
GunsTool.reload(player, GunInfo.Type.HANDGUN);
|
||||
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
|
||||
GunsTool.reload(player, GunInfo.Type.RIFLE);
|
||||
} else if (stack.getItem() == ModItems.TASER.get()) {
|
||||
stack.getOrCreateTag().putInt("ammo", 1);
|
||||
player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.TASER_ELECTRODE.get(), 1, player.inventoryMenu.getCraftSlots());
|
||||
} else if (stack.getItem() == ModItems.M_79.get()) {
|
||||
stack.getOrCreateTag().putInt("ammo", 1);
|
||||
player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.GRENADE_40MM.get(), 1, player.inventoryMenu.getCraftSlots());
|
||||
} else if (stack.getItem() == ModItems.RPG.get()) {
|
||||
stack.getOrCreateTag().putInt("ammo", 1);
|
||||
player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.ROCKET.get(), 1, player.inventoryMenu.getCraftSlots());
|
||||
} else if (stack.getItem() == ModItems.JAVELIN.get()) {
|
||||
stack.getOrCreateTag().putInt("ammo", 1);
|
||||
player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.JAVELIN_MISSILE.get(), 1, player.inventoryMenu.getCraftSlots());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,7 +54,6 @@ public abstract class GunItem extends Item {
|
|||
GunsTool.genUUID(itemstack);
|
||||
ItemNBTTool.setBoolean(itemstack, "init", true);
|
||||
}
|
||||
GunsTool.pvpModeCheck(itemstack, level);
|
||||
|
||||
if (itemstack.getOrCreateTag().getBoolean("draw")) {
|
||||
itemstack.getOrCreateTag().putBoolean("draw", false);
|
||||
|
|
|
@ -211,7 +211,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
int energyStored = energy.getEnergyStored();
|
||||
if (energyStored > 0) {
|
||||
energy.extractEnergy(5, false);
|
||||
tag.putDouble("sentinelChargeDamage", 0.2857142857142857 * tag.getDouble("damage") * tag.getDouble("levelDamageMultiple"));
|
||||
tag.putDouble("sentinelChargeDamage", 0.2857142857142857 * tag.getDouble("damage"));
|
||||
} else {
|
||||
tag.putDouble("sentinelChargeDamage", 0);
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@ import net.minecraft.world.entity.Entity;
|
|||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraft.world.level.ServerLevelAccessor;
|
||||
import net.minecraft.world.level.saveddata.SavedData;
|
||||
import net.minecraftforge.common.capabilities.*;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
|
@ -95,11 +94,7 @@ public class ModVariables {
|
|||
@SubscribeEvent
|
||||
public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
|
||||
if (event.getEntity().level().isClientSide()) return;
|
||||
|
||||
SavedData mapData = MapVariables.get(event.getEntity().level());
|
||||
SavedData worldData = WorldVariables.get(event.getEntity().level());
|
||||
if (mapData != null)
|
||||
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getEntity()), new SavedDataSyncMessage(0, mapData));
|
||||
if (worldData != null)
|
||||
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getEntity()), new SavedDataSyncMessage(1, worldData));
|
||||
}
|
||||
|
@ -107,7 +102,6 @@ public class ModVariables {
|
|||
@SubscribeEvent
|
||||
public static void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent event) {
|
||||
if (event.getEntity().level().isClientSide()) return;
|
||||
|
||||
SavedData worldData = WorldVariables.get(event.getEntity().level());
|
||||
if (worldData != null)
|
||||
ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) event.getEntity()), new SavedDataSyncMessage(1, worldData));
|
||||
|
@ -146,44 +140,6 @@ public class ModVariables {
|
|||
}
|
||||
}
|
||||
|
||||
public static class MapVariables extends SavedData {
|
||||
public static final String DATA_NAME = ModUtils.MODID + "_map_variables";
|
||||
public boolean pvpMode = false;
|
||||
|
||||
public static MapVariables load(CompoundTag tag) {
|
||||
MapVariables data = new MapVariables();
|
||||
data.read(tag);
|
||||
return data;
|
||||
}
|
||||
|
||||
public static MapVariables get(LevelAccessor world) {
|
||||
if (world instanceof ServerLevelAccessor serverLevelAcc) {
|
||||
var level = serverLevelAcc.getLevel().getServer().getLevel(Level.OVERWORLD);
|
||||
if (level != null) {
|
||||
return level.getDataStorage().computeIfAbsent(MapVariables::load, MapVariables::new, DATA_NAME);
|
||||
}
|
||||
}
|
||||
return clientSide;
|
||||
}
|
||||
|
||||
public void read(CompoundTag nbt) {
|
||||
pvpMode = nbt.getBoolean("pvp_mode");
|
||||
}
|
||||
|
||||
public void syncData(LevelAccessor world) {
|
||||
this.setDirty();
|
||||
if (world instanceof Level && !world.isClientSide())
|
||||
ModUtils.PACKET_HANDLER.send(PacketDistributor.ALL.noArg(), new SavedDataSyncMessage(0, this));
|
||||
}
|
||||
|
||||
static MapVariables clientSide = new MapVariables();
|
||||
|
||||
@Override
|
||||
public CompoundTag save(CompoundTag nbt) {
|
||||
nbt.putBoolean("pvp_mode", pvpMode);
|
||||
return nbt;
|
||||
}
|
||||
}
|
||||
|
||||
public static class SavedDataSyncMessage {
|
||||
private final int type;
|
||||
|
@ -194,11 +150,7 @@ public class ModVariables {
|
|||
CompoundTag nbt = buffer.readNbt();
|
||||
if (nbt == null) return;
|
||||
|
||||
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);
|
||||
new WorldVariables();
|
||||
}
|
||||
|
||||
public SavedDataSyncMessage(int type, SavedData data) {
|
||||
|
@ -216,9 +168,7 @@ public class ModVariables {
|
|||
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
|
||||
if (message.type != 0)
|
||||
WorldVariables.clientSide = (WorldVariables) message.data;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -269,10 +269,10 @@ public class FireMessage {
|
|||
|
||||
if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zoom) {
|
||||
spread = 0.01f;
|
||||
damage = 0.08333333 * tag.getDouble("damage") * tag.getDouble("speed") * tag.getDouble("levelDamageMultiple") * perkDamage(heldItem);
|
||||
damage = 0.08333333 * tag.getDouble("damage") * tag.getDouble("speed") * perkDamage(heldItem);
|
||||
} else {
|
||||
spread = perk instanceof AmmoPerk ammoPerk && ammoPerk.slug ? 1 : 2.5f;
|
||||
damage = (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug ? 0.08333333 : 0.008333333) * tag.getDouble("damage") * tag.getDouble("speed") * tag.getDouble("levelDamageMultiple") * perkDamage(heldItem);
|
||||
damage = (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug ? 0.08333333 : 0.008333333) * tag.getDouble("damage") * tag.getDouble("speed") * perkDamage(heldItem);
|
||||
}
|
||||
|
||||
ProjectileEntity projectile = new ProjectileEntity(player.level())
|
||||
|
@ -408,7 +408,7 @@ public class FireMessage {
|
|||
Level level = player.level();
|
||||
if (!level.isClientSide()) {
|
||||
GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level,
|
||||
(float) stack.getOrCreateTag().getDouble("damage") * (float) stack.getOrCreateTag().getDouble("levelDamageMultiple"));
|
||||
(float) stack.getOrCreateTag().getDouble("damage"));
|
||||
|
||||
var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);
|
||||
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) {
|
||||
|
@ -461,7 +461,7 @@ public class FireMessage {
|
|||
|
||||
if (!level.isClientSide()) {
|
||||
RpgRocketEntity rocketEntity = new RpgRocketEntity(player, level,
|
||||
(float) tag.getDouble("damage") * (float) tag.getDouble("levelDamageMultiple"));
|
||||
(float) tag.getDouble("damage"));
|
||||
|
||||
var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);
|
||||
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) {
|
||||
|
@ -526,7 +526,7 @@ public class FireMessage {
|
|||
|
||||
if (!level.isClientSide()) {
|
||||
JavelinMissileEntity missileEntity = new JavelinMissileEntity(player, level,
|
||||
(float) tag.getDouble("damage") * (float) tag.getDouble("levelDamageMultiple"));
|
||||
(float) tag.getDouble("damage"));
|
||||
|
||||
var dmgPerk = PerkHelper.getPerkByType(stack, Perk.Type.DAMAGE);
|
||||
if (dmgPerk == ModPerks.MONSTER_HUNTER.get()) {
|
||||
|
|
|
@ -64,18 +64,6 @@ public class GunsTool {
|
|||
}
|
||||
}
|
||||
|
||||
public static void pvpModeCheck(ItemStack stack, Level level) {
|
||||
if (!ModVariables.MapVariables.get(level).pvpMode) {
|
||||
if (stack.getOrCreateTag().getInt("Level") >= 10) {
|
||||
stack.getOrCreateTag().putDouble("levelDamageMultiple", 1 + 0.05 * (stack.getOrCreateTag().getInt("Level") - 10));
|
||||
} else {
|
||||
stack.getOrCreateTag().putDouble("levelDamageMultiple", 1);
|
||||
}
|
||||
} else {
|
||||
stack.getOrCreateTag().putDouble("levelDamageMultiple", 1);
|
||||
}
|
||||
}
|
||||
|
||||
public static void genUUID(ItemStack stack) {
|
||||
UUID uuid = UUID.randomUUID();
|
||||
stack.getOrCreateTag().putUUID("gun_uuid", uuid);
|
||||
|
|
|
@ -52,8 +52,7 @@ public class TooltipTool {
|
|||
public static void addGunTips(List<Component> tooltip, ItemStack stack) {
|
||||
tooltip.add(Component.literal(""));
|
||||
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0)
|
||||
* ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1) * perkDamage(stack);
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * perkDamage(stack);
|
||||
|
||||
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
|
@ -77,16 +76,14 @@ public class TooltipTool {
|
|||
}
|
||||
|
||||
if (slug) {
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "projectile_amount", 0)
|
||||
* ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1) * perkDamage(stack);
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "projectile_amount", 0) * perkDamage(stack);
|
||||
|
||||
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
.append(Component.literal(new DecimalFormat("##.#").format(damage) + (heBullet(stack) ? " + " + new DecimalFormat("##.#").format(0.8 * damage * (1 + 0.1 * heBulletLevel(stack))) : "")).withStyle(ChatFormatting.GREEN)));
|
||||
|
||||
} else {
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0)
|
||||
* ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1) * perkDamage(stack);
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * perkDamage(stack);
|
||||
|
||||
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
|
@ -220,7 +217,7 @@ public class TooltipTool {
|
|||
slug = true;
|
||||
}
|
||||
|
||||
double total = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1) * perkDamage(stack);
|
||||
double total = ItemNBTTool.getDouble(stack, "damage", 0) * perkDamage(stack);
|
||||
|
||||
if (slug) {
|
||||
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
|
||||
|
@ -251,14 +248,13 @@ public class TooltipTool {
|
|||
if (flag.get()) {
|
||||
double damage = (ItemNBTTool.getDouble(stack, "damage", 0) +
|
||||
ItemNBTTool.getDouble(stack, "sentinelChargeDamage", 0))
|
||||
* ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1)
|
||||
* perkDamage(stack);
|
||||
|
||||
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
.append(Component.literal(new DecimalFormat("##.#").format(damage) + (heBullet(stack) ? " + " + new DecimalFormat("##.#").format(0.8 * damage * (1 + 0.1 * heBulletLevel(stack))) : "")).withStyle(ChatFormatting.AQUA).withStyle(ChatFormatting.BOLD)));
|
||||
} else {
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1) * perkDamage(stack);
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0) * perkDamage(stack);
|
||||
|
||||
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
|
@ -280,8 +276,7 @@ public class TooltipTool {
|
|||
public static void addTaserTips(List<Component> tooltip, ItemStack stack) {
|
||||
tooltip.add(Component.literal(""));
|
||||
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0)
|
||||
* ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1);
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0);
|
||||
|
||||
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
|
@ -302,8 +297,7 @@ public class TooltipTool {
|
|||
public static void addLauncherTips(List<Component> tooltip, ItemStack stack) {
|
||||
tooltip.add(Component.literal(""));
|
||||
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0)
|
||||
* ItemNBTTool.getDouble(stack, "levelDamageMultiple", 1);
|
||||
double damage = ItemNBTTool.getDouble(stack, "damage", 0);
|
||||
|
||||
tooltip.add(Component.translatable("des.superbwarfare.tips.damage").withStyle(ChatFormatting.GRAY)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
|
|
Loading…
Add table
Reference in a new issue