From 2fd270131fa71ca87b8c4f682c27fa2c121e48e6 Mon Sep 17 00:00:00 2001 From: Sollace Date: Wed, 23 Sep 2020 21:56:57 +0200 Subject: [PATCH] Store the default race with the world and properly sync with the client upon joining --- .../unicopia/InteractionManager.java | 11 +-- .../com/minelittlepony/unicopia/Race.java | 13 ++++ .../unicopia/WorldTribeManager.java | 38 +++++++++++ .../unicopia/ability/AbilityDispatcher.java | 2 +- .../client/ClientInteractionManager.java | 29 +------- .../unicopia/client/MineLPConnector.java | 7 +- .../unicopia/client/UnicopiaClient.java | 64 +++++++++++++----- .../unicopia/entity/player/Pony.java | 42 ++++++++++-- .../unicopia/network/Channel.java | 11 +-- .../network/MsgPlayerCapabilities.java | 1 - .../network/MsgRequestCapabilities.java | 19 +++--- .../projectile/MagicProjectileEntity.java | 2 +- .../assets/unicopia/textures/gui/icons.png | Bin 0 -> 38235 bytes 13 files changed, 170 insertions(+), 69 deletions(-) create mode 100644 src/main/java/com/minelittlepony/unicopia/WorldTribeManager.java create mode 100644 src/main/resources/assets/unicopia/textures/gui/icons.png diff --git a/src/main/java/com/minelittlepony/unicopia/InteractionManager.java b/src/main/java/com/minelittlepony/unicopia/InteractionManager.java index 71f00626..680000cd 100644 --- a/src/main/java/com/minelittlepony/unicopia/InteractionManager.java +++ b/src/main/java/com/minelittlepony/unicopia/InteractionManager.java @@ -18,18 +18,21 @@ public class InteractionManager { return INSTANCE; } + /** + * Returns true on the client if the passed in player entity is the client's player. + * Always returns false on the server. + */ public boolean isClientPlayer(@Nullable PlayerEntity player) { return false; } + /** + * The player's camera mode. Always 0 on the server. + */ public int getViewMode() { return 0; } - public Race getPreferredRace() { - return Unicopia.getConfig().getPrefferedRace(); - } - /** * Side-independent method to create a new player. * diff --git a/src/main/java/com/minelittlepony/unicopia/Race.java b/src/main/java/com/minelittlepony/unicopia/Race.java index c558981a..934eb559 100644 --- a/src/main/java/com/minelittlepony/unicopia/Race.java +++ b/src/main/java/com/minelittlepony/unicopia/Race.java @@ -7,9 +7,12 @@ import java.util.function.Function; import java.util.stream.Collectors; import com.google.common.base.Strings; +import com.minelittlepony.common.client.gui.sprite.TextureSprite; +import com.minelittlepony.common.client.gui.style.Style; import com.minelittlepony.unicopia.ability.magic.Affine; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.Identifier; public enum Race implements Affine { /** @@ -101,6 +104,16 @@ public enum Race implements Affine { return this; } + public Style getStyle() { + return new Style() + .setIcon(new TextureSprite() + .setPosition(2, 2) + .setSize(16, 16) + .setTexture(new Identifier("unicopia", "textures/gui/icons.png")) + .setTextureOffset((16 * ordinal()) % 256, (ordinal() / 256) * 16) + ) + .setTooltip(getTranslationKey(), 0, 10); + } public boolean equals(String s) { return name().equalsIgnoreCase(s) diff --git a/src/main/java/com/minelittlepony/unicopia/WorldTribeManager.java b/src/main/java/com/minelittlepony/unicopia/WorldTribeManager.java new file mode 100644 index 00000000..248f8a39 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/WorldTribeManager.java @@ -0,0 +1,38 @@ +package com.minelittlepony.unicopia; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.PersistentState; +import net.minecraft.world.dimension.DimensionType; + +public class WorldTribeManager extends PersistentState { + + private Race defaultRace = Unicopia.getConfig().getPrefferedRace(); + + public WorldTribeManager(ServerWorld world) { + super("unicopia:tribes" + world.getDimension().getSuffix()); + } + + public Race getDefaultRace() { + return defaultRace; + } + + @Override + public void fromTag(CompoundTag tag) { + defaultRace = Race.fromName(tag.getString("defaultRace")); + } + + @Override + public CompoundTag toTag(CompoundTag tag) { + tag.putString("defaultRace", defaultRace.name()); + return tag; + } + + public static String nameFor(DimensionType dimension) { + return "unicopia:tribes" + dimension.getSuffix(); + } + + public static WorldTribeManager forWorld(ServerWorld world) { + return world.getPersistentStateManager().getOrCreate(() -> new WorldTribeManager(world), nameFor(world.getDimension())); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/ability/AbilityDispatcher.java b/src/main/java/com/minelittlepony/unicopia/ability/AbilityDispatcher.java index f153910a..fdd01760 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/AbilityDispatcher.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/AbilityDispatcher.java @@ -164,7 +164,7 @@ public class AbilityDispatcher implements Tickable, NbtSerialisable { T data = ability.tryActivate(player); if (data != null) { - Channel.PLAYER_ABILITY.send(new MsgPlayerAbility<>(ability, data)); + Channel.CLIENT_PLAYER_ABILITY.send(new MsgPlayerAbility<>(ability, data)); } else { setCooldown(0); } diff --git a/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java b/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java index 9f948daf..20c9426c 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java +++ b/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java @@ -4,8 +4,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.entity.player.dummy.DummyClientPlayerEntity; import com.mojang.authlib.GameProfile; @@ -16,7 +14,6 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; public class ClientInteractionManager extends InteractionManager { - @Override @Nonnull public PlayerEntity createPlayer(Entity observer, GameProfile profile) { @@ -28,29 +25,9 @@ public class ClientInteractionManager extends InteractionManager { @Override public boolean isClientPlayer(@Nullable PlayerEntity player) { - if (MinecraftClient.getInstance().player == player) { - return true; - } - - if (MinecraftClient.getInstance().player == null || player == null) { - return false; - } - - return Pony.equal(MinecraftClient.getInstance().player, player); - } - - @Override - public Race getPreferredRace() { - if (!Unicopia.getConfig().ignoresMineLittlePony() - && MinecraftClient.getInstance().player != null) { - Race race = MineLPConnector.getPlayerPonyRace(); - - if (!race.isDefault()) { - return race; - } - } - - return Unicopia.getConfig().getPrefferedRace(); + return (MinecraftClient.getInstance().player != null && player != null) + && (MinecraftClient.getInstance().player == player + || Pony.equal(MinecraftClient.getInstance().player, player)); } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/client/MineLPConnector.java b/src/main/java/com/minelittlepony/unicopia/client/MineLPConnector.java index d9e54fa2..68e8a0e2 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/MineLPConnector.java +++ b/src/main/java/com/minelittlepony/unicopia/client/MineLPConnector.java @@ -24,13 +24,14 @@ public final class MineLPConnector { case GRYPHON: case HIPPOGRIFF: case PEGASUS: - case BATPONY: return Race.PEGASUS; + case BATPONY: + return Race.BAT; case SEAPONY: case UNICORN: return Race.UNICORN; default: - return Race.EARTH; + return Race.HUMAN; } } -} \ No newline at end of file +} diff --git a/src/main/java/com/minelittlepony/unicopia/client/UnicopiaClient.java b/src/main/java/com/minelittlepony/unicopia/client/UnicopiaClient.java index bd9284be..0c7798e8 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/UnicopiaClient.java +++ b/src/main/java/com/minelittlepony/unicopia/client/UnicopiaClient.java @@ -1,38 +1,70 @@ package com.minelittlepony.unicopia.client; +import com.minelittlepony.common.client.gui.element.Cycler; +import com.minelittlepony.common.event.ScreenInitCallback; +import com.minelittlepony.common.event.ScreenInitCallback.ButtonList; import com.minelittlepony.unicopia.InteractionManager; import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.network.Channel; -import com.minelittlepony.unicopia.network.MsgRequestCapabilities; +import com.minelittlepony.unicopia.Unicopia; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; -import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.world.CreateWorldScreen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.MathHelper; public class UnicopiaClient implements ClientModInitializer { - private Race lastPreferredRace = InteractionManager.instance().getPreferredRace(); + public static Race getPreferredRace() { + if (!Unicopia.getConfig().ignoresMineLittlePony() + && MinecraftClient.getInstance().player != null) { + Race race = MineLPConnector.getPlayerPonyRace(); + + if (!race.isDefault()) { + return race; + } + } + + return Unicopia.getConfig().getPrefferedRace(); + } @Override public void onInitializeClient() { - lastPreferredRace = InteractionManager.instance().getPreferredRace(); InteractionManager.INSTANCE = new ClientInteractionManager(); URenderers.bootstrap(); - ClientTickEvents.END_CLIENT_TICK.register(client -> { - PlayerEntity player = client.player; + ClientTickEvents.END_CLIENT_TICK.register(this::onTick); + ScreenInitCallback.EVENT.register(this::onScreenInit); + } - if (player != null && !player.removed) { - Race newRace = InteractionManager.instance().getPreferredRace(); + private void onTick(MinecraftClient client) { + KeyBindingsHandler.INSTANCE.tick(client); + } - if (newRace != lastPreferredRace) { - lastPreferredRace = newRace; - - Channel.REQUEST_CAPABILITIES.send(new MsgRequestCapabilities(lastPreferredRace)); + private void onScreenInit(Screen screen, ButtonList buttons) { + if (screen instanceof CreateWorldScreen) { + buttons.add(new Cycler(screen.width / 2 + 110, 60, 20, 20) { + @Override + protected void renderForground(MatrixStack matrices, MinecraftClient mc, int mouseX, int mouseY, int foreColor) { + super.renderForground(matrices, mc, mouseX, mouseY, foreColor); + if (isMouseOver(mouseX, mouseY)) { + renderToolTip(matrices, screen, mouseX, mouseY); + } } - } + }).setStyles( + Race.EARTH.getStyle(), + Race.UNICORN.getStyle(), + Race.PEGASUS.getStyle(), + Race.BAT.getStyle(), + Race.ALICORN.getStyle(), + Race.CHANGELING.getStyle() + ).onChange(i -> { + Unicopia.getConfig().setPreferredRace(Race.fromId(i + 1)); - KeyBindingsHandler.INSTANCE.tick(client); - }); + return i; + }).setValue(MathHelper.clamp(Unicopia.getConfig().getPrefferedRace().ordinal() - 1, 0, 5)); + } } } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java index fa0d4edd..48d592b7 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java @@ -5,8 +5,10 @@ import java.util.Optional; import javax.annotation.Nullable; import com.minelittlepony.unicopia.Affinity; +import com.minelittlepony.unicopia.client.UnicopiaClient; import com.minelittlepony.unicopia.InteractionManager; import com.minelittlepony.unicopia.Race; +import com.minelittlepony.unicopia.WorldTribeManager; import com.minelittlepony.unicopia.ability.AbilityDispatcher; import com.minelittlepony.unicopia.ability.magic.AttachableSpell; import com.minelittlepony.unicopia.ability.magic.Caster; @@ -21,11 +23,13 @@ import com.minelittlepony.unicopia.item.toxin.Toxin; import com.minelittlepony.unicopia.network.Channel; import com.minelittlepony.unicopia.network.EffectSync; import com.minelittlepony.unicopia.network.MsgPlayerCapabilities; +import com.minelittlepony.unicopia.network.MsgRequestCapabilities; import com.minelittlepony.unicopia.network.Transmittable; import com.minelittlepony.unicopia.util.Copieable; import com.minelittlepony.common.util.animation.LinearInterpolator; import com.minelittlepony.common.util.animation.Interpolator; import com.mojang.authlib.GameProfile; + import net.minecraft.entity.Entity; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.damage.DamageSource; @@ -38,6 +42,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.packet.s2c.play.EntityPassengersSetS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; import net.minecraft.util.math.BlockPos; @@ -65,7 +70,12 @@ public class Pony implements Caster, Equine, Transmi private final PlayerEntity entity; - private boolean dirty = false; + private boolean dirty; + private boolean speciesSet; + private boolean speciesPersisted; + + @Nullable + private Race clientPreferredRace; private boolean invisible = false; @@ -73,7 +83,7 @@ public class Pony implements Caster, Equine, Transmi this.entity = player; this.mana = new ManaContainer(this); - player.getDataTracker().startTracking(RACE, Race.EARTH.ordinal()); + player.getDataTracker().startTracking(RACE, Race.HUMAN.ordinal()); player.getDataTracker().startTracking(EFFECT, new CompoundTag()); player.getDataTracker().startTracking(HELD_EFFECT, new CompoundTag()); } @@ -94,6 +104,7 @@ public class Pony implements Caster, Equine, Transmi @Override public void setSpecies(Race race) { race = race.validate(entity); + speciesSet = true; entity.getDataTracker().set(RACE, race.ordinal()); @@ -110,6 +121,10 @@ public class Pony implements Caster, Equine, Transmi return invisible && hasSpell(); } + public boolean isSpeciesPersisted() { + return speciesPersisted; + } + @Override public void setInvisible(boolean invisible) { this.invisible = invisible; @@ -129,7 +144,6 @@ public class Pony implements Caster, Equine, Transmi dirty = false; if (entity instanceof ServerPlayerEntity) { - System.out.println("Sending capabilities for player"); Channel.BROADCAST_CAPABILITIES.send(new MsgPlayerCapabilities(full, this)); } } @@ -161,7 +175,25 @@ public class Pony implements Caster, Equine, Transmi @Override public boolean beforeUpdate() { - if (entity.world.isClient()) { + + if (!speciesSet && getWorld() instanceof ServerWorld) { + setSpecies(WorldTribeManager.forWorld((ServerWorld)getWorld()).getDefaultRace()); + setDirty(); + } + + if (isClientPlayer() && !speciesSet) { + Race race = UnicopiaClient.getPreferredRace(); + + if (race != clientPreferredRace) { + clientPreferredRace = race; + + if (race != getSpecies()) { + Channel.CLIENT_REQUEST_CAPABILITIES.send(new MsgRequestCapabilities(race)); + } + } + } + + if (isClient()) { if (entity.hasVehicle() && entity.isSneaking()) { Entity ridee = entity.getVehicle(); @@ -300,6 +332,7 @@ public class Pony implements Caster, Equine, Transmi @Override public void fromNBT(CompoundTag compound) { + speciesPersisted = true; setSpecies(Race.fromName(compound.getString("playerSpecies"))); powers.fromNBT(compound.getCompound("powers")); @@ -312,6 +345,7 @@ public class Pony implements Caster, Equine, Transmi @Override public void copyFrom(Pony oldPlayer) { + speciesPersisted = oldPlayer.speciesPersisted; setSpell(oldPlayer.getSpell()); setSpecies(oldPlayer.getSpecies()); setDirty(); diff --git a/src/main/java/com/minelittlepony/unicopia/network/Channel.java b/src/main/java/com/minelittlepony/unicopia/network/Channel.java index 2f5682a6..ab8b2081 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/Channel.java +++ b/src/main/java/com/minelittlepony/unicopia/network/Channel.java @@ -12,14 +12,15 @@ import net.minecraft.network.PacketByteBuf; public interface Channel { - SPacketType> PLAYER_ABILITY = clientToServer(new Identifier("unicopia", "player_ability"), MsgPlayerAbility::new); + SPacketType> CLIENT_PLAYER_ABILITY = clientToServer(new Identifier("unicopia", "player_ability"), MsgPlayerAbility::new); - SPacketType REQUEST_CAPABILITIES = clientToServer(new Identifier("unicopia", "request_capabilities"), MsgRequestCapabilities::new); - CPacketType PLAYER_CAPABILITIES = serverToClient(new Identifier("unicopia", "player_capabilities"), MsgPlayerCapabilities::new); + SPacketType CLIENT_REQUEST_CAPABILITIES = clientToServer(new Identifier("unicopia", "request_capabilities"), MsgRequestCapabilities::new); - SPacketType BROADCAST_CAPABILITIES = broadcast(PLAYER_CAPABILITIES, MsgPlayerCapabilities::new); + CPacketType SERVER_PLAYER_CAPABILITIES = serverToClient(new Identifier("unicopia", "player_capabilities"), MsgPlayerCapabilities::new); - CPacketType SPAWN_PROJECTILE = serverToClient(new Identifier("unicopia", "projectile_entity"), MsgSpawnProjectile::new); + SPacketType BROADCAST_CAPABILITIES = broadcast(SERVER_PLAYER_CAPABILITIES, MsgPlayerCapabilities::new); + + CPacketType SERVER_SPAWN_PROJECTILE = serverToClient(new Identifier("unicopia", "projectile_entity"), MsgSpawnProjectile::new); static void bootstrap() { } diff --git a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java b/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java index 60806593..fc7c3c4c 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java +++ b/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java @@ -50,7 +50,6 @@ public class MsgPlayerCapabilities implements Channel.Packet { @Override public void handle(PacketContext context) { - System.out.println("Got capabilities for player " + newRace + " " + context.getPacketEnvironment()); Pony player = Pony.of(context.getPlayer()); if (compoundTag.isEmpty()) { player.setSpecies(newRace); diff --git a/src/main/java/com/minelittlepony/unicopia/network/MsgRequestCapabilities.java b/src/main/java/com/minelittlepony/unicopia/network/MsgRequestCapabilities.java index 736c3580..bee1f5d0 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/MsgRequestCapabilities.java +++ b/src/main/java/com/minelittlepony/unicopia/network/MsgRequestCapabilities.java @@ -1,37 +1,40 @@ package com.minelittlepony.unicopia.network; import com.minelittlepony.unicopia.Race; +import com.minelittlepony.unicopia.WorldTribeManager; import com.minelittlepony.unicopia.entity.player.Pony; import net.fabricmc.fabric.api.network.PacketContext; import net.minecraft.network.PacketByteBuf; +import net.minecraft.server.world.ServerWorld; public class MsgRequestCapabilities implements Channel.Packet { - private final Race race; + private final Race clientPreferredRace; MsgRequestCapabilities(PacketByteBuf buffer) { - race = Race.values()[buffer.readInt()]; + clientPreferredRace = Race.values()[buffer.readInt()]; } public MsgRequestCapabilities(Race preferredRace) { - race = preferredRace; + clientPreferredRace = preferredRace; } @Override public void toBuffer(PacketByteBuf buffer) { - buffer.writeInt(race.ordinal()); + buffer.writeInt(clientPreferredRace.ordinal()); } @Override public void handle(PacketContext context) { - System.out.println("Requesting player capabilities " + context.getPacketEnvironment()); Pony player = Pony.of(context.getPlayer()); - if (player.getSpecies().isDefault()) { - player.setSpecies(race); + Race worldDefaultRace = WorldTribeManager.forWorld((ServerWorld)player.getWorld()).getDefaultRace(); + + if (player.getSpecies().isDefault() || (player.getSpecies() == worldDefaultRace && !player.isSpeciesPersisted())) { + player.setSpecies(clientPreferredRace.isPermitted(context.getPlayer()) ? clientPreferredRace : worldDefaultRace); } - Channel.PLAYER_CAPABILITIES.send(context.getPlayer(), new MsgPlayerCapabilities(true, player)); + Channel.SERVER_PLAYER_CAPABILITIES.send(context.getPlayer(), new MsgPlayerCapabilities(true, player)); } } diff --git a/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java b/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java index 04b80eb1..ed4a6106 100644 --- a/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/projectile/MagicProjectileEntity.java @@ -293,6 +293,6 @@ public class MagicProjectileEntity extends ThrownItemEntity implements Magical, @Override public Packet createSpawnPacket() { - return Channel.SPAWN_PROJECTILE.toPacket(new MsgSpawnProjectile(this)); + return Channel.SERVER_SPAWN_PROJECTILE.toPacket(new MsgSpawnProjectile(this)); } } diff --git a/src/main/resources/assets/unicopia/textures/gui/icons.png b/src/main/resources/assets/unicopia/textures/gui/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..7739ff90e695c95deb2bfb864c1be8a3b35196bb GIT binary patch literal 38235 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 literal 0 HcmV?d00001