Skip to content

Commit fee42f6

Browse files
committed
added notifications for legacypvp
1 parent 70e904c commit fee42f6

File tree

6 files changed

+195
-3
lines changed

6 files changed

+195
-3
lines changed

simpleclient-1.19.4/src/main/java/simpleclient/feature/LegacyPvP.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
import net.minecraft.resources.ResourceLocation;
1111
import net.minecraft.world.entity.player.Player;
1212
import simpleclient.SimpleClient;
13+
import simpleclient.gui.SimpleClientToast;
14+
import simpleclient.item.Item;
15+
import simpleclient.item.ItemStack;
16+
import simpleclient.text.Text;
1317

1418
import java.util.HashSet;
1519
import java.util.Set;
@@ -35,7 +39,15 @@ public static void init() {
3539
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> LegacyPvP.ENABLED = false);
3640
ClientPlayNetworking.registerGlobalReceiver(new ResourceLocation("simpleclient", "legacypvp"), (client, handler, buf, sender) -> {
3741
byte method = buf.readByte();
38-
if (method == 0) LegacyPvP.ENABLED = true;
42+
if (method == 0) {
43+
LegacyPvP.ENABLED = true;
44+
client.getToasts().addToast(new SimpleClientToast(
45+
new ItemStack(new Item("minecraft:golden_sword")),
46+
Text.literal("Legacy PvP ist auf"),
47+
Text.literal("diesem Server aktiviert"),
48+
1000 * 10
49+
));
50+
}
3951
if (method == 1) LegacyPvP.ENABLED = false;
4052
if (method == 2) blockingPlayers.add(buf.readUUID());
4153
if (method == 3) blockingPlayers.remove(buf.readUUID());
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package simpleclient.gui;
2+
3+
import com.mojang.blaze3d.systems.RenderSystem;
4+
import com.mojang.blaze3d.vertex.PoseStack;
5+
import net.minecraft.client.gui.GuiComponent;
6+
import net.minecraft.client.gui.components.toasts.Toast;
7+
import net.minecraft.client.gui.components.toasts.ToastComponent;
8+
import net.minecraft.client.renderer.GameRenderer;
9+
import net.minecraft.resources.ResourceLocation;
10+
import simpleclient.adapter.ItemRendererAdapter;
11+
import simpleclient.adapter.ItemRendererAdapterImpl;
12+
import simpleclient.adapter.TextRendererAdapter;
13+
import simpleclient.adapter.TextRendererAdapterImpl;
14+
import simpleclient.item.ItemStack;
15+
import simpleclient.text.Text;
16+
17+
public class SimpleClientToast implements Toast {
18+
private ItemStack icon;
19+
private long duration;
20+
private Text text1;
21+
private Text text2;
22+
private boolean playedSound;
23+
24+
public SimpleClientToast(ItemStack icon, Text text1, Text text2, long duration) {
25+
this.icon = icon;
26+
this.text1 = text1;
27+
this.text2 = text2;
28+
this.duration = duration;
29+
}
30+
31+
public SimpleClientToast(ItemStack icon, Text text1, Text text2) {
32+
this(icon, text1, text2, 5000);
33+
}
34+
35+
public SimpleClientToast(Text text1, Text text2, long duration) {
36+
this(null, text1, text2, duration);
37+
}
38+
39+
public SimpleClientToast(Text text1, Text text2) {
40+
this(text1, text2, 5000);
41+
}
42+
43+
@Override
44+
public Visibility render(PoseStack poseStack, ToastComponent toastComponent, long time) {
45+
TextRendererAdapter textRenderer = new TextRendererAdapterImpl(poseStack, toastComponent.getMinecraft().font);
46+
ItemRendererAdapter itemRenderer = new ItemRendererAdapterImpl(poseStack);
47+
RenderSystem.setShader(GameRenderer::getPositionTexShader);
48+
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
49+
RenderSystem.setShaderTexture(0, TEXTURE);
50+
GuiComponent.blit(poseStack, 0, 0, 0, 0, width(), height());
51+
if (icon != null) itemRenderer.renderItem(icon, 8, 8);
52+
if (text1 != null) textRenderer.render(text1, icon == null ? 7 : 30, 7);
53+
if (text2 != null) textRenderer.render(text2, icon == null ? 7 : 30, 18);
54+
return time > duration ? Visibility.HIDE : Visibility.SHOW;
55+
}
56+
}

simpleclient-1.20.1/src/main/java/simpleclient/feature/LegacyPvP.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,18 @@
77
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
88
import net.fabricmc.fabric.api.networking.v1.PacketType;
99
import net.minecraft.client.Minecraft;
10+
import net.minecraft.client.gui.components.toasts.ToastComponent;
1011
import net.minecraft.network.FriendlyByteBuf;
1112
import net.minecraft.resources.ResourceLocation;
1213
import net.minecraft.world.entity.player.Player;
14+
import net.minecraft.world.item.Items;
1315
import simpleclient.SimpleClient;
16+
import simpleclient.gui.SimpleClientToast;
17+
import simpleclient.item.Item;
18+
import simpleclient.item.ItemStack;
19+
import simpleclient.text.Style;
20+
import simpleclient.text.Text;
21+
import simpleclient.text.TextColor;
1422

1523
import java.util.*;
1624

@@ -34,7 +42,15 @@ public static void init() {
3442
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> LegacyPvP.ENABLED = false);
3543
ClientPlayNetworking.registerGlobalReceiver(new ResourceLocation("simpleclient", "legacypvp"), (client, handler, buf, sender) -> {
3644
byte method = buf.readByte();
37-
if (method == 0) LegacyPvP.ENABLED = true;
45+
if (method == 0) {
46+
LegacyPvP.ENABLED = true;
47+
client.getToasts().addToast(new SimpleClientToast(
48+
new ItemStack(new Item("minecraft:golden_sword")),
49+
Text.literal("Legacy PvP ist auf"),
50+
Text.literal("diesem Server aktiviert"),
51+
1000 * 10
52+
));
53+
}
3854
if (method == 1) LegacyPvP.ENABLED = false;
3955
if (method == 2) blockingPlayers.add(buf.readUUID());
4056
if (method == 3) blockingPlayers.remove(buf.readUUID());
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package simpleclient.gui;
2+
3+
import net.minecraft.client.gui.GuiGraphics;
4+
import net.minecraft.client.gui.components.toasts.Toast;
5+
import net.minecraft.client.gui.components.toasts.ToastComponent;
6+
import net.minecraft.resources.ResourceLocation;
7+
import simpleclient.adapter.*;
8+
import simpleclient.item.ItemStack;
9+
import simpleclient.text.Text;
10+
11+
public class SimpleClientToast implements Toast {
12+
private ItemStack icon;
13+
private long duration;
14+
private Text text1;
15+
private Text text2;
16+
private boolean playedSound;
17+
18+
public SimpleClientToast(ItemStack icon, Text text1, Text text2, long duration) {
19+
this.icon = icon;
20+
this.text1 = text1;
21+
this.text2 = text2;
22+
this.duration = duration;
23+
}
24+
25+
public SimpleClientToast(ItemStack icon, Text text1, Text text2) {
26+
this(icon, text1, text2, 5000);
27+
}
28+
29+
public SimpleClientToast(Text text1, Text text2, long duration) {
30+
this(null, text1, text2, duration);
31+
}
32+
33+
public SimpleClientToast(Text text1, Text text2) {
34+
this(text1, text2, 5000);
35+
}
36+
37+
@Override
38+
public Visibility render(GuiGraphics guiGraphics, ToastComponent toastComponent, long time) {
39+
TextRendererAdapter textRenderer = new TextRendererAdapterImpl(guiGraphics, toastComponent.getMinecraft().font);
40+
ItemRendererAdapter itemRenderer = new ItemRendererAdapterImpl(guiGraphics);
41+
guiGraphics.blit(TEXTURE, 0, 0, 0, 0, width(), height());
42+
if (icon != null) itemRenderer.renderItem(icon, 8, 8);
43+
if (text1 != null) textRenderer.render(text1, icon == null ? 7 : 30, 7);
44+
if (text2 != null) textRenderer.render(text2, icon == null ? 7 : 30, 18);
45+
return time > duration ? Visibility.HIDE : Visibility.SHOW;
46+
}
47+
}

simpleclient-1.20/src/main/java/simpleclient/feature/LegacyPvP.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
import net.minecraft.resources.ResourceLocation;
1111
import net.minecraft.world.entity.player.Player;
1212
import simpleclient.SimpleClient;
13+
import simpleclient.gui.SimpleClientToast;
14+
import simpleclient.item.Item;
15+
import simpleclient.item.ItemStack;
16+
import simpleclient.text.Text;
1317

1418
import java.util.HashSet;
1519
import java.util.Set;
@@ -35,7 +39,15 @@ public static void init() {
3539
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> LegacyPvP.ENABLED = false);
3640
ClientPlayNetworking.registerGlobalReceiver(new ResourceLocation("simpleclient", "legacypvp"), (client, handler, buf, sender) -> {
3741
byte method = buf.readByte();
38-
if (method == 0) LegacyPvP.ENABLED = true;
42+
if (method == 0) {
43+
LegacyPvP.ENABLED = true;
44+
client.getToasts().addToast(new SimpleClientToast(
45+
new ItemStack(new Item("minecraft:golden_sword")),
46+
Text.literal("Legacy PvP ist auf"),
47+
Text.literal("diesem Server aktiviert"),
48+
1000 * 10
49+
));
50+
}
3951
if (method == 1) LegacyPvP.ENABLED = false;
4052
if (method == 2) blockingPlayers.add(buf.readUUID());
4153
if (method == 3) blockingPlayers.remove(buf.readUUID());
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package simpleclient.gui;
2+
3+
import net.minecraft.client.gui.GuiGraphics;
4+
import net.minecraft.client.gui.components.toasts.Toast;
5+
import net.minecraft.client.gui.components.toasts.ToastComponent;
6+
import simpleclient.adapter.ItemRendererAdapter;
7+
import simpleclient.adapter.ItemRendererAdapterImpl;
8+
import simpleclient.adapter.TextRendererAdapter;
9+
import simpleclient.adapter.TextRendererAdapterImpl;
10+
import simpleclient.item.ItemStack;
11+
import simpleclient.text.Text;
12+
13+
public class SimpleClientToast implements Toast {
14+
private ItemStack icon;
15+
private long duration;
16+
private Text text1;
17+
private Text text2;
18+
private boolean playedSound;
19+
20+
public SimpleClientToast(ItemStack icon, Text text1, Text text2, long duration) {
21+
this.icon = icon;
22+
this.text1 = text1;
23+
this.text2 = text2;
24+
this.duration = duration;
25+
}
26+
27+
public SimpleClientToast(ItemStack icon, Text text1, Text text2) {
28+
this(icon, text1, text2, 5000);
29+
}
30+
31+
public SimpleClientToast(Text text1, Text text2, long duration) {
32+
this(null, text1, text2, duration);
33+
}
34+
35+
public SimpleClientToast(Text text1, Text text2) {
36+
this(text1, text2, 5000);
37+
}
38+
39+
@Override
40+
public Visibility render(GuiGraphics guiGraphics, ToastComponent toastComponent, long time) {
41+
TextRendererAdapter textRenderer = new TextRendererAdapterImpl(guiGraphics, toastComponent.getMinecraft().font);
42+
ItemRendererAdapter itemRenderer = new ItemRendererAdapterImpl(guiGraphics);
43+
guiGraphics.blit(TEXTURE, 0, 0, 0, 0, width(), height());
44+
if (icon != null) itemRenderer.renderItem(icon, 8, 8);
45+
if (text1 != null) textRenderer.render(text1, icon == null ? 7 : 30, 7);
46+
if (text2 != null) textRenderer.render(text2, icon == null ? 7 : 30, 18);
47+
return time > duration ? Visibility.HIDE : Visibility.SHOW;
48+
}
49+
}

0 commit comments

Comments
 (0)