Skip to content

Commit

Permalink
fr translation + Mixin clean + Networking bug fix
Browse files Browse the repository at this point in the history
  • Loading branch information
nicofighter45 committed Feb 21, 2024
1 parent 62216d3 commit 6aecc88
Show file tree
Hide file tree
Showing 14 changed files with 292 additions and 226 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ public class CommonInitializer implements ModInitializer {
.build();
public static final List<ItemStack> VANADIUM_GROUP_ITEMS = new ArrayList<>();

public static final Identifier UPDATE_CUSTOM_PLAYER_PACKET = new Identifier(CommonInitializer.MODID, "update_custom_player");

@Contract(value = " -> new", pure = true)
public static Item.@NotNull Settings settings() {
return new FabricItemSettings();
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/fr/vana_mod/nicofighter45/main/Listeners.java
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,11 @@ private static void onItemRightClickRegister() {
ServerPlayerEntity server_player = (ServerPlayerEntity) player;
ItemStack it = server_player.getMainHandStack();
Item item_server = it.getItem();
CustomPlayer data_player = ServerInitializer.players.get(server_player.getUuid());
CustomPlayer data_player = ServerInitializer.getCustomPlayer(server_player.getUuid());
int heart = data_player.getHeart();
int regen = data_player.getRegen();
if (item_server == ModItems.SIMPLE_HEALTH_BOOSTER && heart < 20) {
data_player.setHeart(heart + 2);
data_player.setHeart(heart + 2); //todo change translation
Objects.requireNonNull(server_player.getAttributeInstance(EntityAttributes.GENERIC_MAX_HEALTH)).setBaseValue(data_player.getHeart());
sendMsg(server_player, "§8[§6Server§8] §fYou got " + (heart + 2) / 2 + " heart");
} else if (item_server == ModItems.BASE_HEALTH_BOOSTER && heart >= 20 && heart < 30) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,31 @@
import fr.vana_mod.nicofighter45.machine.high_furnace.HighFurnaceScreen;
import fr.vana_mod.nicofighter45.machine.modifierstable.ModifiersTableScreen;
import fr.vana_mod.nicofighter45.machine.purificator.PurificatorScreen;
import fr.vana_mod.nicofighter45.main.CommonInitializer;
import fr.vana_mod.nicofighter45.main.gui.CustomPlayerManagementScreen;
import fr.vana_mod.nicofighter45.main.server.CustomPlayer;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.ingame.HandledScreens;
import net.minecraft.client.item.ModelPredicateProviderRegistry;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.NotNull;

public class ClientInitializer implements ClientModInitializer {

public static CustomPlayer customPlayer;

@Override
public void onInitializeClient() {

ClientPlayNetworking.registerGlobalReceiver(CommonInitializer.UPDATE_CUSTOM_PLAYER_PACKET, ClientInitializer::receiveCustomPlayerFromServer);

//register client screens

HandledScreens.register(ModMachines.MODIFIERS_TABLE_SCREEN_HANDLER, ModifiersTableScreen::new);
Expand Down Expand Up @@ -77,4 +89,13 @@ public void onInitializeClient() {
KeyBinds.registerAll();

}

public static void receiveCustomPlayerFromServer(@NotNull MinecraftClient client, ClientPlayNetworkHandler handler, @NotNull PacketByteBuf buf, PacketSender responseSender){
buf.retain();
client.execute(() -> {
customPlayer = new CustomPlayer(buf.readInt(), buf.readInt(), buf.readBlockPos());
buf.release();
});
}

}
Original file line number Diff line number Diff line change
@@ -1,24 +1,78 @@
package fr.vana_mod.nicofighter45.main.server;

import fr.vana_mod.nicofighter45.main.CommonInitializer;
import net.fabricmc.api.DedicatedServerModInitializer;
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.math.BlockPos;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.*;

public class ServerInitializer implements DedicatedServerModInitializer {

public static final String SERVER_MSG_PREFIX = "§8[§6Server§8] §f";
public static final String BROADCAST_MSG_PREFIX = "§8[§4BROADCAST§8] §f";

public static Map<UUID, CustomPlayer> players = new HashMap<>();
private static final Map<UUID, CustomPlayer> players = new HashMap<>();
public static boolean isOn = true;

public static boolean jump = false;

@Override
public void onInitializeServer() {
System.out.println("The Server Side is loading");
}

@Contract(pure = true)
public static @NotNull Set<UUID> getPlayersUUID(){
return players.keySet();
}

public static void setPlayerHearts(@NotNull ServerPlayerEntity player, int hearts){
players.get(player.getUuid()).setHeart(hearts);
sendInfoToClient(player);
}

public static void setPlayerRegen(@NotNull ServerPlayerEntity player, int regen){
players.get(player.getUuid()).setRegen(regen);
sendInfoToClient(player);
}

public static void setPlayerBase(@NotNull ServerPlayerEntity player, BlockPos base){
players.get(player.getUuid()).setBase(base);
sendInfoToClient(player);
}

public static @Nullable CustomPlayer getNullableCustomPlayer(UUID uuid){
if(!players.containsKey(uuid)){
return null;
}
return players.get(uuid);
}

public static CustomPlayer getCustomPlayer(UUID uuid){
return players.get(uuid);
}

public static void newPlayer(@NotNull ServerPlayerEntity player){
players.put(player.getUuid(), new CustomPlayer(10, 0, Objects.requireNonNull(player.getServer()).getOverworld().getSpawnPos()));
sendInfoToClient(player);
}

public static void loadPlayer(@NotNull UUID uuid, CustomPlayer customPlayer){
players.put(uuid, customPlayer);
}

private static void sendInfoToClient(@NotNull ServerPlayerEntity player){
CustomPlayer customPlayer = getCustomPlayer(player.getUuid());
PacketByteBuf buf = PacketByteBufs.create();
buf.writeInt(customPlayer.getHeart());
buf.writeInt(customPlayer.getRegen());
buf.writeBlockPos(customPlayer.getBase());
ServerPlayNetworking.send(player, CommonInitializer.UPDATE_CUSTOM_PLAYER_PACKET, buf);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public static void registerAllCommands() {
.executes(c -> {
ServerPlayerEntity player = c.getSource().getPlayerOrThrow();
if (player.getServerWorld() == Objects.requireNonNull(player.getServer()).getOverworld()) {
ServerInitializer.players.get(player.getUuid()).setBase(player.getBlockPos());
ServerInitializer.setPlayerBase(player, player.getBlockPos());
sendMsg(player, "setbase.done");
} else {
sendMsg(player, "setbase.error");
Expand All @@ -63,13 +63,13 @@ public static void registerAllCommands() {
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher.register(literal("stat")
.executes(c -> {
ServerPlayerEntity player = c.getSource().getPlayerOrThrow();
CustomPlayer customPlayer = ServerInitializer.players.get(player.getUuid());
CustomPlayer customPlayer = ServerInitializer.getCustomPlayer(player.getUuid());
sendMsg(player, "stat.title");
sendMsg(player, "stat.health", Integer.toString(customPlayer.getHeart()), false);
sendMsg(player, "stat.regen", Integer.toString(customPlayer.getRegen()), false);
sendMsg(player, "stat.baseX" + customPlayer.getBase().getX(), false);
sendMsg(player, "stat.baseY" + customPlayer.getBase().getY(), false);
sendMsg(player, "stat.baseZ" + customPlayer.getBase().getZ(), false);
sendMsg(player, "stat.baseX", Integer.toString(customPlayer.getBase().getX()), false);
sendMsg(player, "stat.baseY", Integer.toString(customPlayer.getBase().getY()), false);
sendMsg(player, "stat.baseZ", Integer.toString(customPlayer.getBase().getZ()), false);
return 1;
})
));
Expand All @@ -95,7 +95,7 @@ public void run() {
lastPos = player.getBlockPos();
lastHealth = player.getHealth();
if (timer == 0) {
BlockPos base = ServerInitializer.players.get(player.getUuid()).getBase();
BlockPos base = ServerInitializer.getCustomPlayer(player.getUuid()).getBase();
player.teleport(Objects.requireNonNull(player.getServer()).getOverworld(), base.getX(), base.getY(), base.getZ(), 180, 0);
sendMsg(player, "base.tp_done");
cancel();
Expand Down Expand Up @@ -346,9 +346,10 @@ public Text getDisplayName() {
.requires(source -> source.hasPermissionLevel(4))
.executes(c -> {
sendOpFeedbackMsg(c, "data.title", false);
for (UUID uuid : ServerInitializer.players.keySet()) {
CustomPlayer cp = ServerInitializer.players.get(uuid);
sendOpFeedbackMsg(c, "data.uuid", uuid.toString(), false, false);
for (UUID uuid : ServerInitializer.getPlayersUUID()) {
CustomPlayer cp = ServerInitializer.getCustomPlayer(uuid);
sendOpFeedbackMsg(c, "data.uuid", Objects.requireNonNull(c.getSource().getServer().getPlayerManager()
.getPlayer(uuid)).getEntityName(), false, false);
sendOpFeedbackMsg(c, "data.health", Integer.toString(cp.getHeart()), false, false);
sendOpFeedbackMsg(c, "data.regen", Integer.toString(cp.getRegen()), false, false);
}
Expand All @@ -371,9 +372,10 @@ public Text getDisplayName() {
})
.then(argument("value", IntegerArgumentType.integer(0))
.executes(c -> {
UUID uuid = EntityArgumentType.getPlayer(c, "player").getUuid();
ServerPlayerEntity player = EntityArgumentType.getPlayer(c, "player");
UUID uuid = player.getUuid();
int value = IntegerArgumentType.getInteger(c, "value");
ServerInitializer.players.get(uuid).setHeart(value);
ServerInitializer.setPlayerHearts(player, value);
for (ServerPlayerEntity server_player : Objects.requireNonNull(c.getSource().getServer()).getPlayerManager().getPlayerList()) {
if (server_player.getUuid() == uuid) {
Objects.requireNonNull(server_player.getAttributeInstance(EntityAttributes.GENERIC_MAX_HEALTH)).setBaseValue(value);
Expand All @@ -392,10 +394,10 @@ public Text getDisplayName() {
})
.then(argument("value", IntegerArgumentType.integer(0))
.executes(c -> {
UUID uuid = EntityArgumentType.getPlayer(c, "player").getUuid();
ServerPlayerEntity player = EntityArgumentType.getPlayer(c, "player");
int value = IntegerArgumentType.getInteger(c, "value");
ServerInitializer.players.get(uuid).setRegen(value);
sendOpFeedbackMsg(c, "data.health_change_op", uuid.toString(), Integer.toString(value / 2));
ServerInitializer.setPlayerRegen(player, value);
sendOpFeedbackMsg(c, "data.health_change_op", player.getEntityName(), Integer.toString(value / 2));
return 1;
})
)
Expand All @@ -409,9 +411,9 @@ public Text getDisplayName() {
})
.then(argument("player", EntityArgumentType.player())
.executes(c -> {
UUID uuid = EntityArgumentType.getPlayer(c, "player").getUuid();
CustomPlayer cp = ServerInitializer.players.get(uuid);
sendOpFeedbackMsg(c, "data.uuid", uuid.toString(), false, false);
ServerPlayerEntity player = EntityArgumentType.getPlayer(c, "player");
CustomPlayer cp = ServerInitializer.getCustomPlayer(player.getUuid());
sendOpFeedbackMsg(c, "data.uuid", player.getEntityName(), false, false);
sendOpFeedbackMsg(c, "data.health", Integer.toString(cp.getHeart()), false, false);
sendOpFeedbackMsg(c, "data.regen", Integer.toString(cp.getRegen()), false, false);
return 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ private static void getPossibleEntries(int power, @NotNull ItemStack stack, bool
if (enchantment instanceof BasicEffectEnchantment basicEffectEnchantment
&& stack.getItem() instanceof ArmorItem) {
if(!basicEffectEnchantment.isAcceptableItem(stack)){
System.out.println(enchantment.getTranslationKey());
continue;
}
if (basicEffectEnchantment.isMinimalAcceptableItem(stack)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package fr.vana_mod.nicofighter45.mixins;

import fr.vana_mod.nicofighter45.main.HeartType;
import fr.vana_mod.nicofighter45.main.server.ServerInitializer;
import fr.vana_mod.nicofighter45.main.client.ClientInitializer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.hud.InGameHud;
import net.minecraft.entity.player.PlayerEntity;
Expand All @@ -27,7 +27,7 @@ public abstract class InGameHudMixin {
private void renderHealthBar(DrawContext context, @NotNull PlayerEntity player, int x, int y, int lines,
int regeneratingHeartIndex, float maxHealth, int lastHealth, int health,
int absorption, boolean blinking, CallbackInfo ci) {
int regenHeart = ServerInitializer.players.get(player.getUuid()).getRegen() / 2;
int regenHeart = ClientInitializer.customPlayer.getRegen() / 2;
HeartType heartType = HeartType.fromPlayerState(player);
int i = 9 * (player.getWorld().getLevelProperties().isHardcore() ? 5 : 0);
int hardcore = player.getWorld().getLevelProperties().isHardcore() ? 27 : 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,20 +79,20 @@ private void damage(@NotNull DamageSource source, float amount, CallbackInfoRetu

@Inject(at = @At("HEAD"), method = "readCustomDataFromNbt")
private void readCustomDataFromNbt(NbtCompound nbt, CallbackInfo ci) {
if (ServerInitializer.players.containsKey(player.getUuid())) {
CustomPlayer pl = ServerInitializer.players.get(player.getUuid());
pl.setHeart(nbt.getInt("heart"));
pl.setRegen(nbt.getInt("regen"));
pl.setBase(new BlockPos(nbt.getInt("baseX"), nbt.getInt("baseY"), nbt.getInt("baseZ")));
CustomPlayer customPlayer = ServerInitializer.getNullableCustomPlayer(player.getUuid());
if (customPlayer != null) {
customPlayer.setHeart(nbt.getInt("heart"));
customPlayer.setRegen(nbt.getInt("regen"));
customPlayer.setBase(new BlockPos(nbt.getInt("baseX"), nbt.getInt("baseY"), nbt.getInt("baseZ")));
} else {
ServerInitializer.players.put(player.getUuid(), new CustomPlayer(nbt.getInt("heart"), nbt.getInt("regen"),
ServerInitializer.loadPlayer(player.getUuid(), new CustomPlayer(nbt.getInt("heart"), nbt.getInt("regen"),
new BlockPos(nbt.getInt("baseX"), nbt.getInt("baseY"), nbt.getInt("baseZ"))));
}
}

@Inject(at = @At("HEAD"), method = "writeCustomDataToNbt")
private void writeCustomDataToNbt(@NotNull NbtCompound nbt, CallbackInfo ci) {
CustomPlayer pl = ServerInitializer.players.get(player.getUuid());
CustomPlayer pl = ServerInitializer.getCustomPlayer(player.getUuid());
nbt.putInt("heart", pl.getHeart());
nbt.putInt("regen", pl.getRegen());
nbt.putInt("baseX", pl.getBase().getX());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,18 @@ private void onPlayerConnected(@NotNull ServerPlayerEntity player, CallbackInfo
if (!ServerInitializer.isOn && permission != 4) {
Objects.requireNonNull(player.getServer()).getPlayerManager().disconnectAllPlayers();
}
if (!ServerInitializer.players.containsKey(player.getUuid())) {
ServerInitializer.players.put(player.getUuid(), new CustomPlayer(10, 0, player.getServer().getOverworld().getSpawnPos()));
CustomPlayer customPlayer = ServerInitializer.getNullableCustomPlayer(player.getUuid());
if (customPlayer == null) {
ServerInitializer.newPlayer(player);
player.setHealth(10);
}
CustomPlayer customPlayer = ServerInitializer.players.get(player.getUuid());
customPlayer = ServerInitializer.getCustomPlayer(player.getUuid());
Objects.requireNonNull(player.getAttributeInstance(EntityAttributes.GENERIC_MAX_HEALTH)).setBaseValue(customPlayer.getHeart());
}

@Inject(at = @At("HEAD"), method = "onPlayerRespawned")
private void onPlayerRespawned(@NotNull ServerPlayerEntity player, CallbackInfo info) {
int heart = ServerInitializer.players.get(player.getUuid()).getHeart();
int heart = ServerInitializer.getCustomPlayer(player.getUuid()).getHeart();
Objects.requireNonNull(player.getAttributeInstance(EntityAttributes.GENERIC_MAX_HEALTH)).setBaseValue(heart);
player.setHealth(heart);
}
Expand All @@ -53,7 +54,7 @@ private void tick(BooleanSupplier shouldKeepTicking, CallbackInfo info) {
} else if (timer_heal == 0) {
timer_heal--;
for (ServerPlayerEntity player : world.getPlayers()) {
int regen = ServerInitializer.players.get(player.getUuid()).getRegen();
int regen = ServerInitializer.getCustomPlayer(player.getUuid()).getRegen();
if (player.getInventory().getArmorStack(EquipmentSlot.HEAD.getEntitySlotId()).getItem() == ModItems.VANADIUM_HELMET &&
player.getInventory().getArmorStack(EquipmentSlot.LEGS.getEntitySlotId()).getItem() == ModItems.VANADIUM_LEGGINGS &&
player.getInventory().getArmorStack(EquipmentSlot.FEET.getEntitySlotId()).getItem() == ModItems.VANADIUM_BOOTS) {
Expand Down
Loading

0 comments on commit 6aecc88

Please sign in to comment.