Skip to content

Commit eae1afe

Browse files
committed
Add server and find user methods to the base proxy
1 parent e77ffd8 commit eae1afe

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

src/main/java/net/swedz/tesseract/neoforge/proxy/builtin/TesseractClientProxy.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,15 @@
22

33
import net.minecraft.client.Minecraft;
44
import net.minecraft.client.gui.screens.Screen;
5+
import net.minecraft.client.player.AbstractClientPlayer;
6+
import net.minecraft.world.entity.EquipmentSlot;
57
import net.minecraft.world.entity.player.Player;
8+
import net.minecraft.world.item.ItemStack;
69
import net.swedz.tesseract.neoforge.proxy.ProxyEntrypoint;
710
import net.swedz.tesseract.neoforge.proxy.ProxyEnvironment;
811

12+
import java.util.Optional;
13+
914
@ProxyEntrypoint(environment = ProxyEnvironment.CLIENT)
1015
public class TesseractClientProxy extends TesseractProxy
1116
{
@@ -21,6 +26,26 @@ public Player getClientPlayer()
2126
return Minecraft.getInstance().player;
2227
}
2328

29+
@Override
30+
public Optional<Player> findUserWithItem(EquipmentSlot slot, ItemStack stack)
31+
{
32+
if(Minecraft.getInstance().isSameThread())
33+
{
34+
for(AbstractClientPlayer player : Minecraft.getInstance().level.players())
35+
{
36+
if(player.getItemBySlot(slot) == stack)
37+
{
38+
return Optional.of(player);
39+
}
40+
}
41+
return Optional.empty();
42+
}
43+
else
44+
{
45+
return super.findUserWithItem(slot, stack);
46+
}
47+
}
48+
2449
@Override
2550
public boolean hasControlDown()
2651
{

src/main/java/net/swedz/tesseract/neoforge/proxy/builtin/TesseractProxy.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,55 @@
11
package net.swedz.tesseract.neoforge.proxy.builtin;
22

3+
import net.minecraft.server.MinecraftServer;
4+
import net.minecraft.server.level.ServerPlayer;
5+
import net.minecraft.world.entity.EquipmentSlot;
36
import net.minecraft.world.entity.player.Player;
7+
import net.minecraft.world.item.ItemStack;
8+
import net.neoforged.neoforge.common.NeoForge;
9+
import net.neoforged.neoforge.event.server.ServerAboutToStartEvent;
10+
import net.neoforged.neoforge.event.server.ServerStoppedEvent;
411
import net.swedz.tesseract.neoforge.proxy.Proxy;
512
import net.swedz.tesseract.neoforge.proxy.ProxyEntrypoint;
613

14+
import java.util.Optional;
15+
716
@ProxyEntrypoint
817
public class TesseractProxy implements Proxy
918
{
19+
private MinecraftServer server;
20+
21+
@Override
22+
public void init()
23+
{
24+
NeoForge.EVENT_BUS.addListener(ServerAboutToStartEvent.class, (event) -> server = event.getServer());
25+
NeoForge.EVENT_BUS.addListener(ServerStoppedEvent.class, (event) -> server = null);
26+
}
27+
28+
public final boolean hasServer()
29+
{
30+
return server != null;
31+
}
32+
33+
public final MinecraftServer getServer()
34+
{
35+
return server;
36+
}
37+
38+
public Optional<Player> findUserWithItem(EquipmentSlot slot, ItemStack stack)
39+
{
40+
if(this.hasServer())
41+
{
42+
for(ServerPlayer player : server.getPlayerList().getPlayers())
43+
{
44+
if(player.getItemBySlot(slot) == stack)
45+
{
46+
return Optional.of(player);
47+
}
48+
}
49+
}
50+
return Optional.empty();
51+
}
52+
1053
public boolean isClient()
1154
{
1255
return false;

0 commit comments

Comments
 (0)