Skip to content

Commit d487a0d

Browse files
committed
send resources
1 parent 96cda95 commit d487a0d

File tree

6 files changed

+90
-131
lines changed

6 files changed

+90
-131
lines changed

TODO.txt

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ Bugfixes
3232
[🟡] tutorial camera centering is off
3333
[🟡] Mounted piglins don't heal from nether terrain
3434

35+
[❌] cursor off in server but not on singleplayer?
36+
3537

3638
Quality of Life
3739
---------------

src/main/java/com/solegendary/reignofnether/player/PlayerClientEvents.java

-16
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,6 @@ public class PlayerClientEvents {
4949

5050
@SubscribeEvent
5151
public static void onRegisterCommand(RegisterClientCommandsEvent evt) {
52-
53-
evt.getDispatcher().register(Commands.literal("send-food")
54-
.then(Commands.argument("player", EntityArgument.player())
55-
.then(Commands.argument("amount", IntegerArgumentType.integer(0,Integer.MAX_VALUE))
56-
.executes((command) -> ResourcesClientEvents.trySendingResources(command, ResourceName.FOOD)))));
57-
58-
evt.getDispatcher().register(Commands.literal("send-wood")
59-
.then(Commands.argument("player", EntityArgument.player())
60-
.then(Commands.argument("amount", IntegerArgumentType.integer(0,Integer.MAX_VALUE))
61-
.executes((command) -> ResourcesClientEvents.trySendingResources(command, ResourceName.WOOD)))));
62-
63-
evt.getDispatcher().register(Commands.literal("send-ore")
64-
.then(Commands.argument("player", EntityArgument.player())
65-
.then(Commands.argument("amount", IntegerArgumentType.integer(0,Integer.MAX_VALUE))
66-
.executes((command) -> ResourcesClientEvents.trySendingResources(command, ResourceName.ORE)))));
67-
6852
evt.getDispatcher().register(Commands.literal("rts-camera").executes((command) -> {
6953
OrthoviewClientEvents.tryToToggleEnable();
7054
return 1;

src/main/java/com/solegendary/reignofnether/resources/ResourcesClientEvents.java

-39
Original file line numberDiff line numberDiff line change
@@ -200,43 +200,4 @@ public static void onRenderLevel(RenderLevelStageEvent evt) {
200200
}
201201
floatingTexts.removeIf(t -> t.tickAge > FLOATING_TEXT_MAX_AGE);
202202
}
203-
204-
public static int trySendingResources(CommandContext<CommandSourceStack> context, ResourceName resourceName) throws CommandSyntaxException {
205-
Player thisPlayer = context.getSource().getPlayer();
206-
Player sendToPlayer = EntityArgument.getPlayer(context, "player");
207-
int amount = IntegerArgumentType.getInteger(context, "amount");
208-
209-
Resources res = getOwnResources();
210-
if (res == null || thisPlayer == null)
211-
return 0;
212-
213-
if (!AlliancesClient.isAllied(thisPlayer.getName().getString(), sendToPlayer.getName().getString())) {
214-
thisPlayer.sendSystemMessage(Component.literal(""));
215-
thisPlayer.sendSystemMessage(Component.literal(I18n.get("server.resources.reignofnether.not_allies")));
216-
thisPlayer.sendSystemMessage(Component.literal(""));
217-
}
218-
219-
switch (resourceName) {
220-
case FOOD -> {
221-
if (res.food < amount) {
222-
thisPlayer.sendSystemMessage(Component.translatable(I18n.get("server.resources.reignofnether.not_enough_food")));
223-
return 0;
224-
}
225-
}
226-
case WOOD -> {
227-
if (res.wood < amount) {
228-
thisPlayer.sendSystemMessage(Component.translatable(I18n.get("server.resources.reignofnether.not_enough_food")));
229-
return 0;
230-
}
231-
}
232-
case ORE -> {
233-
if (res.ore < amount) {
234-
thisPlayer.sendSystemMessage(Component.translatable(I18n.get("server.resources.reignofnether.not_enough_food")));
235-
return 0;
236-
}
237-
}
238-
}
239-
ResourcesServerboundPacket.sendResources(thisPlayer.getName().getString(), sendToPlayer.getName().getString(), resourceName, amount);
240-
return 1;
241-
}
242203
}

src/main/java/com/solegendary/reignofnether/resources/ResourcesServerEvents.java

+81-20
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.solegendary.reignofnether.resources;
22

3+
import com.mojang.brigadier.arguments.IntegerArgumentType;
4+
import com.mojang.brigadier.context.CommandContext;
5+
import com.mojang.brigadier.exceptions.CommandSyntaxException;
36
import com.solegendary.reignofnether.ReignOfNether;
7+
import com.solegendary.reignofnether.alliance.AlliancesServerEvents;
48
import com.solegendary.reignofnether.building.*;
59
import com.solegendary.reignofnether.player.PlayerServerEvents;
610
import com.solegendary.reignofnether.registrars.BlockRegistrar;
@@ -11,14 +15,20 @@
1115
import com.solegendary.reignofnether.unit.UnitServerEvents;
1216
import com.solegendary.reignofnether.unit.interfaces.Unit;
1317
import net.minecraft.client.resources.language.I18n;
18+
import net.minecraft.commands.CommandSourceStack;
19+
import net.minecraft.commands.Commands;
20+
import net.minecraft.commands.arguments.EntityArgument;
1421
import net.minecraft.core.BlockPos;
22+
import net.minecraft.network.chat.Component;
1523
import net.minecraft.server.level.ServerLevel;
1624
import net.minecraft.world.entity.LivingEntity;
25+
import net.minecraft.world.entity.player.Player;
1726
import net.minecraft.world.level.GameRules;
1827
import net.minecraft.world.level.Level;
1928
import net.minecraft.world.level.block.*;
2029
import net.minecraft.world.level.block.state.BlockState;
2130
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
31+
import net.minecraftforge.event.RegisterCommandsEvent;
2232
import net.minecraftforge.event.TickEvent;
2333
import net.minecraftforge.event.entity.player.PlayerEvent;
2434
import net.minecraftforge.event.level.BlockEvent;
@@ -282,29 +292,80 @@ public static void fellAdjacentLogs(BlockPos bp, ArrayList<BlockPos> bpsExcluded
282292
}
283293
}
284294

285-
public static void trySendingResources(String playerGiving, String playerReceiving, ResourceName resourceName, int amount) {
286-
if (canAfford(playerGiving, resourceName, amount)) {
287-
addSubtractResources(new Resources(playerGiving,
288-
resourceName == ResourceName.FOOD ? amount : 0,
289-
resourceName == ResourceName.WOOD ? amount : 0,
290-
resourceName == ResourceName.ORE ? amount : 0
295+
@SubscribeEvent
296+
public static void onRegisterCommand(RegisterCommandsEvent evt) {
297+
298+
evt.getDispatcher().register(Commands.literal("send-food")
299+
.then(Commands.argument("player", EntityArgument.player())
300+
.then(Commands.argument("amount", IntegerArgumentType.integer(0, Integer.MAX_VALUE))
301+
.executes((command) -> trySendingResources(command, ResourceName.FOOD)))));
302+
303+
evt.getDispatcher().register(Commands.literal("send-wood")
304+
.then(Commands.argument("player", EntityArgument.player())
305+
.then(Commands.argument("amount", IntegerArgumentType.integer(0, Integer.MAX_VALUE))
306+
.executes((command) -> trySendingResources(command, ResourceName.WOOD)))));
307+
308+
evt.getDispatcher().register(Commands.literal("send-ore")
309+
.then(Commands.argument("player", EntityArgument.player())
310+
.then(Commands.argument("amount", IntegerArgumentType.integer(0, Integer.MAX_VALUE))
311+
.executes((command) -> trySendingResources(command, ResourceName.ORE)))));
312+
}
313+
314+
public static int trySendingResources(CommandContext<CommandSourceStack> context, ResourceName resourceName) throws CommandSyntaxException {
315+
Player sendingPlayer = context.getSource().getPlayer();
316+
Player receivingPlayer = EntityArgument.getPlayer(context, "player");
317+
int amount = IntegerArgumentType.getInteger(context, "amount");
318+
if (sendingPlayer == null)
319+
return 0;
320+
String sendingPlayerName = sendingPlayer.getName().getString();
321+
String receivingPlayerName = receivingPlayer.getName().getString();
322+
323+
Resources res = null;
324+
for (Resources resources : resourcesList)
325+
if (resources.ownerName.equals(sendingPlayer.getName().getString()))
326+
res = resources;
327+
if (res == null)
328+
return 0;
329+
330+
if (sendingPlayerName.equals(receivingPlayerName)) {
331+
PlayerServerEvents.sendMessageToPlayer(sendingPlayerName, "server.resources.reignofnether.sending_to_self");
332+
return 0;
333+
} else if (!AlliancesServerEvents.isAllied(sendingPlayerName, receivingPlayerName)) {
334+
PlayerServerEvents.sendMessageToPlayer(sendingPlayerName, "server.resources.reignofnether.not_allies");
335+
return 0;
336+
} else if (!canAfford(sendingPlayerName, resourceName, amount)) {
337+
ResourcesClientboundPacket.warnInsufficientResources(sendingPlayerName,
338+
resourceName == ResourceName.FOOD,
339+
resourceName == ResourceName.WOOD,
340+
resourceName == ResourceName.ORE
341+
);
342+
return 0;
343+
} else {
344+
addSubtractResources(new Resources(sendingPlayerName,
345+
resourceName == ResourceName.FOOD ? -amount : 0,
346+
resourceName == ResourceName.WOOD ? -amount : 0,
347+
resourceName == ResourceName.ORE ? -amount : 0
348+
));
349+
addSubtractResources(new Resources(receivingPlayerName,
350+
resourceName == ResourceName.FOOD ? -amount : 0,
351+
resourceName == ResourceName.WOOD ? -amount : 0,
352+
resourceName == ResourceName.ORE ? -amount : 0
291353
));
292-
String resString = null;
293354
switch (resourceName) {
294-
case FOOD -> resString = I18n.get("resources.reignofnether.food");
295-
case WOOD -> resString = I18n.get("resources.reignofnether.wood");
296-
case ORE -> resString = I18n.get("resources.reignofnether.ore");
297-
}
298-
if (resString != null) {
299-
PlayerServerEvents.sendMessageToPlayer(playerGiving, I18n.get("server.resources.reignofnether.sent_resources", amount, resString, playerReceiving));
300-
PlayerServerEvents.sendMessageToPlayer(playerReceiving, I18n.get("server.resources.reignofnether.received_resources", amount, resString, playerGiving));
355+
case FOOD -> {
356+
PlayerServerEvents.sendMessageToPlayer(sendingPlayerName, "server.resources.reignofnether.sent_food", false, amount, receivingPlayerName);
357+
PlayerServerEvents.sendMessageToPlayer(receivingPlayerName, "server.resources.reignofnether.received_food", false, amount, sendingPlayerName);
358+
}
359+
case WOOD -> {
360+
PlayerServerEvents.sendMessageToPlayer(sendingPlayerName, "server.resources.reignofnether.sent_wood", false, amount, receivingPlayerName);
361+
PlayerServerEvents.sendMessageToPlayer(receivingPlayerName, "server.resources.reignofnether.received_wood", false, amount, sendingPlayerName);
362+
}
363+
case ORE -> {
364+
PlayerServerEvents.sendMessageToPlayer(sendingPlayerName, "server.resources.reignofnether.sent_ore", false, amount, receivingPlayerName);
365+
PlayerServerEvents.sendMessageToPlayer(receivingPlayerName, "server.resources.reignofnether.received_ore", false, amount, sendingPlayerName);
366+
}
301367
}
302-
} else {
303-
ResourcesClientboundPacket.warnInsufficientResources(playerGiving,
304-
resourceName == ResourceName.FOOD,
305-
resourceName == ResourceName.WOOD,
306-
resourceName == ResourceName.ORE
307-
);
368+
return 1;
308369
}
309370
}
310371

src/main/java/com/solegendary/reignofnether/resources/ResourcesServerboundPacket.java

-54
This file was deleted.

src/main/resources/assets/reignofnether/lang/en_us.json

+7-2
Original file line numberDiff line numberDiff line change
@@ -638,9 +638,14 @@
638638
"server.resources.reignofnether.not_enough_pop": "You don't have enough population supply",
639639
"server.resources.reignofnether.max_pop": "You have reached the maximum population",
640640

641-
"server.resources.reignofnether.sent_resources": "You gave %d %s to %d!",
642-
"server.resources.reignofnether.received_resources": "You received %d %s from %d!",
641+
"server.resources.reignofnether.sent_food": "You gave %d food to %d!",
642+
"server.resources.reignofnether.received_food": "You received %d food from %d!",
643+
"server.resources.reignofnether.sent_wood": "You gave %d wood to %d!",
644+
"server.resources.reignofnether.received_wood": "You received %d wood from %d!",
645+
"server.resources.reignofnether.sent_ore": "You gave %d ore to %d!",
646+
"server.resources.reignofnether.received_ore": "You received %d ore from %d!",
643647
"server.resources.reignofnether.not_allies": "You can only send resources to allies",
648+
"server.resources.reignofnether.sending_to_self": "You can't send resources to yourself'",
644649

645650
"research.reignofnether.upgrade_completed": "Upgrade completed: %s",
646651
"research.reignofnether.advanced_portals": "Advanced Portals",

0 commit comments

Comments
 (0)