diff --git a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/client/IClientFortressManager.java b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/client/IClientFortressManager.java index 5faff513..cd9530c0 100644 --- a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/client/IClientFortressManager.java +++ b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/client/IClientFortressManager.java @@ -36,8 +36,7 @@ void sync( FortressGamemode gamemode, boolean connectedToTheServer, int maxColonistsCount, - int reservedColonistCount, - boolean borderEnabled + int reservedColonistCount ); void tick(IHoveredBlockProvider fortressClient); @@ -79,8 +78,6 @@ void sync( List getBuildingHealths(); - boolean isBorderEnabled(); - void openRepairBuildingScreen(UUID buildingId, Map blocksToRepair); IClientResourceManager getResourceManager(); diff --git a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/client/IClientManagersProvider.java b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/client/IClientManagersProvider.java index 9469f4d2..b2a7f13c 100644 --- a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/client/IClientManagersProvider.java +++ b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/client/IClientManagersProvider.java @@ -3,7 +3,6 @@ import net.remmintan.mods.minefortress.core.interfaces.blueprints.IClientBlueprintManager; import net.remmintan.mods.minefortress.core.interfaces.combat.IClientPawnsSelectionManager; import net.remmintan.mods.minefortress.core.interfaces.combat.ITargetedSelectionManager; -import net.remmintan.mods.minefortress.core.interfaces.infuence.IClientInfluenceManager; import net.remmintan.mods.minefortress.core.interfaces.selections.ISelectionManager; import net.remmintan.mods.minefortress.core.interfaces.tasks.IAreasClientManager; @@ -12,7 +11,6 @@ public interface IClientManagersProvider { IAreasClientManager get_AreasClientManager(); IClientBlueprintManager get_BlueprintManager(); IClientFortressManager get_ClientFortressManager(); - IClientInfluenceManager get_InfluenceManager(); IClientPawnsSelectionManager get_PawnsSelectionManager(); default ISelectedColonistProvider getSelectedColonistProvider() { final var pawnsSelectionManager = get_PawnsSelectionManager(); diff --git a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/ICaptureTask.java b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/ICaptureTask.java deleted file mode 100644 index e96b6193..00000000 --- a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/ICaptureTask.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.remmintan.mods.minefortress.core.interfaces.infuence; - -import net.minecraft.util.math.BlockPos; - -import java.util.UUID; - -public interface ICaptureTask { - UUID taskId(); - - BlockPos pos(); -} diff --git a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/IClientInfluenceManager.java b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/IClientInfluenceManager.java deleted file mode 100644 index f6264565..00000000 --- a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/IClientInfluenceManager.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.remmintan.mods.minefortress.core.interfaces.infuence; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.border.WorldBorder; -import net.remmintan.mods.minefortress.core.interfaces.blueprints.IBlockDataProvider; -import net.remmintan.mods.minefortress.core.interfaces.blueprints.IStructureBlockData; -import net.remmintan.mods.minefortress.core.interfaces.blueprints.IStructureRenderInfoProvider; - -import java.util.List; -import java.util.Optional; - -public interface IClientInfluenceManager extends IStructureRenderInfoProvider { - void tick(); - IBlockDataProvider getBlockDataProvider(); - - Optional getFortressBorder(); - - void startSelectingInfluencePosition(); - - void cancelSelectingInfluencePosition(); - - void sync(List positions); - - void selectInfluencePosition(); - - IInfluencePosStateHolder getInfluencePosStateHolder(); - - void sendCaptureTaskPacket(BlockPos pos, IStructureBlockData blockData); -} diff --git a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/IInfluencePosStateHolder.java b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/IInfluencePosStateHolder.java deleted file mode 100644 index bda670ea..00000000 --- a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/IInfluencePosStateHolder.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.remmintan.mods.minefortress.core.interfaces.infuence; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.border.WorldBorderStage; - -public interface IInfluencePosStateHolder { - void syncNewPos(BlockPos newPos); - - void setCorrect(WorldBorderStage state); - - WorldBorderStage getWorldBorderStage(); - - void reset(); -} diff --git a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/IServerInfluenceManager.java b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/IServerInfluenceManager.java deleted file mode 100644 index cb0c66e9..00000000 --- a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/infuence/IServerInfluenceManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.remmintan.mods.minefortress.core.interfaces.infuence; - -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.math.BlockPos; -import net.remmintan.mods.minefortress.core.interfaces.blueprints.IBlockDataProvider; -import net.remmintan.mods.minefortress.core.interfaces.server.IServerManager; - -import java.util.UUID; - -public interface IServerInfluenceManager extends IServerManager { - void addCapturePosition(UUID taskId, BlockPos pos, ServerPlayerEntity player); - void checkNewPositionAndUpdateClientState(BlockPos pos, ServerPlayerEntity player); - ICaptureTask getCaptureTask(); - void addInfluencePosition(BlockPos pos); - void failCaptureTask(ICaptureTask task); - IBlockDataProvider getBlockDataProvider(); - - void addCenterAsInfluencePosition(); - void sync(); - -} diff --git a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IFortressModServerManager.java b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IFortressModServerManager.java index 87cc4bac..2b75ff15 100644 --- a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IFortressModServerManager.java +++ b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IFortressModServerManager.java @@ -12,11 +12,8 @@ public interface IFortressModServerManager { IServerManagersProvider getManagersProvider(UUID id); IServerFortressManager getFortressManager(ServerPlayerEntity player); IServerFortressManager getFortressManager(UUID id); - boolean isBorderEnabled(); void save(); void load(); - - void load(boolean border); void tick(PlayerManager manager); Optional findReachableFortress(BlockPos pos, double reachRange); } diff --git a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IServerFortressManager.java b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IServerFortressManager.java index 16ed878d..6d218cad 100644 --- a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IServerFortressManager.java +++ b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IServerFortressManager.java @@ -18,10 +18,9 @@ import java.util.UUID; public interface IServerFortressManager { - void setBorderVisibilityState(boolean borderEnabled); void scheduleSync(); - void syncOnJoin(boolean borderEnabled); + void syncOnJoin(); IPawnNameGenerator getNameGenerator(); void replaceColonistWithTypedPawn(LivingEntity colonist, String warriorId, EntityType entityType); diff --git a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IServerManagersProvider.java b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IServerManagersProvider.java index f98c3db8..7aad07a8 100644 --- a/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IServerManagersProvider.java +++ b/src/core/java/net/remmintan/mods/minefortress/core/interfaces/server/IServerManagersProvider.java @@ -4,7 +4,6 @@ import net.remmintan.mods.minefortress.core.interfaces.automation.server.IServerAutomationAreaManager; import net.remmintan.mods.minefortress.core.interfaces.blueprints.buildings.IServerBuildingsManager; import net.remmintan.mods.minefortress.core.interfaces.combat.IServerFightManager; -import net.remmintan.mods.minefortress.core.interfaces.infuence.IServerInfluenceManager; import net.remmintan.mods.minefortress.core.interfaces.professions.IServerProfessionsManager; import net.remmintan.mods.minefortress.core.interfaces.resources.IServerResourceManager; import net.remmintan.mods.minefortress.core.interfaces.tasks.IServerTaskManager; @@ -19,9 +18,6 @@ public interface IServerManagersProvider { default IServerAutomationAreaManager getAutomationAreaManager() { return getManager(IServerAutomationAreaManager.class); } - default IServerInfluenceManager getInfluenceManager() { - return getManager(IServerInfluenceManager.class); - } default IServerProfessionsManager getProfessionsManager() { return getManager(IServerProfessionsManager.class); } diff --git a/src/main/java/org/minefortress/blueprints/manager/BaseClientStructureManager.java b/src/main/java/org/minefortress/blueprints/manager/BaseClientStructureManager.java index 7fc6e400..61781c4c 100644 --- a/src/main/java/org/minefortress/blueprints/manager/BaseClientStructureManager.java +++ b/src/main/java/org/minefortress/blueprints/manager/BaseClientStructureManager.java @@ -9,7 +9,6 @@ import net.remmintan.mods.minefortress.core.interfaces.blueprints.*; import net.remmintan.mods.minefortress.core.interfaces.client.IClientManagersProvider; import org.jetbrains.annotations.Nullable; -import org.minefortress.utils.ModUtils; import java.util.Map; import java.util.Optional; @@ -54,10 +53,6 @@ private void checkNotEnoughResources() { } } - protected boolean isEnoughResources() { - return enoughResources; - } - private void checkCantBuild() { if(!enoughResources) { cantBuild = true; @@ -72,13 +67,11 @@ private void checkCantBuild() { .collect(Collectors.toSet()); final int floorLevel = getSelectedStructure().getFloorLevel(); - final var fortressBorder = ModUtils.getInfluenceManager().getFortressBorder(); final boolean blueprintPartInTheSurface = blueprintDataPositions.stream() .filter(blockPos -> blockPos.getY() >= floorLevel) .map(pos -> pos.add(structureBuildPos.down(floorLevel))) - .anyMatch(pos -> !BuildingHelper.canPlaceBlock(client.world, pos) || - fortressBorder.map(border -> !border.contains(pos)).orElse(false)); + .anyMatch(pos -> !BuildingHelper.canPlaceBlock(client.world, pos)); final boolean blueprintPartInTheAir = blueprintDataPositions.stream() .filter(blockPos -> { @@ -86,8 +79,7 @@ private void checkCantBuild() { return y<=floorLevel; }) .map(pos -> pos.add(structureBuildPos.down(floorLevel))) - .anyMatch(pos -> BuildingHelper.canPlaceBlock(client.world, pos.down()) || - fortressBorder.map(border -> !border.contains(pos)).orElse(false)); + .anyMatch(pos -> BuildingHelper.canPlaceBlock(client.world, pos.down())); cantBuild = blueprintPartInTheSurface || blueprintPartInTheAir; } diff --git a/src/main/java/org/minefortress/commands/BorderToggleCommand.java b/src/main/java/org/minefortress/commands/BorderToggleCommand.java deleted file mode 100644 index 0bdac477..00000000 --- a/src/main/java/org/minefortress/commands/BorderToggleCommand.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.minefortress.commands; - -import com.mojang.brigadier.CommandDispatcher; -import com.mojang.brigadier.arguments.BoolArgumentType; -import net.minecraft.server.command.ServerCommandSource; - -import static net.minecraft.server.command.CommandManager.argument; -import static net.minecraft.server.command.CommandManager.literal; - -public class BorderToggleCommand extends MineFortressCommand { - @Override - public void register(CommandDispatcher dispatcher) { - dispatcher.register( - literal("fortress").then( - literal("border").then(argument("enabled", BoolArgumentType.bool()) - .executes(context -> { - final var fortressServerManager = getServerFortressManager(context); - final var borderEnabled = BoolArgumentType.getBool(context, "enabled"); - fortressServerManager.setBorderVisibilityState(borderEnabled); - return 1; - }) - ) - ) - ); - } - -} diff --git a/src/main/java/org/minefortress/commands/CommandsManager.java b/src/main/java/org/minefortress/commands/CommandsManager.java index e3a73399..9f4e74f2 100644 --- a/src/main/java/org/minefortress/commands/CommandsManager.java +++ b/src/main/java/org/minefortress/commands/CommandsManager.java @@ -10,7 +10,6 @@ public class CommandsManager { private static final List commands = Arrays.asList( new DebugItemsCommand(), new DebugPawnsCommand(), - new BorderToggleCommand(), new SpawnPawnsCommand(), new WarriorsCommand() ); diff --git a/src/main/java/org/minefortress/entity/WarriorPawn.java b/src/main/java/org/minefortress/entity/WarriorPawn.java index 7dcb8f0a..c4fc31ef 100644 --- a/src/main/java/org/minefortress/entity/WarriorPawn.java +++ b/src/main/java/org/minefortress/entity/WarriorPawn.java @@ -15,15 +15,14 @@ import net.minecraft.world.LocalDifficulty; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.World; +import net.remmintan.mods.minefortress.core.interfaces.entities.pawns.IProfessional; +import net.remmintan.mods.minefortress.core.interfaces.entities.pawns.IWarrior; import org.jetbrains.annotations.Nullable; import org.minefortress.entity.ai.goal.EatGoal; import org.minefortress.entity.ai.goal.SelectTargetToAttackGoal; -import org.minefortress.entity.ai.goal.warrior.CapturePositionGoal; import org.minefortress.entity.ai.goal.warrior.FollowLivingEntityGoal; import org.minefortress.entity.ai.goal.warrior.MeleeAttackGoal; import org.minefortress.entity.ai.goal.warrior.MoveToBlockGoal; -import net.remmintan.mods.minefortress.core.interfaces.entities.pawns.IProfessional; -import net.remmintan.mods.minefortress.core.interfaces.entities.pawns.IWarrior; import org.minefortress.professions.ServerProfessionManager; public final class WarriorPawn extends TargetedPawn implements IProfessional, IWarrior { @@ -55,7 +54,6 @@ protected void initGoals() { this.goalSelector.add(2, new MoveToBlockGoal(this)); this.goalSelector.add(2, new FollowLivingEntityGoal(this)); this.goalSelector.add(3, new EatGoal(this)); - this.goalSelector.add(3, new CapturePositionGoal(this)); this.goalSelector.add(9, new LookAtEntityGoal(this, LivingEntity.class, 4f)); this.goalSelector.add(10, new LookAroundGoal(this)); diff --git a/src/main/java/org/minefortress/entity/ai/goal/warrior/CapturePositionGoal.java b/src/main/java/org/minefortress/entity/ai/goal/warrior/CapturePositionGoal.java deleted file mode 100644 index 13fff6e4..00000000 --- a/src/main/java/org/minefortress/entity/ai/goal/warrior/CapturePositionGoal.java +++ /dev/null @@ -1,118 +0,0 @@ -package org.minefortress.entity.ai.goal.warrior; - -import net.minecraft.entity.ai.goal.Goal; -import net.minecraft.util.BlockRotation; -import net.remmintan.mods.minefortress.core.interfaces.server.IServerFortressManager; -import org.jetbrains.annotations.Nullable; -import net.remmintan.mods.minefortress.core.interfaces.blueprints.BlueprintDataLayer; -import org.minefortress.entity.WarriorPawn; -import net.remmintan.mods.minefortress.core.interfaces.entities.pawns.controls.IBaritoneMoveControl; -import net.remmintan.mods.minefortress.core.interfaces.infuence.ICaptureTask; -import net.remmintan.mods.minefortress.core.interfaces.resources.IServerResourceManager; -import net.remmintan.mods.minefortress.networking.helpers.FortressChannelNames; -import net.remmintan.mods.minefortress.networking.helpers.FortressServerNetworkHelper; -import net.remmintan.mods.minefortress.networking.s2c.ClientboundTaskExecutedPacket; - -import java.util.EnumSet; - -public class CapturePositionGoal extends Goal { - - private final WarriorPawn pawn; - @Nullable - private ICaptureTask target; - - public CapturePositionGoal(WarriorPawn pawn) { - this.pawn = pawn; - this.setControls(EnumSet.of(Control.MOVE, Control.JUMP)); - } - @Override - public boolean canStart() { - final var fsmOpt = pawn.getManagersProvider(); - if(fsmOpt.isEmpty()) - return false; - final var fsm = fsmOpt.get(); - final var influenceManager = fsm.getInfluenceManager(); - target = influenceManager.getCaptureTask(); - return target != null; - } - - @Override - public void start() { - if(target == null) return; - pawn.resetTargets(); - final var moveControl = pawn.getFortressMoveControl(); - moveControl.moveTo(target.pos()); - } - - @Override - public void tick() { - if(target == null) return; - final var moveControl = pawn.getFortressMoveControl(); - if(moveControl.isStuck()) { - teleportToGoal(moveControl); - } - if(this.hasReachedTarget()) { - finish(); - } - } - - private void teleportToGoal(IBaritoneMoveControl moveControl) { - if(target == null) return; - moveControl.reset(); - final var pos = target.pos(); - pawn.teleport(pos.getX(), pos.getY()+1, pos.getZ()); - } - - private void finish() { - if(target == null) return; - pawn.getManagersProvider() - .ifPresent(it -> { - final var resourceManager = (IServerResourceManager)it.getResourceManager(); - final var influenceManager = it.getInfluenceManager(); - final var flagDataProvider = influenceManager.getBlockDataProvider(); - final var influenceFlag = flagDataProvider.getBlockData("influence_flag", BlockRotation.NONE); - final var targetPos = target.pos(); - influenceFlag.getLayer(BlueprintDataLayer.GENERAL) - .forEach((pos, state) -> { - final var realpos = pos.add(targetPos); - pawn.getWorld().setBlockState(realpos, state, 3); - if(pawn.getServerFortressManager().map(IServerFortressManager::isSurvival).orElse(false)) { - resourceManager.removeReservedItem(target.taskId(), state.getBlock().asItem()); - } - }); - influenceManager.addInfluencePosition(target.pos()); - }); - - pawn.getMasterPlayer() - .ifPresent(it -> { - final var packet = new ClientboundTaskExecutedPacket(target.taskId()); - FortressServerNetworkHelper.send(it, FortressChannelNames.FINISH_TASK, packet); - }); - - target = null; - } - - @Override - public boolean shouldContinue() { - return target != null; - } - - @Override - public boolean canStop() { - return true; - } - - @Override - public void stop() { - if(target != null) { - pawn.getManagersProvider() - .ifPresent(it -> it.getInfluenceManager().failCaptureTask(target)); - target = null; - } - pawn.getFortressMoveControl().reset(); - } - - private boolean hasReachedTarget() { - return target != null && target.pos().isWithinDistance(pawn.getPos(), pawn.getTargetMoveRange() + 1); - } -} diff --git a/src/main/java/org/minefortress/fight/influence/BaseFortressBorderHolder.java b/src/main/java/org/minefortress/fight/influence/BaseFortressBorderHolder.java deleted file mode 100644 index f77fc12f..00000000 --- a/src/main/java/org/minefortress/fight/influence/BaseFortressBorderHolder.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.minefortress.fight.influence; - -import net.minecraft.util.math.BlockPos; - -public class BaseFortressBorderHolder { - - public static final int FORTRESS_BORDER_SIZE = 64; - - static BlockPos alignToAGrid(BlockPos center) { - final var x = center.getX(); - final var z = center.getZ(); - final var xSign = Math.signum(x); - final var zSign = Math.signum(z); - final var nonZeroSignX = xSign == 0 ? 1 : xSign; - final var nonZeroSignZ = zSign == 0 ? 1 : zSign; - final var adjustedX = (int) (x - x % FORTRESS_BORDER_SIZE + nonZeroSignX * FORTRESS_BORDER_SIZE / 2f); - final var adjustedZ = (int) (z - z % FORTRESS_BORDER_SIZE + nonZeroSignZ * FORTRESS_BORDER_SIZE / 2f); - return new BlockPos(adjustedX, 0, adjustedZ); - } - -} diff --git a/src/main/java/org/minefortress/fight/influence/ClientFortressBorderHolder.java b/src/main/java/org/minefortress/fight/influence/ClientFortressBorderHolder.java deleted file mode 100644 index 21714209..00000000 --- a/src/main/java/org/minefortress/fight/influence/ClientFortressBorderHolder.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.minefortress.fight.influence; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.border.WorldBorder; -import org.jetbrains.annotations.NotNull; -import org.minefortress.fortress.FortressBorder; - -import java.util.*; - -public class ClientFortressBorderHolder extends BaseFortressBorderHolder { - private final ClientInfluenceManager clientInfluenceManager; - private final List allInfluencePositions = new ArrayList<>(); - - private WorldBorder fortressBorder; - - public ClientFortressBorderHolder(ClientInfluenceManager clientInfluenceManager) { - this.clientInfluenceManager = clientInfluenceManager; - } - - public void syncInfluencePositions(List positions) { - allInfluencePositions.clear(); - allInfluencePositions.addAll(positions); - rebuildFortressBorder(); - } - - public Optional getFortressBorder() { - final var selecting = clientInfluenceManager.isSelecting(); - if(selecting) { - return clientInfluenceManager - .getStructureRenderPos() - .flatMap(it -> getWorldBorder(Collections.singletonList(it), true)); - } - return Optional.ofNullable(fortressBorder); - } - - private void rebuildFortressBorder() { - final var positionsForBorder = new ArrayList<>(allInfluencePositions); - fortressBorder = getWorldBorder(positionsForBorder).orElse(null); - } - - @NotNull - private static Optional getWorldBorder(List pos) { - return getWorldBorder(pos, false); - } - - @NotNull - private static Optional getWorldBorder(List positions, boolean dynamicState) { - if(positions != null && !positions.isEmpty()) { - final var posQueue = new ArrayDeque<>(positions); - - BlockPos mainPos = posQueue.poll(); - if(mainPos == null) { - return Optional.empty(); - } - final var border = new FortressBorder(); - createBorder(border, mainPos); - if (dynamicState) { - border.enableDynamicStage(); - } - posQueue.forEach(pos -> border.addAdditionalBorder(createBorder(pos))); - - return Optional.of(border); - } else { - return Optional.empty(); - } - } - - private static WorldBorder createBorder(BlockPos center) { - final var border = new WorldBorder(); - createBorder(border, center); - return border; - } - - private static void createBorder(WorldBorder border, BlockPos center) { - final BlockPos adjustedPos = alignToAGrid(center); - border.setCenter(adjustedPos.getX(), adjustedPos.getZ()); - border.setSize(FORTRESS_BORDER_SIZE); - } -} diff --git a/src/main/java/org/minefortress/fight/influence/ClientInfluenceManager.java b/src/main/java/org/minefortress/fight/influence/ClientInfluenceManager.java deleted file mode 100644 index f9cde332..00000000 --- a/src/main/java/org/minefortress/fight/influence/ClientInfluenceManager.java +++ /dev/null @@ -1,225 +0,0 @@ -package org.minefortress.fight.influence; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.text.Text; -import net.minecraft.util.BlockRotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.border.WorldBorder; -import net.minecraft.world.border.WorldBorderStage; -import net.remmintan.mods.minefortress.core.TaskType; -import net.remmintan.mods.minefortress.core.dtos.buildings.BlueprintMetadata; -import net.remmintan.mods.minefortress.core.interfaces.blueprints.*; -import net.remmintan.mods.minefortress.core.interfaces.client.IClientFortressManager; -import net.remmintan.mods.minefortress.core.interfaces.infuence.IClientInfluenceManager; -import net.remmintan.mods.minefortress.core.interfaces.infuence.IInfluencePosStateHolder; -import net.remmintan.mods.minefortress.core.interfaces.professions.ProfessionsHireTypes; -import net.remmintan.mods.minefortress.core.utils.CoreModUtils; -import net.remmintan.mods.minefortress.networking.c2s.C2SCaptureInfluencePositionPacket; -import net.remmintan.mods.minefortress.networking.c2s.C2SUpdateNewInfluencePosition; -import net.remmintan.mods.minefortress.networking.helpers.FortressClientNetworkHelper; -import org.minefortress.blueprints.manager.BaseClientStructureManager; -import org.minefortress.blueprints.manager.BlueprintRotation; -import org.minefortress.utils.ModUtils; - -import java.util.*; - -public class ClientInfluenceManager extends BaseClientStructureManager implements IClientInfluenceManager { - - private static final BlueprintMetadata INFLUENCE_FLAG_METADATA = new BlueprintMetadata("Influence Flag", "influence_flag", 0, 0, BlueprintGroup.DECORATION); - - private final InfluenceFlagBlockDataProvider blockDataProvider = new InfluenceFlagBlockDataProvider(); - private final ClientFortressBorderHolder clientFortressBorderHolder = new ClientFortressBorderHolder(this); - private final IInfluencePosStateHolder influencePosStateHolder = new InfluencePosStateHolder(); - - private final IBlueprintRotation selectedRotation = new BlueprintRotation(); - - private boolean isSelectingInfluencePosition = false; - - public ClientInfluenceManager(MinecraftClient client) { - super(client); - } - - public static boolean influenceEnabled() { - final var fortressClientManager = ModUtils.getFortressClientManager(); - return fortressClientManager.isSurvival() && fortressClientManager.isBorderEnabled(); - } - - @Override - public void tick() { - super.tick(); - influencePosStateHolder.syncNewPos(getStructureBuildPos()); - } - - @Override - public Optional getFortressBorder() { - if(influenceEnabled()) { - return clientFortressBorderHolder.getFortressBorder(); - } else { - return Optional.ofNullable(MinecraftClient.getInstance().world) - .map(ClientWorld::getWorldBorder); - } - } - - @Override - public void startSelectingInfluencePosition() { - isSelectingInfluencePosition = true; - } - - @Override - public void cancelSelectingInfluencePosition() { - super.reset(); - isSelectingInfluencePosition = false; - influencePosStateHolder.reset(); - } - - @Override - public void sync(List positions) { - clientFortressBorderHolder.syncInfluencePositions(positions); - } - - @Override - public void selectInfluencePosition() { - isSelectingInfluencePosition = false; - final var pos = getStructureBuildPos(); - if(pos != null) { - final var blockData = blockDataProvider.getBlockData(INFLUENCE_FLAG_METADATA.getId(), BlockRotation.NONE); - final var fortressClientManager = ModUtils.getFortressClientManager(); - - String stageMessage = switch (influencePosStateHolder.getWorldBorderStage()) { - case STATIONARY -> "This influence point is already captured!"; - case SHRINKING -> "This influence point is too farm away from your fortress!"; - default -> null; - }; - - if(stageMessage != null) { - final var message = Text.of(stageMessage); - MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(message); - super.reset(); - return; - } - - if(!isEnoughResources()) { - final var msg = "You don't have the required items to capture this influence point!"; - final var message = Text.of(msg); - MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(message); - super.reset(); - return; - } - - boolean hasAnyWarrior = isHasAnyWarrior(fortressClientManager); - if(!hasAnyWarrior) { - final var message = Text.of("You don't have any warriors to capture this influence point!"); - MinecraftClient.getInstance().inGameHud.getChatHud().addMessage(message); - super.reset(); - return; - } - - sendCaptureTaskPacket(pos, blockData); - } - influencePosStateHolder.reset(); - } - - private static boolean isHasAnyWarrior(IClientFortressManager clientFortressManager) { - final var professionManager = clientFortressManager.getProfessionManager(); - final var warriorIds = ProfessionsHireTypes.WARRIORS.getIds(); - var hasAnyWarrior = false; - for (String warriorId : warriorIds) { - if(hasAnyWarrior) break; - hasAnyWarrior = professionManager.hasProfession(warriorId); - } - return hasAnyWarrior; - } - - @Override - public void sendCaptureTaskPacket(BlockPos pos, IStructureBlockData blockData) { - final var taskId = UUID.randomUUID(); - CoreModUtils.getClientTasksHolder() - .ifPresent(it -> { - final var blocks = blockData.getLayer(BlueprintDataLayer.GENERAL) - .entrySet() - .stream() - .filter(e -> e.getValue() != null && !e.getValue().isAir()) - .map(Map.Entry::getKey) - .filter(Objects::nonNull) - .map(BlockPos::toImmutable) - .map(p -> p.add(pos)) - .toList(); - it.addTask(taskId, blocks, TaskType.BUILD, null); - }); - - final var packet = new C2SCaptureInfluencePositionPacket(taskId, pos); - FortressClientNetworkHelper.send(C2SCaptureInfluencePositionPacket.CHANNEL, packet); - reset(); - } - - @Override - public IBlockDataProvider getBlockDataProvider() { - return blockDataProvider; - } - - @Override - public boolean isSelecting() { - return isSelectingInfluencePosition; - } - - @Override - public BlueprintMetadata getSelectedStructure() { - return INFLUENCE_FLAG_METADATA; - } - - @Override - public IBlueprintRotation getSelectedRotation() { - return selectedRotation; - } - - @Override - public boolean canBuild() { - return getInfluencePosStateHolder().getWorldBorderStage() != WorldBorderStage.SHRINKING - && super.canBuild(); - } - - @Override - public IInfluencePosStateHolder getInfluencePosStateHolder() { - return influencePosStateHolder; - } - - public static class InfluencePosStateHolder implements IInfluencePosStateHolder { - private WorldBorderStage worldBorderStage = WorldBorderStage.STATIONARY; - private BlockPos lastPos = null; - - @Override - public void syncNewPos(BlockPos newPos) { - if(newPos == null) { - setCorrect(WorldBorderStage.STATIONARY); - lastPos = null; - return; - } - final var alignedPos = BaseFortressBorderHolder.alignToAGrid(newPos); - if(Objects.equals(lastPos, alignedPos)) { - return; - } - - final var packet = new C2SUpdateNewInfluencePosition(alignedPos); - FortressClientNetworkHelper.send(C2SUpdateNewInfluencePosition.CHANNEL, packet); - lastPos = alignedPos; - } - - @Override - public void setCorrect(WorldBorderStage state) { - worldBorderStage = state; - } - - @Override - public WorldBorderStage getWorldBorderStage() { - return worldBorderStage; - } - - @Override - public void reset() { - worldBorderStage = WorldBorderStage.STATIONARY; - lastPos = null; - } - - } -} diff --git a/src/main/java/org/minefortress/fight/influence/InfluenceFlagBlockDataProvider.java b/src/main/java/org/minefortress/fight/influence/InfluenceFlagBlockDataProvider.java deleted file mode 100644 index 0bd3225f..00000000 --- a/src/main/java/org/minefortress/fight/influence/InfluenceFlagBlockDataProvider.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.minefortress.fight.influence; - -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtIo; -import net.minecraft.registry.Registries; -import net.minecraft.structure.StructureTemplate; -import net.minecraft.util.BlockRotation; -import net.remmintan.mods.minefortress.core.interfaces.blueprints.IBlockDataProvider; -import net.remmintan.mods.minefortress.core.interfaces.blueprints.IStructureBlockData; -import org.minefortress.MineFortressMod; -import org.minefortress.blueprints.data.ClientStructureBlockDataProvider; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; - -public class InfluenceFlagBlockDataProvider implements IBlockDataProvider { - - private IStructureBlockData influenceFlagData = null; - - @Override - public IStructureBlockData getBlockData(String blueprintId, BlockRotation rotation) { - if (!blueprintId.equals("influence_flag")) - throw new IllegalArgumentException("Invalid file name for influence flag: " + blueprintId); - - if (influenceFlagData == null) { - final var structure = new StructureTemplate(); - final var nbt = readTheStructureNbtTag(); - structure.readNbt(Registries.BLOCK.getReadOnlyWrapper(),nbt.getCompound("tag")); - influenceFlagData = ClientStructureBlockDataProvider.buildStructureForClient(structure, rotation); - } - - return influenceFlagData; - } - - private static NbtCompound readTheStructureNbtTag() { - final var modContainer = FabricLoader.getInstance().getModContainer(MineFortressMod.MOD_ID) - .orElseThrow(() -> new IllegalStateException("Mod container not found!")); - final var path = modContainer.findPath("data/minefortress/structures/influence_flag.nbt") - .orElseThrow(() -> new IllegalStateException("Structure file not found!")); - try { - final File file; - try { - file = path.toFile(); - } catch (UnsupportedOperationException e) { - return NbtIo.readCompressed(Files.newInputStream(path)); - } - return NbtIo.readCompressed(file); - } catch (IOException e) { - throw new IllegalStateException("Failed to read structure file!", e); - } - } -} diff --git a/src/main/java/org/minefortress/fight/influence/ServerFortressBorderHolder.java b/src/main/java/org/minefortress/fight/influence/ServerFortressBorderHolder.java deleted file mode 100644 index adba2bc6..00000000 --- a/src/main/java/org/minefortress/fight/influence/ServerFortressBorderHolder.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.minefortress.fight.influence; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.border.WorldBorderStage; - -import java.util.HashSet; -import java.util.Set; - -class ServerFortressBorderHolder extends BaseFortressBorderHolder{ - - private final Set allInfluencePositionsAlignedToAGrid = new HashSet<>(); - - public void add(BlockPos pos) { - allInfluencePositionsAlignedToAGrid.add(alignToAGrid(pos)); - } - - public WorldBorderStage getStage(BlockPos pos) { - var alignedPos = alignToAGrid(pos); - if(allInfluencePositionsAlignedToAGrid.contains(alignedPos)) - return WorldBorderStage.STATIONARY; - final var blockPos = alignedPos.toImmutable(); - for (var offset : new int[][]{{-1, 0}, {0, -1}, {1, 0}, {0, 1}, {-1, -1}, {1, -1}, {-1, 1}, {1, 1}}) { - var neighbour = blockPos.add( - offset[0] * FORTRESS_BORDER_SIZE, - 0, - offset[1] * FORTRESS_BORDER_SIZE - ); - if (allInfluencePositionsAlignedToAGrid.contains(neighbour)) - return WorldBorderStage.GROWING; - } - return WorldBorderStage.SHRINKING; - } - - public void clear() { - allInfluencePositionsAlignedToAGrid.clear(); - } -} diff --git a/src/main/java/org/minefortress/fight/influence/ServerInfluenceManager.java b/src/main/java/org/minefortress/fight/influence/ServerInfluenceManager.java deleted file mode 100644 index d5866c25..00000000 --- a/src/main/java/org/minefortress/fight/influence/ServerInfluenceManager.java +++ /dev/null @@ -1,161 +0,0 @@ -package org.minefortress.fight.influence; - -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtList; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.BlockRotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.border.WorldBorderStage; -import net.remmintan.mods.minefortress.core.ModLogger; -import net.remmintan.mods.minefortress.core.interfaces.blueprints.IBlockDataProvider; -import net.remmintan.mods.minefortress.core.interfaces.infuence.ICaptureTask; -import net.remmintan.mods.minefortress.core.interfaces.infuence.IServerInfluenceManager; -import net.remmintan.mods.minefortress.core.interfaces.resources.IServerResourceManager; -import net.remmintan.mods.minefortress.core.interfaces.server.ITickableManager; -import net.remmintan.mods.minefortress.core.interfaces.server.IWritableManager; -import net.remmintan.mods.minefortress.networking.helpers.FortressChannelNames; -import net.remmintan.mods.minefortress.networking.helpers.FortressServerNetworkHelper; -import net.remmintan.mods.minefortress.networking.s2c.ClientboundTaskExecutedPacket; -import net.remmintan.mods.minefortress.networking.s2c.S2CSyncInfluence; -import net.remmintan.mods.minefortress.networking.s2c.S2CUpdateInfluenceBorderStage; -import org.jetbrains.annotations.Nullable; -import org.minefortress.fortress.ServerFortressManager; - -import java.util.ArrayList; -import java.util.Deque; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.ConcurrentLinkedDeque; - -public class ServerInfluenceManager implements IServerInfluenceManager, ITickableManager, IWritableManager { - private final Deque captureTasksQueue = new ConcurrentLinkedDeque<>(); - private final List allInfluencePositions = new ArrayList<>(); - private final Synchronizer synchronizer = new Synchronizer(); - private final InfluenceFlagBlockDataProvider influenceFlagBlockDataProvider = new InfluenceFlagBlockDataProvider(); - private final ServerFortressBorderHolder fortressBorderHolder = new ServerFortressBorderHolder(); - - private final ServerFortressManager serverFortressManager; - - public ServerInfluenceManager(ServerFortressManager serverFortressManager) { - this.serverFortressManager = serverFortressManager; - } - - @Override - public void addCapturePosition(UUID taskId, BlockPos pos, ServerPlayerEntity player) { - final var stage = this.fortressBorderHolder.getStage(pos); - final var resourceManager = (IServerResourceManager)this.serverFortressManager.getResourceManager(); - final var influenceFlag = influenceFlagBlockDataProvider.getBlockData("influence_flag", BlockRotation.NONE); - final var stacks = influenceFlag.getStacks(); - if(stage == WorldBorderStage.GROWING && (resourceManager.hasItems(stacks) || serverFortressManager.isCreative())) { - if(serverFortressManager.isSurvival()) { - resourceManager.reserveItems(taskId, stacks); - } - captureTasksQueue.add(new CaptureTask(taskId, pos)); - fortressBorderHolder.add(pos); - } else { - final var packet = new ClientboundTaskExecutedPacket(taskId); - FortressServerNetworkHelper.send(player, FortressChannelNames.FINISH_TASK, packet); - ModLogger.LOGGER.warn("Player tried to capture influence flag without having the required items!"); - } - } - public ICaptureTask getCaptureTask() { - return captureTasksQueue.poll(); - } - - public void failCaptureTask(ICaptureTask task) { - captureTasksQueue.add(task); - } - - public IBlockDataProvider getBlockDataProvider() { - return influenceFlagBlockDataProvider; - } - - public void addInfluencePosition(BlockPos pos) { - allInfluencePositions.add(pos); - synchronizer.scheduleSync(); - } - - public void tick(@Nullable ServerPlayerEntity player) { - if(player == null) { - return; - } - synchronizer.tick(player); - } - - public void sync() { - synchronizer.scheduleSync(); - } - - public void write(NbtCompound tag) { - final var nbt = new NbtCompound(); - final var list = new NbtList(); - for (final var pos : allInfluencePositions) { - final var posTag = new NbtCompound(); - posTag.putLong("pos", pos.asLong()); - list.add(posTag); - } - nbt.put("positions", list); - - tag.put("influenceManager", nbt); - } - - @Override - public void checkNewPositionAndUpdateClientState(BlockPos pos, ServerPlayerEntity player) { - final var packet = new S2CUpdateInfluenceBorderStage(fortressBorderHolder.getStage(pos)); - FortressServerNetworkHelper.send(player, S2CUpdateInfluenceBorderStage.CHANNEL, packet); - } - - public void read(NbtCompound tag) { - if (!tag.contains("influenceManager")) { - addCenterAsInfluencePosition(); - return; - } - NbtCompound nbt = tag.getCompound("influenceManager"); - - allInfluencePositions.clear(); - fortressBorderHolder.clear(); - final var list = nbt.getList("positions", NbtList.COMPOUND_TYPE); - for (int i = 0; i < list.size(); i++) { - final var posTag = list.getCompound(i); - final var pos = BlockPos.fromLong(posTag.getLong("pos")); - allInfluencePositions.add(pos); - fortressBorderHolder.add(pos); - } - if(allInfluencePositions.isEmpty()) { - addCenterAsInfluencePosition(); - } - synchronizer.scheduleSync(); - } - - public void addCenterAsInfluencePosition() { - final var fortressCenter = serverFortressManager.getFortressCenter(); - if(fortressCenter != null) { - addInfluencePosition(fortressCenter); - fortressBorderHolder.add(fortressCenter); - } - } - - private class Synchronizer { - - private boolean syncScheduled = false; - - public void scheduleSync() { - if (syncScheduled) { - return; - } - syncScheduled = true; - } - - public void tick(ServerPlayerEntity player) { - if (!syncScheduled) { - return; - } - final var s2CSyncInfluence = new S2CSyncInfluence(allInfluencePositions); - FortressServerNetworkHelper.send(player, S2CSyncInfluence.CHANNEL, s2CSyncInfluence); - syncScheduled = false; - } - } - - public record CaptureTask(UUID taskId, BlockPos pos) implements ICaptureTask { } - -} diff --git a/src/main/java/org/minefortress/fortress/ClientFortressManager.java b/src/main/java/org/minefortress/fortress/ClientFortressManager.java index f0791d9f..0ad6e490 100644 --- a/src/main/java/org/minefortress/fortress/ClientFortressManager.java +++ b/src/main/java/org/minefortress/fortress/ClientFortressManager.java @@ -61,8 +61,6 @@ public final class ClientFortressManager implements IClientFortressManager { private FortressState state = FortressState.BUILD_SELECTION; - private boolean borderEnabled = true; - public ClientFortressManager() { professionManager = new ClientProfessionManager( () -> ((IClientManagersProvider) MinecraftClient.getInstance()) @@ -99,16 +97,13 @@ public void sync( FortressGamemode gamemode, boolean connectedToTheServer, int maxColonistsCount, - int reservedColonistCount, - boolean borderEnabled - ) { + int reservedColonistCount) { this.colonistsCount = colonistsCount; this.fortressCenter = fortressCenter; this.gamemode = gamemode; this.connectedToTheServer = connectedToTheServer; this.maxColonistsCount = maxColonistsCount; this.reservedColonistCount = reservedColonistCount; - this.borderEnabled = borderEnabled; this.initialized = true; } @@ -351,11 +346,6 @@ private BuildingHealthRenderInfo buildingToHealthRenderInfo(IEssentialBuildingIn return new BuildingHealthRenderInfo(center, health); } - @Override - public boolean isBorderEnabled() { - return borderEnabled; - } - @Override public void openRepairBuildingScreen(UUID buildingId, Map blocksToRepair) { MinecraftClient.getInstance().setScreen(new RepairBuildingScreen(buildingId, blocksToRepair, resourceManager)); diff --git a/src/main/java/org/minefortress/fortress/FortressBorder.java b/src/main/java/org/minefortress/fortress/FortressBorder.java deleted file mode 100644 index 60fbf700..00000000 --- a/src/main/java/org/minefortress/fortress/FortressBorder.java +++ /dev/null @@ -1,86 +0,0 @@ -package org.minefortress.fortress; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.border.WorldBorder; -import net.minecraft.world.border.WorldBorderStage; -import org.jetbrains.annotations.Nullable; -import org.minefortress.utils.ModUtils; - -import java.util.*; - -public final class FortressBorder extends WorldBorder { - - private boolean hasDynamicStage = false; - private final Set additionalBorders = new HashSet<>(); - private final List uniqueBorders = new ArrayList<>(); - - public void addAdditionalBorder(WorldBorder worldBorder) { - additionalBorders.add(worldBorder); - recalculateUniqueBorders(); - } - - private void recalculateUniqueBorders() { - uniqueBorders.clear(); - final var thisBorderPositions = Arrays.asList( - new BoundPosition(getBoundWest(), getCenterZ()), - new BoundPosition(getBoundEast(), getCenterZ()), - new BoundPosition(getCenterX(), getBoundNorth()), - new BoundPosition(getCenterX(), getBoundSouth()) - ); - final var nonUniqueBorders = new ArrayList<>(thisBorderPositions); - - for (WorldBorder additionalBorder : additionalBorders) { - nonUniqueBorders.add(new BoundPosition(additionalBorder.getBoundWest(), additionalBorder.getCenterZ())); - nonUniqueBorders.add(new BoundPosition(additionalBorder.getBoundEast(), additionalBorder.getCenterZ())); - nonUniqueBorders.add(new BoundPosition(additionalBorder.getCenterX(), additionalBorder.getBoundNorth())); - nonUniqueBorders.add(new BoundPosition(additionalBorder.getCenterX(), additionalBorder.getBoundSouth())); - } - - nonUniqueBorders.removeIf(it -> Collections.frequency(nonUniqueBorders, it) > 1); - - uniqueBorders.addAll(nonUniqueBorders); - } - - public boolean shouldRenderBound(@Nullable Double boundX, @Nullable Double boundZ) { - return additionalBorders.isEmpty() || - boundX != null && boundZ != null && - uniqueBorders.contains(new BoundPosition(boundX, boundZ)); - } - - @Override - public WorldBorderStage getStage() { - if(!hasDynamicStage) { - return super.getStage(); - } - final var fortressClientManager = ModUtils.getFortressClientManager(); - if(fortressClientManager.isCenterNotSet()) { - return WorldBorderStage.GROWING; - } - final var influenceManager = ModUtils.getInfluenceManager(); - return influenceManager.getInfluencePosStateHolder().getWorldBorderStage(); - } - - @Override - public boolean contains(BlockPos pos) { - if(super.contains(pos)) { - return true; - } - final var ab = this.getAdditionalBorders(); - for (WorldBorder additionalBorder : ab) { - if(additionalBorder.contains(pos)) { - return true; - } - } - return false; - } - - public void enableDynamicStage() { - this.hasDynamicStage = true; - } - - public Set getAdditionalBorders() { - return Collections.unmodifiableSet(additionalBorders); - } - - private record BoundPosition(double x, double z) {} -} diff --git a/src/main/java/org/minefortress/fortress/ServerFortressManager.java b/src/main/java/org/minefortress/fortress/ServerFortressManager.java index 34b33e31..c80824aa 100644 --- a/src/main/java/org/minefortress/fortress/ServerFortressManager.java +++ b/src/main/java/org/minefortress/fortress/ServerFortressManager.java @@ -37,7 +37,6 @@ import net.remmintan.mods.minefortress.core.interfaces.entities.pawns.IProfessional; import net.remmintan.mods.minefortress.core.interfaces.entities.pawns.ITargetedPawn; import net.remmintan.mods.minefortress.core.interfaces.entities.pawns.IWorkerPawn; -import net.remmintan.mods.minefortress.core.interfaces.infuence.IServerInfluenceManager; import net.remmintan.mods.minefortress.core.interfaces.professions.IServerProfessionsManager; import net.remmintan.mods.minefortress.core.interfaces.resources.IItemInfo; import net.remmintan.mods.minefortress.core.interfaces.resources.IServerResourceManager; @@ -56,7 +55,6 @@ import org.minefortress.entity.Colonist; import org.minefortress.entity.colonist.ColonistNameGenerator; import org.minefortress.fight.ServerFightManager; -import org.minefortress.fight.influence.ServerInfluenceManager; import org.minefortress.fortress.automation.areas.AreasServerManager; import org.minefortress.fortress.automation.areas.ServerAutomationAreaInfo; import org.minefortress.fortress.buildings.FortressBuildingManager; @@ -102,7 +100,6 @@ public final class ServerFortressManager implements IFortressManager, IServerMan private BlockPos fortressCenter = null; private int maxColonistsCount = -1; - private boolean borderEnabled; private boolean spawnPawns = true; public ServerFortressManager(MinecraftServer server) { @@ -113,7 +110,6 @@ public ServerFortressManager(MinecraftServer server) { registerManager(IServerResourceManager.class, new ServerResourceManager(server)); registerManager(IServerBuildingsManager.class, new FortressBuildingManager(() -> server.getWorld(World.OVERWORLD))); registerManager(IServerAutomationAreaManager.class, new AreasServerManager()); - registerManager(IServerInfluenceManager.class, new ServerInfluenceManager(this)); registerManager(IServerFightManager.class, new ServerFightManager(this)); registerManager(ITasksCreator.class, new TasksCreator()); @@ -173,8 +169,7 @@ public void tick(@Nullable final ServerPlayerEntity player) { gamemode, isServer, maxColonistsCount, - getReservedPawnsCount(), - borderEnabled); + getReservedPawnsCount()); FortressServerNetworkHelper.send(player, FortressChannelNames.FORTRESS_MANAGER_SYNC, syncFortressPacket); if(needSyncSpecialBlocks){ final var syncBlocks = new ClientboundSyncSpecialBlocksPacket(specialBlocks, blueprintsSpecialBlocks); @@ -341,7 +336,6 @@ public void setupCenter(@NotNull BlockPos fortressCenter, ServerPlayerEntity pla spawnPawnNearCampfire(player.getUuid()); } - getInfluenceManager().addCenterAsInfluencePosition(); player.setSpawnPoint(getWorld().getRegistryKey(), player.getBlockPos(), 0, true, false); this.scheduleSync(); @@ -382,19 +376,13 @@ private BlockPos getRandomSpawnPosition() { } @Override - public void syncOnJoin(boolean borderEnabled) { - this.borderEnabled = borderEnabled; + public void syncOnJoin() { this.needSync = true; this.needSyncSpecialBlocks = true; getAutomationAreaManager().sync(); - getInfluenceManager().sync(); getFightManager().sync(); } - public void setBorderVisibilityState(boolean borderEnabled) { - this.borderEnabled = borderEnabled; - this.scheduleSync(); - } public void scheduleSync() { needSync = true; @@ -535,7 +523,6 @@ public void readFromNbt(NbtCompound tag) { if(tag.contains("spawnPawns")) { this.spawnPawns = tag.getBoolean("spawnPawns"); } - getInfluenceManager().sync(); getFightManager().sync(); getProfessionsManager().scheduleSync(); getResourceManager().syncAll(); diff --git a/src/main/java/org/minefortress/fortress/automation/areas/AreasClientManager.java b/src/main/java/org/minefortress/fortress/automation/areas/AreasClientManager.java index 78b30dc8..816443ed 100644 --- a/src/main/java/org/minefortress/fortress/automation/areas/AreasClientManager.java +++ b/src/main/java/org/minefortress/fortress/automation/areas/AreasClientManager.java @@ -19,7 +19,6 @@ import net.remmintan.mods.minefortress.networking.c2s.C2SRemoveAutomationAreaPacket; import net.remmintan.mods.minefortress.networking.helpers.FortressClientNetworkHelper; import org.joml.Vector4f; -import org.minefortress.utils.ModUtils; import java.util.Collections; import java.util.List; @@ -34,7 +33,6 @@ public final class AreasClientManager implements ISelectionInfoProvider, ISelect private BlockPos selectionStart; private BlockPos selectionEnd; private IAutomationAreaInfo hoveredArea; - private boolean isCorrectState = true; @Override public boolean select(HitResult target) { @@ -53,21 +51,14 @@ public boolean select(HitResult target) { selectionStart = blockPos.toImmutable(); selectionEnd = blockPos.toImmutable(); } else { - if(isCorrectState) { - final var selectedBlocks = Collections.unmodifiableList(getSelectedBlocks()); - final var info = new AutomationAreaInfo( - selectedBlocks, - selectionType, - UUID.randomUUID() - ); - final var packet = new C2SAddAreaPacket(info); - FortressClientNetworkHelper.send(C2SAddAreaPacket.CHANNEL, packet); - } else { - MinecraftClient.getInstance() - .inGameHud - .getChatHud() - .addMessage(Text.literal("The selected area is not inside the fortress!")); - } + final var selectedBlocks = Collections.unmodifiableList(getSelectedBlocks()); + final var info = new AutomationAreaInfo( + selectedBlocks, + selectionType, + UUID.randomUUID() + ); + final var packet = new C2SAddAreaPacket(info); + FortressClientNetworkHelper.send(C2SAddAreaPacket.CHANNEL, packet); resetSelection(); } } @@ -89,11 +80,6 @@ public void updateSelection(HitResult crosshairTarget) { } } - isCorrectState = ModUtils.getInfluenceManager() - .getFortressBorder() - .map(it -> getSelectedBlocks().stream().allMatch(it::contains)) - .orElse(true); - } } @@ -103,7 +89,6 @@ public void resetSelection() { this.selectionStart = null; this.needsUpdate = true; this.hoveredArea = null; - this.isCorrectState = true; } @Override @@ -152,9 +137,6 @@ public void setSelectionType(ProfessionsSelectionType selectionType) { @Override public Vector4f getClickColor() { - if(!isCorrectState) { - return new Vector4f((170f/255f), 0.0f, 0.0f, 0.5f); - } return selectionType.getColor(); } @Override diff --git a/src/main/java/org/minefortress/fortress/buildings/FortressBuildingBlockData.java b/src/main/java/org/minefortress/fortress/buildings/FortressBuildingBlockData.java index ad1b337d..8b177315 100644 --- a/src/main/java/org/minefortress/fortress/buildings/FortressBuildingBlockData.java +++ b/src/main/java/org/minefortress/fortress/buildings/FortressBuildingBlockData.java @@ -192,7 +192,7 @@ private void recalculatePreservedPositions() { } int getHealth() { - if(actualState.size() == 0) return 0; + if (actualState.isEmpty()) return 0; final var preserved = actualState.values().stream().filter(state -> state == BuildingBlockState.PRESERVED).count(); final var delta = (float) preserved / (float) actualState.size(); return (int)MathHelper.clampedMap(delta, 0.5f, 1, 0, 100); diff --git a/src/main/java/org/minefortress/fortress/server/FortressModServerManager.java b/src/main/java/org/minefortress/fortress/server/FortressModServerManager.java index 2aa8900e..912d4651 100644 --- a/src/main/java/org/minefortress/fortress/server/FortressModServerManager.java +++ b/src/main/java/org/minefortress/fortress/server/FortressModServerManager.java @@ -22,7 +22,6 @@ public class FortressModServerManager implements IFortressModServerManager { private final MinecraftServer server; private final Map serverManagers = new HashMap<>(); - private boolean borderEnabled; public FortressModServerManager(MinecraftServer server) { this.server = server; @@ -78,28 +77,14 @@ public void save() { nbt.put(id.toString(), fortressNbt); } - nbt.putBoolean("borderEnabled", borderEnabled); - ModPathUtils.saveNbt(nbt, MANAGERS_FILE_NAME, server.session); } - public void load() { - load(false); - } - @Override - public void load(boolean borderEnabled) { + public void load() { final var nbtCompound = ModPathUtils.readNbt(MANAGERS_FILE_NAME, server.session); - boolean borderEnabledSet = false; - for (String key : nbtCompound.getKeys()) { - if(key.equals("borderEnabled")) { - this.borderEnabled = nbtCompound.getBoolean(key); - borderEnabledSet = true; - continue; - } - final var managerNbt = nbtCompound.getCompound(key); final var masterPlayerId = UUID.fromString(key); final var manager = new ServerFortressManager(server); @@ -107,9 +92,6 @@ public void load(boolean borderEnabled) { serverManagers.put(masterPlayerId, manager); } - if(!borderEnabledSet) { - this.borderEnabled = borderEnabled; - } } public Optional findReachableFortress(BlockPos pos, double reachRange) { @@ -124,9 +106,4 @@ public Optional findReachableFortress(BlockPos pos, dou } return Optional.empty(); } - - - public boolean isBorderEnabled() { - return borderEnabled; - } } diff --git a/src/main/java/org/minefortress/interfaces/FortressWorldCreator.java b/src/main/java/org/minefortress/interfaces/FortressWorldCreator.java index c16f5115..9c5e90d7 100644 --- a/src/main/java/org/minefortress/interfaces/FortressWorldCreator.java +++ b/src/main/java/org/minefortress/interfaces/FortressWorldCreator.java @@ -2,7 +2,5 @@ public interface FortressWorldCreator { - void set_BorderEnabled(boolean borderEnabled); - boolean is_BorderEnabled(); } diff --git a/src/main/java/org/minefortress/mixins/FortressMinecraftClientMixin.java b/src/main/java/org/minefortress/mixins/FortressMinecraftClientMixin.java index f687fc18..95cc269f 100644 --- a/src/main/java/org/minefortress/mixins/FortressMinecraftClientMixin.java +++ b/src/main/java/org/minefortress/mixins/FortressMinecraftClientMixin.java @@ -39,7 +39,6 @@ import org.minefortress.MineFortressMod; import org.minefortress.blueprints.manager.ClientBlueprintManager; import org.minefortress.fight.ClientPawnsSelectionManager; -import org.minefortress.fight.influence.ClientInfluenceManager; import org.minefortress.fortress.ClientFortressManager; import org.minefortress.fortress.automation.areas.AreasClientManager; import org.minefortress.interfaces.IFortressMinecraftClient; @@ -72,8 +71,7 @@ public abstract class FortressMinecraftClientMixin extends ReentrantThreadExecut private final BlockBufferBuilderStorage blockBufferBuilderStorage = new BlockBufferBuilderStorage(); @Unique private ClientBlueprintManager clientBlueprintManager; - @Unique - private ClientInfluenceManager influenceManager; + @Unique private BlueprintRenderer blueprintRenderer; @Unique @@ -125,7 +123,6 @@ public void constructor(RunArgs args, CallbackInfo ci) { this.areasClientManager = new AreasClientManager(); clientBlueprintManager = new ClientBlueprintManager(client); - influenceManager = new ClientInfluenceManager(client); blueprintRenderer = new BlueprintRenderer(this::getProperBlockDataProviderBasedOnState, client, blockBufferBuilderStorage); @@ -280,11 +277,6 @@ public AreasClientManager get_AreasClientManager() { return this.areasClientManager; } - @Override - public ClientInfluenceManager get_InfluenceManager() { - return this.influenceManager; - } - public IClientPawnsSelectionManager get_PawnsSelectionManager() { return pawnsSelectionManager; } @@ -297,10 +289,6 @@ public void close(CallbackInfo ci) { @Unique private IBlockDataProvider getProperBlockDataProviderBasedOnState() { - if(clientFortressManager.getState() == FortressState.COMBAT) { - return this.get_InfluenceManager().getBlockDataProvider(); - } - return this.get_BlueprintManager().getBlockDataProvider(); } } diff --git a/src/main/java/org/minefortress/mixins/interaction/FortressClientInteractionManagerMixin.java b/src/main/java/org/minefortress/mixins/interaction/FortressClientInteractionManagerMixin.java index 8d766bc3..a0b878e5 100644 --- a/src/main/java/org/minefortress/mixins/interaction/FortressClientInteractionManagerMixin.java +++ b/src/main/java/org/minefortress/mixins/interaction/FortressClientInteractionManagerMixin.java @@ -87,15 +87,6 @@ public void attackBlock(BlockPos pos, Direction direction, CallbackInfoReturnabl return; } - if(manager.getState() == FortressState.COMBAT) { - final var influenceManager = ModUtils.getInfluenceManager(); - if(influenceManager.isSelecting()) { - influenceManager.cancelSelectingInfluencePosition(); - cir.setReturnValue(false); - return; - } - } - if(manager.getState() == FortressState.AREAS_SELECTION) { final var areasClientManager = ModUtils.getAreasClientManager(); areasClientManager.select(client.crosshairTarget); diff --git a/src/main/java/org/minefortress/mixins/renderer/FortressWorldRendererMixin.java b/src/main/java/org/minefortress/mixins/renderer/FortressWorldRendererMixin.java index 2d8fbdc7..6436ef43 100644 --- a/src/main/java/org/minefortress/mixins/renderer/FortressWorldRendererMixin.java +++ b/src/main/java/org/minefortress/mixins/renderer/FortressWorldRendererMixin.java @@ -1,8 +1,6 @@ package org.minefortress.mixins.renderer; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.block.BlockState; import net.minecraft.block.ShapeContext; import net.minecraft.client.MinecraftClient; @@ -12,19 +10,14 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.Entity; -import net.minecraft.util.Identifier; -import net.minecraft.util.Util; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -import net.minecraft.world.border.WorldBorder; import net.remmintan.mods.minefortress.core.FortressState; import net.remmintan.mods.minefortress.core.interfaces.client.IClientManagersProvider; import net.remmintan.mods.minefortress.core.utils.CoreModUtils; import org.joml.Matrix4f; import org.joml.Vector4f; -import org.minefortress.fortress.FortressBorder; import org.minefortress.interfaces.IFortressMinecraftClient; import org.minefortress.renderer.MineFortressLabelsRenderer; import org.minefortress.utils.ModUtils; @@ -37,13 +30,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.List; -import java.util.function.BiFunction; @Mixin(WorldRenderer.class) public abstract class FortressWorldRendererMixin { - @Unique - private static final Identifier FORCE_FIELD = new Identifier("textures/misc/forcefield.png"); @Shadow @Final private MinecraftClient client; @Shadow private ClientWorld world; @Shadow @Final private BufferBuilderStorage bufferBuilders; @@ -127,158 +117,6 @@ public void renderTranslucentBuffer(MatrixStack matrices, float tickDelta, long renderTranslucent(matrices, camera, matrix4f); } - @Unique - private WorldBorder getWorldBorder(ClientWorld instance) { - final var selectingBlueprint = ModUtils.getBlueprintManager().isSelecting(); - final var selecting = ModUtils.getSelectionManager().isSelecting(); - final var selectingArea = ModUtils.getAreasClientManager().isSelecting(); - final var centerNotSet = ModUtils.getFortressClientManager().isCenterNotSet(); - final var influenceManager = ModUtils.getInfluenceManager(); - final var isCapturingPoint = influenceManager.isSelecting(); - - if(selectingBlueprint || selecting || selectingArea || centerNotSet || isCapturingPoint) - return influenceManager - .getFortressBorder() - .orElseGet(instance::getWorldBorder); - else - return instance.getWorldBorder(); - } - - @Inject(method="renderWorldBorder", at=@At("HEAD"), cancellable = true) - public void renderCustomWorldBorder(Camera camera, CallbackInfo ci) { - BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer(); - WorldBorder worldBorder = getWorldBorder(this.world); - double viewDistance = this.client.options.getClampedViewDistance() * 16; - if (!(camera.getPos().x < worldBorder.getBoundEast() - viewDistance) || !(camera.getPos().x > worldBorder.getBoundWest() + viewDistance) || !(camera.getPos().z < worldBorder.getBoundSouth() - viewDistance) || !(camera.getPos().z > worldBorder.getBoundNorth() + viewDistance)) { - double e = 1.0 - worldBorder.getDistanceInsideBorder(camera.getPos().x, camera.getPos().z) / viewDistance; - e = Math.pow(e, 4.0); - e = MathHelper.clamp(e, 0.0, 1.0); - - RenderSystem.enableBlend(); - RenderSystem.enableDepthTest(); - RenderSystem.blendFuncSeparate(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE, GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ZERO); - RenderSystem.setShaderTexture(0, FORCE_FIELD); - RenderSystem.depthMask(MinecraftClient.isFabulousGraphicsOrBetter()); - MatrixStack matrixStack = RenderSystem.getModelViewStack(); - matrixStack.push(); - RenderSystem.applyModelViewMatrix(); - int i = worldBorder.getStage().getColor(); - float j = (float) (i >> 16 & 0xFF) / 255.0F; - float k = (float) (i >> 8 & 0xFF) / 255.0F; - float l = (float) (i & 0xFF) / 255.0F; - RenderSystem.setShaderColor(j, k, l, (float)e); - RenderSystem.setShader(GameRenderer::getPositionTexProgram); - RenderSystem.polygonOffset(-3.0F, -3.0F); - RenderSystem.enablePolygonOffset(); - RenderSystem.disableCull(); - - - bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE); - BiFunction shouldRenderBoundFunc = (x, z) -> worldBorder instanceof FortressBorder fb && fb.shouldRenderBound(x, z); - renderParticularBorder(camera, bufferBuilder, worldBorder, viewDistance, shouldRenderBoundFunc); - if(worldBorder instanceof FortressBorder fortressBorder) { - fortressBorder - .getAdditionalBorders() - .forEach(border -> renderParticularBorder(camera, bufferBuilder, border, viewDistance, shouldRenderBoundFunc)); - } - BufferRenderer.drawWithGlobalProgram(bufferBuilder.end()); - RenderSystem.enableCull(); - RenderSystem.polygonOffset(0.0F, 0.0F); - RenderSystem.disablePolygonOffset(); - RenderSystem.disableBlend(); - RenderSystem.defaultBlendFunc(); - matrixStack.pop(); - RenderSystem.applyModelViewMatrix(); - RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); - RenderSystem.depthMask(true); - } - ci.cancel(); - } - - private void renderParticularBorder(Camera camera, BufferBuilder bufferBuilder, WorldBorder worldBorder, double viewDistance, BiFunction shouldRenderBound) { - float m = (float) (Util.getMeasuringTimeMs() % 3000L) / 3000.0f; - float n = (float) (-MathHelper.fractionalPart(camera.getPos().y * 0.5)); - double cameraX = camera.getPos().x; - double cameraZ = camera.getPos().z; - double cameraDistance = this.client.gameRenderer.getFarPlaneDistance(); - float o = n + (float) cameraDistance; - final var boundNorth = worldBorder.getBoundNorth(); - double p = Math.max(MathHelper.floor(cameraZ - viewDistance), boundNorth); - final var boundSouth = worldBorder.getBoundSouth(); - double q = Math.min(MathHelper.ceil(cameraZ + viewDistance), boundSouth); - float r = (float) (MathHelper.floor(p) & 1) * 0.5f; - float v; - float s; - double t; - double u; - - final var centerX = worldBorder.getCenterX(); - final var centerZ = worldBorder.getCenterZ(); - - final var boundEast = worldBorder.getBoundEast(); - if (cameraX > boundEast - viewDistance && shouldRenderBound.apply(boundEast, centerZ)) { - s = r; - t = p; - while (t < q) { - u = Math.min(1.0, q - t); - v = (float) u * 0.5f; - bufferBuilder.vertex(boundEast - cameraX, -cameraDistance, t - cameraZ).texture(m - s, m + o).next(); - bufferBuilder.vertex(boundEast - cameraX, -cameraDistance, t + u - cameraZ).texture(m - (v + s), m + o).next(); - bufferBuilder.vertex(boundEast - cameraX, cameraDistance, t + u - cameraZ).texture(m - (v + s), m + n).next(); - bufferBuilder.vertex(boundEast - cameraX, cameraDistance, t - cameraZ).texture(m - s, m + n).next(); - t += 1.0; - s += 0.5f; - } - } - final var boundWest = worldBorder.getBoundWest(); - if (cameraX < boundWest + viewDistance && shouldRenderBound.apply(boundWest, centerZ)) { - s = r; - t = p; - while (t < q) { - u = Math.min(1.0, q - t); - v = (float) u * 0.5f; - bufferBuilder.vertex(boundWest - cameraX, -cameraDistance, t - cameraZ).texture(m + s, m + o).next(); - bufferBuilder.vertex(boundWest - cameraX, -cameraDistance, t + u - cameraZ).texture(m + v + s, m + o).next(); - bufferBuilder.vertex(boundWest - cameraX, cameraDistance, t + u - cameraZ).texture(m + v + s, m + n).next(); - bufferBuilder.vertex(boundWest - cameraX, cameraDistance, t - cameraZ).texture(m + s, m + n).next(); - t += 1.0; - s += 0.5f; - } - } - p = Math.max(MathHelper.floor(cameraX - viewDistance), boundWest); - q = Math.min(MathHelper.ceil(cameraX + viewDistance), boundEast); - r = (float) (MathHelper.floor(p) & 1) * 0.5f; - if (cameraZ > boundSouth - viewDistance && shouldRenderBound.apply(centerX, boundSouth)) { - s = r; - t = p; - while (t < q) { - u = Math.min(1.0, q - t); - v = (float) u * 0.5f; - bufferBuilder.vertex(t - cameraX, -cameraDistance, boundSouth - cameraZ).texture(m + s, m + o).next(); - bufferBuilder.vertex(t + u - cameraX, -cameraDistance, boundSouth - cameraZ).texture(m + v + s, m + o).next(); - bufferBuilder.vertex(t + u - cameraX, cameraDistance, boundSouth - cameraZ).texture(m + v + s, m + n).next(); - bufferBuilder.vertex(t - cameraX, cameraDistance, boundSouth - cameraZ).texture(m + s, m + n).next(); - t += 1.0; - s += 0.5f; - } - } - - if (cameraZ < boundNorth + viewDistance && shouldRenderBound.apply(centerX, boundNorth)) { - s = r; - t = p; - while (t < q) { - u = Math.min(1.0, q - t); - v = (float) u * 0.5f; - bufferBuilder.vertex(t - cameraX, -cameraDistance, boundNorth - cameraZ).texture(m - s, m + o).next(); - bufferBuilder.vertex(t + u - cameraX, -cameraDistance, boundNorth - cameraZ).texture(m - (v + s), m + o).next(); - bufferBuilder.vertex(t + u - cameraX, cameraDistance, boundNorth - cameraZ).texture(m - (v + s), m + n).next(); - bufferBuilder.vertex(t - cameraX, cameraDistance, boundNorth - cameraZ).texture(m - s, m + n).next(); - t += 1.0; - s += 0.5f; - } - } - } - @Unique private void renderTranslucent(MatrixStack matrices, Camera camera, Matrix4f matrix4f) { final IFortressMinecraftClient fortressClient = (IFortressMinecraftClient) this.client; diff --git a/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/FortressCreateWorldScreenMixin.java b/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/FortressCreateWorldScreenMixin.java index 7a658bb1..68f5abfd 100644 --- a/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/FortressCreateWorldScreenMixin.java +++ b/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/FortressCreateWorldScreenMixin.java @@ -4,13 +4,10 @@ import net.minecraft.client.gui.screen.world.CreateWorldScreen; import net.minecraft.client.gui.screen.world.WorldCreator; import net.minecraft.text.Text; -import net.minecraft.world.SaveProperties; -import org.minefortress.interfaces.FortressWorldCreator; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(CreateWorldScreen.class) @@ -28,15 +25,6 @@ public void init(CallbackInfo ci) { this.getWorldCreator().setGameMode(WorldCreator.Mode.DEBUG); } - @ModifyArg(method="startServer", at=@At(value="INVOKE", target="Lnet/minecraft/server/integrated/IntegratedServerLoader;start(Lnet/minecraft/world/level/storage/LevelStorage$Session;Lnet/minecraft/server/DataPackContents;Lnet/minecraft/registry/CombinedDynamicRegistries;Lnet/minecraft/world/SaveProperties;)V")) - public SaveProperties updateLevelPropsBeforeStartingAServer(SaveProperties props) { - final var worldCreator = this.getWorldCreator(); - if(props instanceof FortressWorldCreator wcProps && worldCreator instanceof FortressWorldCreator fortressWorldCreator) { - wcProps.set_BorderEnabled(fortressWorldCreator.is_BorderEnabled()); - } - - return props; - } } diff --git a/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/GameTabMixin.java b/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/GameTabMixin.java deleted file mode 100644 index ce5d6afd..00000000 --- a/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/GameTabMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.minefortress.mixins.renderer.gui.worldcreator; - -import net.minecraft.client.gui.screen.world.CreateWorldScreen; -import net.minecraft.client.gui.screen.world.WorldScreenOptionGrid; -import net.minecraft.client.gui.widget.GridWidget; -import net.minecraft.text.Text; -import org.minefortress.interfaces.FortressWorldCreator; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -@Mixin(CreateWorldScreen.GameTab.class) -public abstract class GameTabMixin { - - @Unique - private static final Text BORDER_ENABLED = Text.literal("Border enabled"); - @Unique - private static final Text BORDER_ENABLED_INFO = Text.literal("When enabled you have expandable border in Survival mode"); - - @Inject(method="", at=@At("TAIL"), locals = LocalCapture.CAPTURE_FAILSOFT) - public void init(CreateWorldScreen createWorldScreen, CallbackInfo ci, GridWidget.Adder adder) { - final var worldCreator = createWorldScreen.getWorldCreator(); - if(worldCreator instanceof FortressWorldCreator fortressWorldCreator) { - WorldScreenOptionGrid.Builder builder = WorldScreenOptionGrid.builder(200).marginLeft(1); - builder.add(BORDER_ENABLED, fortressWorldCreator::is_BorderEnabled, fortressWorldCreator::set_BorderEnabled).toggleable(() -> true).tooltip(BORDER_ENABLED_INFO); - final var grid = builder.build(adder::add); - worldCreator.addListener(it -> grid.refresh()); - } - } - -} diff --git a/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/LevelPropertiesMixin.java b/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/LevelPropertiesMixin.java deleted file mode 100644 index 521c61a6..00000000 --- a/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/LevelPropertiesMixin.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.minefortress.mixins.renderer.gui.worldcreator; - -import net.minecraft.world.level.LevelProperties; -import org.minefortress.interfaces.FortressWorldCreator; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; - -@Mixin(LevelProperties.class) -public abstract class LevelPropertiesMixin implements FortressWorldCreator { - - // true by default because we need compatibility with existing worlds - @Unique - private boolean borderEnabled = false; - - @Override - public void set_BorderEnabled(boolean borderEnabled) { - this.borderEnabled = borderEnabled; - } - - @Override - public boolean is_BorderEnabled() { - return this.borderEnabled; - } -} diff --git a/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/WorldCreatorMixin.java b/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/WorldCreatorMixin.java index ef2f271e..152cae95 100644 --- a/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/WorldCreatorMixin.java +++ b/src/main/java/org/minefortress/mixins/renderer/gui/worldcreator/WorldCreatorMixin.java @@ -5,7 +5,6 @@ import org.minefortress.interfaces.FortressWorldCreator; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -13,9 +12,6 @@ @Mixin(WorldCreator.class) public abstract class WorldCreatorMixin implements FortressWorldCreator { - @Unique - private boolean borderEnabled = false; - @Shadow public abstract void setDifficulty(Difficulty difficulty); @Shadow public abstract void setCheatsEnabled(boolean cheatsEnabled); @@ -28,14 +24,4 @@ public void setGameMode(WorldCreator.Mode gameMode, CallbackInfo ci) { } } - @Override - public boolean is_BorderEnabled() { - return borderEnabled; - } - - @Override - public void set_BorderEnabled(boolean borderEnabled) { - this.borderEnabled = borderEnabled; - } - } diff --git a/src/main/java/org/minefortress/mixins/world/ClientWorldMixin.java b/src/main/java/org/minefortress/mixins/world/ClientWorldMixin.java index 55eb8c39..3421ca8d 100644 --- a/src/main/java/org/minefortress/mixins/world/ClientWorldMixin.java +++ b/src/main/java/org/minefortress/mixins/world/ClientWorldMixin.java @@ -18,6 +18,7 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -29,6 +30,7 @@ public abstract class ClientWorldMixin extends World implements ITasksInformationHolder { @Shadow @Final private MinecraftClient client; + @Unique private ClientTasksHolder tasksHolder; protected ClientWorldMixin(MutableWorldProperties properties, RegistryKey registryRef, DynamicRegistryManager registryManager, RegistryEntry dimensionEntry, Supplier profiler, boolean isClient, boolean debugWorld, long biomeAccess, int maxChainedNeighborUpdates) { @@ -50,7 +52,6 @@ public void tick(BooleanSupplier shouldKeepTicking, CallbackInfo ci) { if(shouldKeepTicking.getAsBoolean()) { if(client instanceof IClientManagersProvider fortressClient){ fortressClient.get_BlueprintManager().tick(); - fortressClient.get_InfluenceManager().tick(); } } } diff --git a/src/main/java/org/minefortress/registries/events/FortressServerEvents.java b/src/main/java/org/minefortress/registries/events/FortressServerEvents.java index 7174cb85..4d6d437e 100644 --- a/src/main/java/org/minefortress/registries/events/FortressServerEvents.java +++ b/src/main/java/org/minefortress/registries/events/FortressServerEvents.java @@ -13,7 +13,6 @@ import net.remmintan.mods.minefortress.core.interfaces.entities.player.FortressServerPlayerEntity; import net.remmintan.mods.minefortress.core.interfaces.server.IFortressServer; import org.minefortress.MineFortressMod; -import org.minefortress.interfaces.FortressWorldCreator; import org.minefortress.utils.ModUtils; public class FortressServerEvents { @@ -48,7 +47,7 @@ public static void register() { final var fortressModServerManager = fortressServer.get_FortressModServerManager(); final var manager = fortressModServerManager.getFortressManager(player); final var provider = fortressModServerManager.getManagersProvider(player); - manager.syncOnJoin(fortressModServerManager.isBorderEnabled()); + manager.syncOnJoin(); final var serverProfessionManager = provider.getProfessionsManager(); serverProfessionManager.sendProfessions(player); serverProfessionManager.scheduleSync(); @@ -69,13 +68,8 @@ public static void register() { }); ServerLifecycleEvents.SERVER_STARTING.register(server -> { - if(server instanceof IFortressServer IFortressServer) { - final var saveProps = server.getSaveProperties(); - if(saveProps instanceof FortressWorldCreator wcProps) { - IFortressServer.get_FortressModServerManager().load(wcProps.is_BorderEnabled()); - } else { - IFortressServer.get_FortressModServerManager().load(); - } + if (server instanceof IFortressServer fortressServer) { + fortressServer.get_FortressModServerManager().load(); } }); diff --git a/src/main/java/org/minefortress/registries/events/PlayerBlockEvents.kt b/src/main/java/org/minefortress/registries/events/PlayerBlockEvents.kt index 5a3b0cd3..0f53705c 100644 --- a/src/main/java/org/minefortress/registries/events/PlayerBlockEvents.kt +++ b/src/main/java/org/minefortress/registries/events/PlayerBlockEvents.kt @@ -47,11 +47,6 @@ fun registerPlayerBlockEvents() { val fortressManager = ModUtils.getFortressClientManager() if (fortressManager.state == FortressState.COMBAT) { - val influenceManager = ModUtils.getInfluenceManager() - if (influenceManager.isSelecting) { - influenceManager.selectInfluencePosition() - return@register ActionResult.SUCCESS - } updateFightSelection(hitResult, fortressManager) return@register ActionResult.SUCCESS } diff --git a/src/main/java/org/minefortress/renderer/gui/hud/CombatHudLayer.java b/src/main/java/org/minefortress/renderer/gui/hud/CombatHudLayer.java index 79daf1c8..a64bd573 100644 --- a/src/main/java/org/minefortress/renderer/gui/hud/CombatHudLayer.java +++ b/src/main/java/org/minefortress/renderer/gui/hud/CombatHudLayer.java @@ -2,17 +2,12 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; -import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.text.Text; -import net.minecraft.util.BlockRotation; import net.remmintan.mods.minefortress.core.interfaces.combat.IClientFightManager; -import net.remmintan.mods.minefortress.core.utils.CoreModUtils; import org.minefortress.renderer.gui.widget.ItemHudElement; import org.minefortress.utils.ModUtils; -import static org.minefortress.renderer.gui.blueprints.BlueprintsScreen.convertItemIconInTheGUI; - class CombatHudLayer extends AbstractHudLayer{ CombatHudLayer(MinecraftClient client) { super(client); @@ -30,7 +25,6 @@ class CombatHudLayer extends AbstractHudLayer{ @Override protected void renderHud(DrawContext drawContext, int screenWidth, int screenHeight) { drawTotalWarriorsAmount(drawContext, screenWidth, screenHeight); - renderInfluenceFlagCosts(drawContext, screenWidth, screenHeight); } @Override @@ -47,28 +41,6 @@ private void drawTotalWarriorsAmount(DrawContext drawContext, int screenWidth, i drawContext.drawText(this.textRenderer, Text.literal(warriorCountText), totalWarriorsAmountX + 17, totalWarriorsAmountY + 7, 0xFFFFFF, false); } - private void renderInfluenceFlagCosts(DrawContext drawContext, int screenWidth, int screenHeight) { - final var influenceManager = CoreModUtils.getMineFortressManagersProvider().get_InfluenceManager(); - if(influenceManager.isSelecting() && ModUtils.getFortressClientManager().isSurvival()) { - final var stacks = influenceManager.getBlockDataProvider() - .getBlockData("influence_flag", BlockRotation.NONE) - .getStacks(); - - final var resourceManager = ModUtils.getFortressClientManager().getResourceManager(); - - for (int i1 = 0; i1 < stacks.size(); i1++) { - final var stack = stacks.get(i1); - final var hasItem = resourceManager.hasItem(stack, stacks); - final var itemX = screenWidth /2 - 55 + i1%10 * 30; - final var itemY = i1/10 * 20 + screenHeight - 40; - final var convertedItem = convertItemIconInTheGUI(stack); - - drawContext.drawItem(new ItemStack(convertedItem), itemX, itemY); - drawContext.drawText(this.textRenderer, String.valueOf(stack.amount()), itemX + 17, itemY + 7, hasItem?0xFFFFFF:0xFF0000, false); - } - } - } - private static IClientFightManager getFightManager() { return ModUtils.getFortressClientManager().getFightManager(); } diff --git a/src/main/java/org/minefortress/renderer/gui/hud/FortressHud.java b/src/main/java/org/minefortress/renderer/gui/hud/FortressHud.java index 041f2052..2a9b35f7 100644 --- a/src/main/java/org/minefortress/renderer/gui/hud/FortressHud.java +++ b/src/main/java/org/minefortress/renderer/gui/hud/FortressHud.java @@ -42,7 +42,6 @@ public FortressHud(MinecraftClient client) { hudLayers.add(new PawnsSelectionHudLayer(client)); hudLayers.add(new CombatHudLayer(client)); hudLayers.add(new AreasHudLayer(client)); - hudLayers.add(new InfluenceHudLayer(client)); hudLayers.add(new UtilsHudLayer(client)); } diff --git a/src/main/java/org/minefortress/renderer/gui/hud/InfluenceHudLayer.java b/src/main/java/org/minefortress/renderer/gui/hud/InfluenceHudLayer.java deleted file mode 100644 index d0951978..00000000 --- a/src/main/java/org/minefortress/renderer/gui/hud/InfluenceHudLayer.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.minefortress.renderer.gui.hud; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.item.Items; -import net.remmintan.mods.minefortress.core.interfaces.client.IClientManagersProvider; -import net.remmintan.mods.minefortress.core.interfaces.combat.IClientFightManager; -import net.remmintan.mods.minefortress.core.interfaces.infuence.IClientInfluenceManager; -import net.remmintan.mods.minefortress.core.utils.CoreModUtils; -import org.minefortress.fight.influence.ClientInfluenceManager; -import org.minefortress.renderer.gui.widget.ItemButtonWidget; -import org.minefortress.renderer.gui.widget.ItemToggleWidget; - -import java.util.Optional; - -public class InfluenceHudLayer extends AbstractHudLayer { - - private final ItemToggleWidget captureButton; - - protected InfluenceHudLayer(MinecraftClient client) { - super(client); - setBasepoint(-25 , 0, PositionX.RIGHT, PositionY.CENTER); - - captureButton = new ItemToggleWidget( - 0, - -13, - Items.RED_BANNER, - btn -> { - final var influenceManager = getInfluenceManager(); - if (influenceManager.isSelecting()) { - influenceManager.cancelSelectingInfluencePosition(); - } else { - influenceManager.startSelectingInfluencePosition(); - } - }, - (button) -> Optional.of("Influence"), - () -> getInfluenceManager().isSelecting(), - () -> true - ); - this.addElement(captureButton); - - this.addElement( - new ItemButtonWidget( - 0, - 13, - Items.CAMPFIRE, - (btn) -> getFightManager().attractWarriorsToCampfire(), - "Call warriors to fortress center" - ) - ); - } - - private static IClientInfluenceManager getInfluenceManager() { - return getMineFortressManagersProvider().get_InfluenceManager(); - } - - private static IClientFightManager getFightManager() { - return getMineFortressManagersProvider().get_ClientFortressManager().getFightManager(); - } - - private static IClientManagersProvider getMineFortressManagersProvider() { - return CoreModUtils.getMineFortressManagersProvider(); - } - - @Override - public boolean shouldRender(HudState hudState) { - return hudState == HudState.COMBAT; - } - - @Override - public void tick() { - this.captureButton.visible = ClientInfluenceManager.influenceEnabled(); - } -} diff --git a/src/main/java/org/minefortress/renderer/gui/hud/hints/CombatHintsLayer.java b/src/main/java/org/minefortress/renderer/gui/hud/hints/CombatHintsLayer.java index 592489b1..b09a156c 100644 --- a/src/main/java/org/minefortress/renderer/gui/hud/hints/CombatHintsLayer.java +++ b/src/main/java/org/minefortress/renderer/gui/hud/hints/CombatHintsLayer.java @@ -1,7 +1,6 @@ package org.minefortress.renderer.gui.hud.hints; import org.minefortress.renderer.gui.hud.HudState; -import org.minefortress.utils.ModUtils; import java.util.List; @@ -21,7 +20,6 @@ protected List getHints() { @Override public boolean shouldRender(HudState hudState) { - return super.shouldRender(hudState) && hudState == HudState.COMBAT - && !ModUtils.getInfluenceManager().isSelecting(); + return super.shouldRender(hudState) && hudState == HudState.COMBAT; } } diff --git a/src/main/java/org/minefortress/utils/ModUtils.java b/src/main/java/org/minefortress/utils/ModUtils.java index 9bb8028b..ae8568f2 100644 --- a/src/main/java/org/minefortress/utils/ModUtils.java +++ b/src/main/java/org/minefortress/utils/ModUtils.java @@ -10,7 +10,6 @@ import net.remmintan.mods.minefortress.core.interfaces.blueprints.IClientBlueprintManager; import net.remmintan.mods.minefortress.core.interfaces.client.IClientFortressManager; import net.remmintan.mods.minefortress.core.interfaces.client.IClientManagersProvider; -import net.remmintan.mods.minefortress.core.interfaces.infuence.IClientInfluenceManager; import net.remmintan.mods.minefortress.core.interfaces.professions.IClientProfessionManager; import net.remmintan.mods.minefortress.core.interfaces.selections.ISelectionManager; import net.remmintan.mods.minefortress.core.interfaces.tasks.IAreasClientManager; @@ -80,9 +79,6 @@ public static IClientProfessionManager getProfessionManager() { public static IClientBlueprintManager getBlueprintManager() { return getClientManagersProvider().get_BlueprintManager(); } - public static IClientInfluenceManager getInfluenceManager() { - return getClientManagersProvider().get_InfluenceManager(); - } public static ISelectionManager getSelectionManager() { return getClientManagersProvider().get_SelectionManager(); @@ -105,12 +101,10 @@ public static boolean shouldReleaseCamera() { final var blueprintManager = getBlueprintManager(); final var selectionManager = getSelectionManager(); final var areasClientManager = getAreasClientManager(); - final var influenceManager = getInfluenceManager(); final var anyManagerSelecting = blueprintManager.isSelecting() || selectionManager.isSelecting() || - areasClientManager.isSelecting() || - influenceManager.isSelecting(); + areasClientManager.isSelecting(); return options.pickItemKey.isPressed() || (options.sprintKey.isPressed() && !anyManagerSelecting); } diff --git a/src/main/resources/minefortress.mixins.json b/src/main/resources/minefortress.mixins.json index b9408a96..c08ce388 100644 --- a/src/main/resources/minefortress.mixins.json +++ b/src/main/resources/minefortress.mixins.json @@ -21,8 +21,7 @@ "network.FortressPacketByteBufMixin", "network.FortressServerPlayNetworkHandlerMixin", "renderer.gui.FortressScreenHandler", - "renderer.gui.FortressSimpleInventoryMixin", - "renderer.gui.worldcreator.LevelPropertiesMixin" + "renderer.gui.FortressSimpleInventoryMixin" ], "client": [ "FortressMinecraftClientMixin", @@ -42,7 +41,6 @@ "renderer.gui.GameModeSelectionScreenMixin", "renderer.gui.worldcreator.FortressCreateWorldScreenMixin", "renderer.gui.worldcreator.FortressCyclingButtonMixin", - "renderer.gui.worldcreator.GameTabMixin", "renderer.gui.worldcreator.WorldCreatorMixin", "world.ClientWorldMixin", "world.WorldLoadedEventMixin" diff --git a/src/networking/java/net/remmintan/mods/minefortress/networking/c2s/C2SCaptureInfluencePositionPacket.java b/src/networking/java/net/remmintan/mods/minefortress/networking/c2s/C2SCaptureInfluencePositionPacket.java deleted file mode 100644 index 7f460497..00000000 --- a/src/networking/java/net/remmintan/mods/minefortress/networking/c2s/C2SCaptureInfluencePositionPacket.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.remmintan.mods.minefortress.networking.c2s; - -import net.minecraft.network.PacketByteBuf; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.math.BlockPos; -import net.remmintan.mods.minefortress.core.interfaces.networking.FortressC2SPacket; - -import java.util.UUID; - -public class C2SCaptureInfluencePositionPacket implements FortressC2SPacket { - - public static final String CHANNEL = "capture_influence_position"; - - private final UUID taskId; - private final BlockPos pos; - - public C2SCaptureInfluencePositionPacket(UUID taskId, BlockPos pos) { - this.taskId = taskId; - this.pos = pos; - } - - public C2SCaptureInfluencePositionPacket(PacketByteBuf buf) { - this.taskId = buf.readUuid(); - this.pos = buf.readBlockPos(); - } - - @Override - public void handle(MinecraftServer server, ServerPlayerEntity player) { - getManagersProvider(server, player).getInfluenceManager().addCapturePosition(taskId, pos, player); - } - - @Override - public void write(PacketByteBuf buf) { - buf.writeUuid(taskId); - buf.writeBlockPos(pos); - } -} diff --git a/src/networking/java/net/remmintan/mods/minefortress/networking/c2s/C2SUpdateNewInfluencePosition.java b/src/networking/java/net/remmintan/mods/minefortress/networking/c2s/C2SUpdateNewInfluencePosition.java deleted file mode 100644 index a78e904a..00000000 --- a/src/networking/java/net/remmintan/mods/minefortress/networking/c2s/C2SUpdateNewInfluencePosition.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.remmintan.mods.minefortress.networking.c2s; - -import net.minecraft.network.PacketByteBuf; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.math.BlockPos; -import net.remmintan.mods.minefortress.core.interfaces.networking.FortressC2SPacket; -import org.jetbrains.annotations.NotNull; - -public class C2SUpdateNewInfluencePosition implements FortressC2SPacket { - - public static final String CHANNEL = "update_new_influence_position"; - private final BlockPos pos; - - public C2SUpdateNewInfluencePosition(@NotNull BlockPos pos) { - this.pos = pos; - } - - public C2SUpdateNewInfluencePosition(PacketByteBuf buf) { - this.pos = buf.readBlockPos(); - } - - @Override - public void handle(MinecraftServer server, ServerPlayerEntity player) { - final var fortressServerManager = getManagersProvider(server, player); - final var influenceManager = fortressServerManager.getInfluenceManager(); - influenceManager.checkNewPositionAndUpdateClientState(pos, player); - } - - @Override - public void write(PacketByteBuf buf) { - buf.writeBlockPos(pos); - } -} diff --git a/src/networking/java/net/remmintan/mods/minefortress/networking/registries/ClientNetworkReceivers.java b/src/networking/java/net/remmintan/mods/minefortress/networking/registries/ClientNetworkReceivers.java index 7e637cf0..4443c400 100644 --- a/src/networking/java/net/remmintan/mods/minefortress/networking/registries/ClientNetworkReceivers.java +++ b/src/networking/java/net/remmintan/mods/minefortress/networking/registries/ClientNetworkReceivers.java @@ -26,8 +26,6 @@ public static void registerReceivers() { registerReceiver(S2COpenHireMenuPacket.CHANNEL, S2COpenHireMenuPacket::new); registerReceiver(SyncHireProgress.CHANNEL, SyncHireProgress::new); registerReceiver(S2CSyncAreasPacket.CHANNEL, S2CSyncAreasPacket::new); - registerReceiver(S2CSyncInfluence.CHANNEL, S2CSyncInfluence::new); - registerReceiver(S2CUpdateInfluenceBorderStage.CHANNEL, S2CUpdateInfluenceBorderStage::new); registerReceiver(S2COpenBuildingRepairScreen.CHANNEL, S2COpenBuildingRepairScreen::new); registerReceiver(S2CSyncFightManager.CHANNEL, S2CSyncFightManager::new); registerReceiver(S2CAddClientTasksPacket.CHANNEL, S2CAddClientTasksPacket::new); diff --git a/src/networking/java/net/remmintan/mods/minefortress/networking/registries/ServerNetworkReceivers.java b/src/networking/java/net/remmintan/mods/minefortress/networking/registries/ServerNetworkReceivers.java index 3e61f6e7..4b8b8ab4 100644 --- a/src/networking/java/net/remmintan/mods/minefortress/networking/registries/ServerNetworkReceivers.java +++ b/src/networking/java/net/remmintan/mods/minefortress/networking/registries/ServerNetworkReceivers.java @@ -32,8 +32,6 @@ public static void registerReceivers() { registerReceiver(C2SHirePawnWithScreenPacket.CHANNEL, C2SHirePawnWithScreenPacket::new); registerReceiver(C2SAddAreaPacket.CHANNEL, C2SAddAreaPacket::new); registerReceiver(C2SRemoveAutomationAreaPacket.CHANNEL, C2SRemoveAutomationAreaPacket::new); - registerReceiver(C2SCaptureInfluencePositionPacket.CHANNEL, C2SCaptureInfluencePositionPacket::new); - registerReceiver(C2SUpdateNewInfluencePosition.CHANNEL, C2SUpdateNewInfluencePosition::new); registerReceiver(C2SJumpToCampfire.CHANNEL, C2SJumpToCampfire::new); registerReceiver(C2SClearActiveBlueprint.CHANNEL, C2SClearActiveBlueprint::new); registerReceiver(C2SDestroyBuilding.CHANNEL, C2SDestroyBuilding::new); diff --git a/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/ClientboundSyncFortressManagerPacket.java b/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/ClientboundSyncFortressManagerPacket.java index 747b89e0..ffb01e52 100644 --- a/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/ClientboundSyncFortressManagerPacket.java +++ b/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/ClientboundSyncFortressManagerPacket.java @@ -14,22 +14,19 @@ public class ClientboundSyncFortressManagerPacket implements FortressS2CPacket { private final boolean connectedToTheServer; private final int maxColonistsCount; private final int reservedColonistsCount; - private final boolean borderEnabled; public ClientboundSyncFortressManagerPacket(int colonistsCount, BlockPos fortressPos, FortressGamemode fortressGamemode, boolean connectedToTheServer, int maxColonistsCount, - int reservedColonistsCount, - boolean borderEnabled) { + int reservedColonistsCount) { this.colonistsCount = colonistsCount; this.fortressPos = fortressPos; this.fortressGamemode = fortressGamemode; this.connectedToTheServer = connectedToTheServer; this.maxColonistsCount = maxColonistsCount; this.reservedColonistsCount = reservedColonistsCount; - this.borderEnabled = borderEnabled; } public ClientboundSyncFortressManagerPacket(PacketByteBuf buf) { @@ -44,7 +41,6 @@ public ClientboundSyncFortressManagerPacket(PacketByteBuf buf) { this.maxColonistsCount = buf.readInt(); this.connectedToTheServer = buf.readBoolean(); this.reservedColonistsCount = buf.readInt(); - this.borderEnabled = buf.readBoolean(); } @Override @@ -57,8 +53,7 @@ public void handle(MinecraftClient client) { this.fortressGamemode, this.connectedToTheServer, this.maxColonistsCount, - reservedColonistsCount, - borderEnabled + reservedColonistsCount ); } @@ -74,6 +69,5 @@ public void write(PacketByteBuf buf) { buf.writeInt(maxColonistsCount); buf.writeBoolean(connectedToTheServer); buf.writeInt(reservedColonistsCount); - buf.writeBoolean(borderEnabled); } } diff --git a/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/S2CSyncInfluence.java b/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/S2CSyncInfluence.java deleted file mode 100644 index 9aa1828c..00000000 --- a/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/S2CSyncInfluence.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.remmintan.mods.minefortress.networking.s2c; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.util.math.BlockPos; -import net.remmintan.mods.minefortress.core.interfaces.networking.FortressS2CPacket; - -import java.util.List; - -public class S2CSyncInfluence implements FortressS2CPacket { - - - public static final String CHANNEL = "sync_influence"; - private final List influencePositions; - - public S2CSyncInfluence(List influencePositions) { - this.influencePositions = influencePositions; - } - - public S2CSyncInfluence(PacketByteBuf buf) { - this.influencePositions = buf.readList(PacketByteBuf::readBlockPos); - } - - @Override - public void write(PacketByteBuf buf) { - buf.writeCollection(influencePositions, PacketByteBuf::writeBlockPos); - } - - @Override - public void handle(MinecraftClient client) { - final var provider = getManagersProvider(); - provider.get_InfluenceManager().sync(influencePositions); - } -} diff --git a/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/S2CUpdateInfluenceBorderStage.java b/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/S2CUpdateInfluenceBorderStage.java deleted file mode 100644 index 9af35e32..00000000 --- a/src/networking/java/net/remmintan/mods/minefortress/networking/s2c/S2CUpdateInfluenceBorderStage.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.remmintan.mods.minefortress.networking.s2c; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.world.border.WorldBorderStage; -import net.remmintan.mods.minefortress.core.interfaces.networking.FortressS2CPacket; - -public class S2CUpdateInfluenceBorderStage implements FortressS2CPacket { - - public static final String CHANNEL = "update_influence_border_stage"; - private final WorldBorderStage worldBorderStage; - - public S2CUpdateInfluenceBorderStage(WorldBorderStage worldBorderStage) { - this.worldBorderStage = worldBorderStage; - } - - public S2CUpdateInfluenceBorderStage(PacketByteBuf buf) { - this.worldBorderStage = buf.readEnumConstant(WorldBorderStage.class); - } - - @Override - public void write(PacketByteBuf buf) { - buf.writeEnumConstant(worldBorderStage); - } - - @Override - public void handle(MinecraftClient client) { - final var provider = getManagersProvider(); - final var influenceManager = provider.get_InfluenceManager(); - influenceManager.getInfluencePosStateHolder().setCorrect(worldBorderStage); - } -} diff --git a/src/panama/java/net/remmintan/panama/renderer/BlueprintRenderer.java b/src/panama/java/net/remmintan/panama/renderer/BlueprintRenderer.java index 70601cd1..4ebb5321 100644 --- a/src/panama/java/net/remmintan/panama/renderer/BlueprintRenderer.java +++ b/src/panama/java/net/remmintan/panama/renderer/BlueprintRenderer.java @@ -12,7 +12,6 @@ import net.minecraft.util.BlockRotation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3i; -import net.remmintan.mods.minefortress.core.FortressState; import net.remmintan.mods.minefortress.core.dtos.buildings.BlueprintMetadata; import net.remmintan.mods.minefortress.core.interfaces.blueprints.IBlockDataProvider; import net.remmintan.mods.minefortress.core.interfaces.blueprints.IStructureRenderInfoProvider; @@ -233,11 +232,6 @@ private void renderLayer(RenderLayer renderLayer, BuiltBlueprint builtBlueprint, @NotNull private static IStructureRenderInfoProvider getStructureRenderInfoProvider() { final var provider = CoreModUtils.getMineFortressManagersProvider(); - final var manager = provider.get_ClientFortressManager(); - final var state = manager.getState(); - if(state == FortressState.COMBAT) { - return provider.get_InfluenceManager(); - } return provider.get_BlueprintManager(); } diff --git a/src/selections/java/net/remmintan/gobi/SelectionManager.java b/src/selections/java/net/remmintan/gobi/SelectionManager.java index 739f7aaf..98be750b 100644 --- a/src/selections/java/net/remmintan/gobi/SelectionManager.java +++ b/src/selections/java/net/remmintan/gobi/SelectionManager.java @@ -119,16 +119,6 @@ public void tickSelectionUpdate(@Nullable BlockPos blockPos, Direction clickedFa } else { inCorrectState = true; } - - provider - .get_InfluenceManager() - .getFortressBorder() - .ifPresent(border -> - inCorrectState = inCorrectState && selection - .getSelection() - .stream() - .allMatch(border::contains) - ); } }