(improve) improved player search in the world
This commit is contained in:
parent
706dce8031
commit
e8472e3a69
|
@ -8,6 +8,7 @@ import net.minecraft.client.gui.ScaledResolution;
|
|||
import net.minecraft.client.multiplayer.ServerData;
|
||||
import net.minecraft.client.multiplayer.ServerList;
|
||||
import net.minecraft.client.resources.data.IMetadataSerializer;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Session;
|
||||
import net.silentclient.client.config.ConfigManager;
|
||||
|
@ -595,6 +596,13 @@ public class Client {
|
|||
EmotesMod.onClick(event);
|
||||
}
|
||||
|
||||
@EventTarget
|
||||
public void onJoinToWorld(EntityJoinLevelEvent event) {
|
||||
if(event.getEntity() instanceof EntityPlayer) {
|
||||
WorldListener.onPlayerJoin((EntityPlayer) event.getEntity());
|
||||
}
|
||||
}
|
||||
|
||||
// Instances
|
||||
public String getApiUrl() {
|
||||
return "http://localhost:" + getUserData().server_port;
|
||||
|
|
|
@ -2,8 +2,8 @@ package net.silentclient.client.emotes;
|
|||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.world.World;
|
||||
import net.silentclient.client.emotes.emoticons.Emote;
|
||||
import net.silentclient.client.utils.WorldListener;
|
||||
|
||||
public class EmoteManager {
|
||||
public static void sendEmote(String name, int i) {
|
||||
|
@ -13,7 +13,7 @@ public class EmoteManager {
|
|||
public static void play(String name, int i) {
|
||||
if (Minecraft.getMinecraft().theWorld != null) {
|
||||
String s = PlayerModelManager.get().map.get(i);
|
||||
EntityPlayer entityPlayer = EmoteManager.getPlayerEntityByName(Minecraft.getMinecraft().theWorld, name);
|
||||
EntityPlayer entityPlayer = EmoteManager.getPlayerEntityByName(name);
|
||||
if (entityPlayer != null && s != null) {
|
||||
Emote emote = PlayerModelManager.get().registry.get(s);
|
||||
if (EmoteControllerManager.controllers.get(entityPlayer.getName()) != null) {
|
||||
|
@ -25,7 +25,7 @@ public class EmoteManager {
|
|||
|
||||
public static void stop(String name) {
|
||||
if (Minecraft.getMinecraft().theWorld != null) {
|
||||
EntityPlayer entityPlayer = EmoteManager.getPlayerEntityByName(Minecraft.getMinecraft().theWorld, name);
|
||||
EntityPlayer entityPlayer = EmoteManager.getPlayerEntityByName(name);
|
||||
if (entityPlayer != null) {
|
||||
if (EmoteControllerManager.controllers.get(entityPlayer.getName()) != null) {
|
||||
EmoteControllerManager.controllers.get(entityPlayer.getName()).resetEmote();
|
||||
|
@ -34,18 +34,8 @@ public class EmoteManager {
|
|||
}
|
||||
}
|
||||
|
||||
public static EntityPlayer getPlayerEntityByName(World world, String name)
|
||||
public static EntityPlayer getPlayerEntityByName(String name)
|
||||
{
|
||||
for (int i = 0; i < world.playerEntities.size(); ++i)
|
||||
{
|
||||
EntityPlayer entityplayer = (EntityPlayer)world.playerEntities.get(i);
|
||||
|
||||
if (name.equalsIgnoreCase(entityplayer.getName()))
|
||||
{
|
||||
return entityplayer;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return WorldListener.players.get(name.toLowerCase());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.minecraft.util.IChatComponent;
|
|||
import net.silentclient.client.event.impl.EntityDamageEvent;
|
||||
import net.silentclient.client.hooks.NetHandlerPlayClientHook;
|
||||
import net.silentclient.client.utils.Players;
|
||||
import net.silentclient.client.utils.WorldListener;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.*;
|
||||
|
@ -60,6 +61,7 @@ public abstract class NetHandlerPlayClientMixin {
|
|||
@Inject(method = "handleJoinGame", at = @At(value = "RETURN"))
|
||||
public void resetPlayers(S01PacketJoinGame packetIn, CallbackInfo ci) {
|
||||
Players.reload();
|
||||
WorldListener.onWorldSwitch();
|
||||
}
|
||||
|
||||
//#if MC==10809
|
||||
|
|
|
@ -6,19 +6,18 @@ import net.minecraft.entity.Entity;
|
|||
import net.minecraft.entity.item.EntityFallingBlock;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.item.EntityTNTPrimed;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldProvider;
|
||||
import net.silentclient.client.Client;
|
||||
import net.silentclient.client.event.impl.EntityJoinLevelEvent;
|
||||
import net.silentclient.client.utils.WorldListener;
|
||||
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.ModifyVariable;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||
|
@ -58,6 +57,13 @@ public class WorldMixin {
|
|||
}
|
||||
}
|
||||
|
||||
@Inject(method = {"removeEntity", "removePlayerEntityDangerously"}, at = @At("HEAD"), cancellable = true)
|
||||
public void removeEntityFromWorldListener(Entity entityIn, CallbackInfo ci) {
|
||||
if(entityIn instanceof EntityPlayer) {
|
||||
WorldListener.onPlayerLeave((EntityPlayer) entityIn);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "joinEntityInSurroundings", at = @At("HEAD"), cancellable = true)
|
||||
public void callEntityJoinLevelEvent2(Entity entityIn, CallbackInfo ci) {
|
||||
EntityJoinLevelEvent event = new EntityJoinLevelEvent(entityIn);
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package net.silentclient.client.utils;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class WorldListener {
|
||||
public static HashMap<String, EntityPlayer> players = new HashMap<>();
|
||||
|
||||
public static void onPlayerJoin(EntityPlayer entityPlayer) {
|
||||
onPlayerLeave(entityPlayer);
|
||||
players.put(entityPlayer.getName().toLowerCase(), entityPlayer);
|
||||
}
|
||||
|
||||
public static void onPlayerLeave(EntityPlayer entityPlayer) {
|
||||
players.remove(entityPlayer.getName().toLowerCase());
|
||||
}
|
||||
|
||||
public static void onWorldSwitch() {
|
||||
players.clear();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue