Skip to content

Commit e9a7b81

Browse files
Wzp-2008Wzp-2008
authored andcommitted
fix: fix can report a player twice bug
fix: fix flash bug
1 parent e67cc90 commit e9a7b81

6 files changed

Lines changed: 32 additions & 22 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ minecraft_version=1.19
66
yarn_mappings=1.19+build.4
77
loader_version=0.14.8
88
# Mod Properties
9-
mod_version=0.1.3+1.19
9+
mod_version=0.1.4+1.19
1010
maven_group=org.mmga
1111
archives_base_name=controlgem
1212
# Dependencies

src/main/java/org/mmga/controlgem/commands/ReportCommand.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@
1515
import org.mmga.controlgem.events.ServerWorldTickEvent;
1616
import org.mmga.controlgem.threads.PlayerJobThread;
1717

18-
import java.util.ArrayList;
19-
import java.util.HashMap;
20-
import java.util.List;
21-
import java.util.Map;
18+
import java.util.*;
2219

2320
/**
2421
* Created On 2022/7/12 23:51
@@ -27,8 +24,9 @@
2724
* @version 1.0.0
2825
*/
2926
public class ReportCommand implements Command<ServerCommandSource> {
30-
Map<ServerPlayerEntity, Integer> playerCount = new HashMap<>();
31-
Map<ServerCommandSource, ArrayList<ServerPlayerEntity>> playersReport = new HashMap<>();
27+
public static final Map<ServerPlayerEntity, Integer> playerCount = new HashMap<>();
28+
public static final Map<UUID, ArrayList<ServerPlayerEntity>> playersReport = new HashMap<>();
29+
3230
@Override
3331
public int run(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
3432
ServerPlayerEntity target = EntityArgumentType.getPlayer(context, "target");
@@ -40,13 +38,14 @@ public int run(CommandContext<ServerCommandSource> context) throws CommandSyntax
4038
}
4139
int count = playerCount.getOrDefault(target, 0) + 1;
4240
playerCount.put(target, count);
43-
ArrayList<ServerPlayerEntity> list = playersReport.getOrDefault(source, new ArrayList<>());
41+
UUID sender = source.getChatMessageSender().uuid();
42+
ArrayList<ServerPlayerEntity> list = playersReport.getOrDefault(sender, new ArrayList<>());
4443
if (list.contains(target)) {
4544
source.sendFeedback(Text.translatable("tip.controlgem.report.already"), false);
4645
return 1;
4746
}
4847
list.add(target);
49-
playersReport.put(source, list);
48+
playersReport.put(sender, list);
5049
MinecraftServer server = target.getServer();
5150
assert server != null;
5251
PlayerManager playerManager = server.getPlayerManager();
@@ -58,7 +57,6 @@ public int run(CommandContext<ServerCommandSource> context) throws CommandSyntax
5857
for (ServerPlayerEntity player : playerManager.getPlayerList()) {
5958
player.playSound(SoundEvents.BLOCK_ANVIL_LAND, SoundCategory.VOICE, 1.0f, 1.0f);
6059
}
61-
playerCount.remove(target);
6260
}
6361
source.sendFeedback(Text.translatable("tip.controlgem.report.success", target.getName()), true);
6462
return 1;

src/main/java/org/mmga/controlgem/events/StartClientWorldTick.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,31 @@
1919
@Environment(EnvType.CLIENT)
2020
public class StartClientWorldTick implements ClientTickEvents.StartWorldTick {
2121
public static List<ClientOnServerTick.Data> data = new ArrayList<>();
22-
private final ArrayList<TaskWidget> tasks = new ArrayList<>();
22+
private ArrayList<TaskWidget> tasks = new ArrayList<>();
2323

2424
@Override
2525
public void onStartTick(ClientWorld world) {
26-
for (TaskWidget task : tasks) {
27-
CottonHud.remove(task);
28-
}
29-
tasks.clear();
3026
int i = data.size();
27+
List<TaskWidget> tData = new ArrayList<>();
28+
int size = tasks.size();
3129
for (int i1 = 0; i1 < i; i1++) {
3230
ClientOnServerTick.Data d = data.get(i1);
3331
String name = d.getName();
3432
String word = d.getWord();
3533
int fullTime = d.getFullTime();
3634
int time = d.getTime();
3735
TaskWidget taskWidget = new TaskWidget(name, word, fullTime, time);
38-
tasks.add(taskWidget);
36+
if (size > i1) {
37+
CottonHud.remove(tasks.get(i1));
38+
}
3939
CottonHud.add(taskWidget, 10, 10 + 15 * i1);
40+
tData.add(taskWidget);
41+
}
42+
if (size > i) {
43+
for (TaskWidget task : tasks) {
44+
CottonHud.remove(task);
45+
}
4046
}
41-
data.clear();
47+
tasks = new ArrayList<>(tData);
4248
}
4349
}

src/main/java/org/mmga/controlgem/threads/PlayerJobThread.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@
1515
import net.minecraft.sound.SoundEvents;
1616
import net.minecraft.text.Text;
1717
import net.minecraft.world.GameMode;
18+
import org.mmga.controlgem.commands.ReportCommand;
1819
import org.mmga.controlgem.events.ServerWorldTickEvent;
1920
import org.mmga.controlgem.utils.TitleUtils;
2021

21-
import java.util.HashMap;
22-
import java.util.List;
23-
import java.util.Random;
22+
import java.util.*;
2423

2524
/**
2625
* Created On 2022/7/13 23:43
@@ -135,6 +134,11 @@ public void run() {
135134
}
136135
}
137136
ServerWorldTickEvent.PLAYERS_JOBS.remove(this.getEntity());
137+
ReportCommand.playerCount.put(entity, 0);
138+
for (UUID uuid : ReportCommand.playersReport.keySet()) {
139+
ArrayList<ServerPlayerEntity> serverPlayerEntities = ReportCommand.playersReport.get(uuid);
140+
serverPlayerEntities.remove(entity);
141+
}
138142
}
139143

140144
public ServerPlayerEntity getEntity() {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@
2020
"tip.controlgem.success": "§1 %s §r was success!",
2121
"tip.controlgem.unknown": "This player is not controlled",
2222
"tip.controlgem.win": "Player §1 %s §r was win!",
23-
"tip.controlgem.report.success": "Report success!"
23+
"tip.controlgem.report.already": "You already report this player once!",
24+
"tip.controlgem.report.success": "Report %s was succeeded!"
2425
}

src/main/resources/assets/controlgem/lang/zh_cn.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@
2020
"tip.controlgem.success": "§1%s完成了任务",
2121
"tip.controlgem.unknown": "这个玩家没有被控制",
2222
"tip.controlgem.win": "玩家§1%s赢了!",
23-
"tip.controlgem.report.success": "举报成功!"
23+
"tip.controlgem.report.success": "成功举报玩家%s!",
24+
"tip.controlgem.report.already": "你举报过这个玩家一次了!"
2425
}

0 commit comments

Comments
 (0)