Skip to content

Commit

Permalink
Split sources to make everything better
Browse files Browse the repository at this point in the history
  • Loading branch information
SamB440 committed Feb 4, 2024
1 parent 4f99ea4 commit 58b3349
Show file tree
Hide file tree
Showing 97 changed files with 331 additions and 208 deletions.
11 changes: 10 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
id 'groovy'
id 'fabric-loom' version '1.4-SNAPSHOT'
id 'fabric-loom' version '1.5-SNAPSHOT'
id 'maven-publish'
}

Expand Down Expand Up @@ -42,6 +42,15 @@ sourceSets {
}

loom {
splitEnvironmentSourceSets()

mods {
"${modid}" {
sourceSet sourceSets.main
sourceSet sourceSets.client
}
}

runs {
datagen {
server()
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ org.gradle.jvmargs=-Xmx2G
# check these on https://fabricmc.net/develop/
minecraft_version=1.20.2
yarn_mappings=1.20.2+build.4
loader_version=0.15.0
loader_version=0.15.6

#Fabric api
fabric_version=0.91.1+1.20.2
fabric_version=0.91.6+1.20.2

# Mod Properties
mod_version = 1.0.6
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.convallyria.taleofkingdoms.client.packet.ClientPacketHandler;
import com.convallyria.taleofkingdoms.client.packet.both.BothSignContractPacketHandler;
import com.convallyria.taleofkingdoms.client.packet.incoming.IncomingInstanceSyncPacketHandler;
import com.convallyria.taleofkingdoms.client.packet.incoming.IncomingOpenScreenPacketHandler;
import com.convallyria.taleofkingdoms.client.packet.outgoing.OutgoingBankerInteractPacketHandler;
import com.convallyria.taleofkingdoms.client.packet.outgoing.OutgoingBuildKingdomPacket;
import com.convallyria.taleofkingdoms.client.packet.outgoing.OutgoingBuyItemPacketHandler;
Expand All @@ -19,7 +20,8 @@
import com.convallyria.taleofkingdoms.client.packet.outgoing.OutgoingHunterPacketHandler;
import com.convallyria.taleofkingdoms.client.packet.outgoing.OutgoingInnkeeperPacketHandler;
import com.convallyria.taleofkingdoms.client.packet.outgoing.OutgoingToggleSellGuiPacketHandler;
import com.convallyria.taleofkingdoms.common.listener.StartWorldListener;
import com.convallyria.taleofkingdoms.client.listener.StartWorldListener;
import com.convallyria.taleofkingdoms.server.packet.outgoing.OutgoingOpenScreenPacketHandler;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
Expand Down Expand Up @@ -91,6 +93,9 @@ private void registerPacketHandlers() {
registerHandler(new OutgoingToggleSellGuiPacketHandler());

registerHandler(new IncomingInstanceSyncPacketHandler());
registerHandler(new IncomingOpenScreenPacketHandler());

api.registerIntegratedHandler(new OutgoingOpenScreenPacketHandler());
}

protected void registerHandler(ClientPacketHandler clientPacketHandler) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.convallyria.taleofkingdoms.TaleOfKingdoms;
import com.convallyria.taleofkingdoms.TaleOfKingdomsAPI;
import com.convallyria.taleofkingdoms.client.packet.ClientPacketHandler;
import com.convallyria.taleofkingdoms.common.packet.PacketHandler;
import com.convallyria.taleofkingdoms.server.packet.ServerPacketHandler;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
Expand All @@ -17,6 +19,7 @@
public class TaleOfKingdomsClientAPI extends TaleOfKingdomsAPI {

private final Map<Identifier, ClientPacketHandler> clientPacketHandlers = new ConcurrentHashMap<>();
private final Map<Identifier, ServerPacketHandler> integratedPacketHandlers = new ConcurrentHashMap<>();

public TaleOfKingdomsClientAPI(TaleOfKingdoms mod) {
super(mod);
Expand All @@ -32,6 +35,16 @@ public void executeOnMain(Runnable runnable) {
MinecraftClient.getInstance().execute(runnable);
}

@Override
public PacketHandler getPacketHandler(Identifier packet) {
// Integrated takes precedence over client
final ServerPacketHandler possible = getIntegratedPacketHandler(packet);
if (possible == null) {
return getClientPacketHandler(packet);
}
return possible;
}

public void executeOnServer(Runnable runnable) {
MinecraftServer server = MinecraftClient.getInstance().getServer();
if (server != null) {
Expand All @@ -45,7 +58,16 @@ public ClientPacketHandler getClientPacketHandler(Identifier identifier) {
return clientPacketHandlers.get(identifier);
}

public ServerPacketHandler getIntegratedPacketHandler(Identifier identifier) {
return integratedPacketHandlers.get(identifier);
}

public void registerClientHandler(ClientPacketHandler clientPacketHandler) {
clientPacketHandlers.put(clientPacketHandler.getPacket(), clientPacketHandler);
}

// Ugh... Why are integrated servers so complex? Why can't we just unify dedicated servers to integrated ones so that everything runs as expected?
public void registerIntegratedHandler(ServerPacketHandler serverPacketHandler) {
integratedPacketHandlers.put(serverPacketHandler.getPacket(), serverPacketHandler);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.convallyria.taleofkingdoms.common.config;
package com.convallyria.taleofkingdoms.client.config;

import com.convallyria.taleofkingdoms.common.config.TaleOfKingdomsConfig;
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import me.shedaniel.autoconfig.AutoConfig;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.convallyria.taleofkingdoms.common.event;
package com.convallyria.taleofkingdoms.client.event;

import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.convallyria.taleofkingdoms.client.gui;

import com.convallyria.taleofkingdoms.TaleOfKingdoms;
import com.convallyria.taleofkingdoms.common.event.InventoryDrawCallback;
import com.convallyria.taleofkingdoms.client.event.InventoryDrawCallback;
import com.convallyria.taleofkingdoms.common.listener.Listener;
import com.convallyria.taleofkingdoms.common.world.guild.GuildPlayer;
import net.minecraft.client.MinecraftClient;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.convallyria.taleofkingdoms.TaleOfKingdoms;
import com.convallyria.taleofkingdoms.client.TaleOfKingdomsClient;
import com.convallyria.taleofkingdoms.client.translation.Translations;
import com.convallyria.taleofkingdoms.common.translation.Translations;
import com.convallyria.taleofkingdoms.common.entity.guild.BankerEntity;
import com.convallyria.taleofkingdoms.common.entity.guild.banker.BankerMethod;
import com.convallyria.taleofkingdoms.common.packet.Packets;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import com.convallyria.taleofkingdoms.client.gui.ScreenTOK;
import com.convallyria.taleofkingdoms.client.gui.generic.bar.BarColour;
import com.convallyria.taleofkingdoms.client.gui.generic.bar.ScreenBar;
import com.convallyria.taleofkingdoms.client.translation.Translations;
import com.convallyria.taleofkingdoms.common.translation.Translations;
import com.convallyria.taleofkingdoms.common.entity.EntityTypes;
import com.convallyria.taleofkingdoms.common.entity.generic.HunterEntity;
import com.convallyria.taleofkingdoms.common.entity.guild.GuildMasterEntity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.convallyria.taleofkingdoms.TaleOfKingdomsAPI;
import com.convallyria.taleofkingdoms.client.TaleOfKingdomsClientAPI;
import com.convallyria.taleofkingdoms.client.gui.ScreenTOK;
import com.convallyria.taleofkingdoms.client.translation.Translations;
import com.convallyria.taleofkingdoms.common.translation.Translations;
import com.convallyria.taleofkingdoms.common.entity.guild.InnkeeperEntity;
import com.convallyria.taleofkingdoms.common.packet.Packets;
import com.convallyria.taleofkingdoms.common.utils.BlockUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.convallyria.taleofkingdoms.TaleOfKingdoms;
import com.convallyria.taleofkingdoms.client.gui.entity.citybuilder.confirm.ConfirmBuildKingdomGui;
import com.convallyria.taleofkingdoms.client.translation.Translations;
import com.convallyria.taleofkingdoms.common.translation.Translations;
import com.convallyria.taleofkingdoms.common.entity.guild.CityBuilderEntity;
import com.convallyria.taleofkingdoms.common.world.ConquestInstance;
import com.convallyria.taleofkingdoms.common.world.guild.GuildPlayer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.convallyria.taleofkingdoms.client.gui.entity.citybuilder;

import com.convallyria.taleofkingdoms.TaleOfKingdoms;
import com.convallyria.taleofkingdoms.client.translation.Translations;
import com.convallyria.taleofkingdoms.common.translation.Translations;
import com.convallyria.taleofkingdoms.common.entity.guild.CityBuilderEntity;
import com.convallyria.taleofkingdoms.common.kingdom.PlayerKingdom;
import com.convallyria.taleofkingdoms.common.kingdom.builds.BuildCosts;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.convallyria.taleofkingdoms.TaleOfKingdoms;
import com.convallyria.taleofkingdoms.client.TaleOfKingdomsClient;
import com.convallyria.taleofkingdoms.client.gui.generic.bar.BarWidget;
import com.convallyria.taleofkingdoms.client.translation.Translations;
import com.convallyria.taleofkingdoms.common.translation.Translations;
import com.convallyria.taleofkingdoms.common.entity.guild.CityBuilderEntity;
import com.convallyria.taleofkingdoms.common.kingdom.PlayerKingdom;
import com.convallyria.taleofkingdoms.common.kingdom.builds.BuildCosts;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.convallyria.taleofkingdoms.client.gui.entity.shop.widget.ShopScreenInterface;
import com.convallyria.taleofkingdoms.client.gui.shop.Shop;
import com.convallyria.taleofkingdoms.client.gui.shop.ShopPage;
import com.convallyria.taleofkingdoms.client.translation.Translations;
import com.convallyria.taleofkingdoms.common.translation.Translations;
import com.convallyria.taleofkingdoms.client.utils.ShopBuyUtil;
import com.convallyria.taleofkingdoms.common.entity.ShopEntity;
import com.convallyria.taleofkingdoms.common.shop.ShopItem;
Expand All @@ -21,7 +21,6 @@
import io.wispforest.owo.ui.core.Color;
import io.wispforest.owo.ui.core.Positioning;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
Expand Down Expand Up @@ -67,7 +66,7 @@ protected void build(FlowLayout rootComponent) {
final FlowLayout inner = rootComponent.childById(FlowLayout.class, "inner");
inner.childById(ButtonComponent.class, "buy-button").onPress(button -> {
int count = 1;
if (Screen.hasShiftDown()) count = 16;
if (hasShiftDown()) count = 16;
ShopBuyUtil.buyItem(instance, player, selectedItem, count, entity);
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.convallyria.taleofkingdoms.TaleOfKingdomsAPI;
import com.convallyria.taleofkingdoms.client.TaleOfKingdomsClient;
import com.convallyria.taleofkingdoms.client.gui.ScreenTOK;
import com.convallyria.taleofkingdoms.client.translation.Translations;
import com.convallyria.taleofkingdoms.common.translation.Translations;
import com.convallyria.taleofkingdoms.common.event.tok.KingdomStartCallback;
import com.convallyria.taleofkingdoms.common.schematic.Schematic;
import com.convallyria.taleofkingdoms.common.world.ConquestInstance;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.convallyria.taleofkingdoms.common.listener;
package com.convallyria.taleofkingdoms.client.listener;

import com.convallyria.taleofkingdoms.TaleOfKingdoms;
import com.convallyria.taleofkingdoms.TaleOfKingdomsAPI;
Expand All @@ -9,10 +9,13 @@
import com.convallyria.taleofkingdoms.common.event.RecipesUpdatedCallback;
import com.convallyria.taleofkingdoms.common.event.WorldSessionStartCallback;
import com.convallyria.taleofkingdoms.common.event.WorldStopCallback;
import com.convallyria.taleofkingdoms.common.listener.Listener;
import com.convallyria.taleofkingdoms.common.world.ConquestInstance;
import com.google.gson.Gson;
import com.google.gson.JsonIOException;
import com.google.gson.JsonSyntaxException;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.text.Text;
Expand All @@ -25,6 +28,7 @@
import java.util.ArrayList;
import java.util.List;

@Environment(EnvType.CLIENT)
public class StartWorldListener extends Listener {

private String worldName;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.convallyria.taleofkingdoms.mixin.client;
package com.convallyria.taleofkingdoms.client.mixin;

import com.convallyria.taleofkingdoms.common.event.InventoryDrawCallback;
import com.convallyria.taleofkingdoms.client.event.InventoryDrawCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.convallyria.taleofkingdoms.mixin.client;
package com.convallyria.taleofkingdoms.client.mixin;

import com.convallyria.taleofkingdoms.common.event.RecipesUpdatedCallback;
import net.minecraft.client.network.ClientPlayNetworkHandler;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.convallyria.taleofkingdoms.mixin.structure;
package com.convallyria.taleofkingdoms.client.mixin.structure;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.convallyria.taleofkingdoms.TaleOfKingdoms;
import com.convallyria.taleofkingdoms.client.packet.ClientPacketHandler;
import com.convallyria.taleofkingdoms.client.translation.Translations;
import com.convallyria.taleofkingdoms.common.translation.Translations;
import com.convallyria.taleofkingdoms.common.packet.Packets;
import com.convallyria.taleofkingdoms.common.packet.context.PacketContext;
import com.convallyria.taleofkingdoms.common.world.guild.GuildPlayer;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
package com.convallyria.taleofkingdoms.client.packet.incoming;

import com.convallyria.taleofkingdoms.TaleOfKingdoms;
import com.convallyria.taleofkingdoms.client.gui.entity.BankerScreen;
import com.convallyria.taleofkingdoms.client.gui.entity.BlacksmithScreen;
import com.convallyria.taleofkingdoms.client.gui.entity.GuildMasterScreen;
import com.convallyria.taleofkingdoms.client.gui.entity.InnkeeperScreen;
import com.convallyria.taleofkingdoms.client.gui.entity.citybuilder.CityBuilderBeginGui;
import com.convallyria.taleofkingdoms.client.gui.entity.citybuilder.CityBuilderTierOneGui;
import com.convallyria.taleofkingdoms.client.gui.entity.kingdom.ForemanScreen;
import com.convallyria.taleofkingdoms.client.gui.entity.kingdom.ItemShopScreen;
import com.convallyria.taleofkingdoms.client.gui.entity.kingdom.StockMarketScreen;
import com.convallyria.taleofkingdoms.client.gui.entity.shop.FoodShopScreen;
import com.convallyria.taleofkingdoms.client.packet.ClientPacketHandler;
import com.convallyria.taleofkingdoms.common.entity.guild.BankerEntity;
import com.convallyria.taleofkingdoms.common.entity.guild.BlacksmithEntity;
import com.convallyria.taleofkingdoms.common.entity.guild.CityBuilderEntity;
import com.convallyria.taleofkingdoms.common.entity.guild.FoodShopEntity;
import com.convallyria.taleofkingdoms.common.entity.guild.GuildMasterEntity;
import com.convallyria.taleofkingdoms.common.entity.guild.InnkeeperEntity;
import com.convallyria.taleofkingdoms.common.entity.kingdom.ForemanEntity;
import com.convallyria.taleofkingdoms.common.entity.kingdom.ItemShopEntity;
import com.convallyria.taleofkingdoms.common.entity.kingdom.StockMarketEntity;
import com.convallyria.taleofkingdoms.common.packet.Packets;
import com.convallyria.taleofkingdoms.common.packet.context.PacketContext;
import com.convallyria.taleofkingdoms.common.world.ConquestInstance;
import com.convallyria.taleofkingdoms.server.packet.outgoing.OutgoingOpenScreenPacketHandler;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.text.Text;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Optional;

public final class IncomingOpenScreenPacketHandler extends ClientPacketHandler {

public IncomingOpenScreenPacketHandler() {
super(Packets.OPEN_CLIENT_SCREEN);
}

@Override
public void handleIncomingPacket(PacketContext context, PacketByteBuf attachedData) {
final OutgoingOpenScreenPacketHandler.ScreenTypes type = attachedData.readEnumConstant(OutgoingOpenScreenPacketHandler.ScreenTypes.class);
final int entityId = attachedData.readInt();
context.taskQueue().execute(() -> {
MinecraftClient client = (MinecraftClient) context.taskQueue();
if (TaleOfKingdoms.CONFIG.mainConfig.developerMode) {
final String text = "Received open screen, " + type;
TaleOfKingdoms.LOGGER.info(text);
if (client.player != null) client.player.sendMessage(Text.literal(text));
}

if (client.player == null) return;

final Entity entityById = client.world.getEntityById(entityId);
if (entityById == null) {
TaleOfKingdoms.LOGGER.warn("Desync! " + entityId + " was not found.");
return;
}

final Optional<ConquestInstance> instance = TaleOfKingdoms.getAPI().getConquestInstanceStorage().mostRecentInstance();
if (instance.isEmpty()) {
TaleOfKingdoms.LOGGER.warn("Desync! Conquest instance was not found.");
return;
}

Screen screen = switch (type) {
case GUILD_MASTER -> new GuildMasterScreen(client.player, (GuildMasterEntity) entityById, instance.get());
case BLACKSMITH -> new BlacksmithScreen(client.player, (BlacksmithEntity) entityById, instance.get());
case INNKEEPER -> new InnkeeperScreen(client.player, (InnkeeperEntity) entityById, instance.get());
case BANKER -> new BankerScreen(client.player, (BankerEntity) entityById, instance.get());
case FOOD_SHOP -> new FoodShopScreen(client.player, (FoodShopEntity) entityById, instance.get());
case ITEM_SHOP -> new ItemShopScreen(client.player, (ItemShopEntity) entityById, instance.get());
case CITY_BUILDER_BEGIN -> new CityBuilderBeginGui(client.player, (CityBuilderEntity) entityById, instance.get());
case CITY_BUILDER_TIER_ONE -> new CityBuilderTierOneGui(client.player, (CityBuilderEntity) entityById, instance.get());
case STOCK_MARKET -> new StockMarketScreen(client.player, (StockMarketEntity) entityById, instance.get());
case FOREMAN -> new ForemanScreen(client.player, (ForemanEntity) entityById, instance.get());
};

client.setScreen(screen);
});
}

@Override
public void handleOutgoingPacket(@NotNull PlayerEntity player, @Nullable Object... data) {
throw new IllegalStateException("Not supported");
}
}
13 changes: 13 additions & 0 deletions src/client/resources/taleofkingdoms.client.mixins.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"required": true,
"package": "com.convallyria.taleofkingdoms.client.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
"InventoryDrawEvent",
"RecipesUpdatedEvent",
"structure.StructureBlockRenderMixin"
],
"injectors": {
"defaultRequire": 1
}
}
Loading

0 comments on commit 58b3349

Please sign in to comment.