This commit is contained in:
parent
197c81cc2b
commit
3a4239c1ff
3 changed files with 106 additions and 3 deletions
|
@ -2,13 +2,16 @@ package de.com.baseband.client.event.events;
|
||||||
|
|
||||||
import de.com.baseband.client.event.Event;
|
import de.com.baseband.client.event.Event;
|
||||||
import net.minecraft.client.network.NetworkPlayerInfo;
|
import net.minecraft.client.network.NetworkPlayerInfo;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
public class PlayerLeftViewEvent extends Event {
|
public class PlayerLeftViewEvent extends Event {
|
||||||
public final NetworkPlayerInfo playerInfo;
|
public final NetworkPlayerInfo playerInfo;
|
||||||
|
public final EntityPlayer player;
|
||||||
public final int index;
|
public final int index;
|
||||||
|
|
||||||
public PlayerLeftViewEvent(NetworkPlayerInfo playerInfo, int index) {
|
public PlayerLeftViewEvent(NetworkPlayerInfo playerInfo, EntityPlayer player, int index) {
|
||||||
this.playerInfo = playerInfo;
|
this.playerInfo = playerInfo;
|
||||||
|
this.player = player;
|
||||||
this.index = index;
|
this.index = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,8 +42,7 @@ public class PlayerListHandler extends Feature {
|
||||||
for (int i = 0; i < playersInRenderDistance.size(); i++) {
|
for (int i = 0; i < playersInRenderDistance.size(); i++) {
|
||||||
NetworkPlayerInfo playerInfo = playersInRenderDistance.get(i);
|
NetworkPlayerInfo playerInfo = playersInRenderDistance.get(i);
|
||||||
if (!playersRD.contains(playerInfo)) {
|
if (!playersRD.contains(playerInfo)) {
|
||||||
BaseBand.publish(new PlayerLeftViewEvent(playerInfo, i));
|
BaseBand.publish(new PlayerLeftViewEvent(playerInfo, entityPlayersInRenderDistance.remove(i), i));
|
||||||
entityPlayersInRenderDistance.remove(i);
|
|
||||||
playersInRenderDistance.remove(i--);
|
playersInRenderDistance.remove(i--);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
package de.com.baseband.client.feature.modules.render;
|
||||||
|
|
||||||
|
import de.com.baseband.client.event.events.PlayerLeftEvent;
|
||||||
|
import de.com.baseband.client.event.events.PlayerLeftViewEvent;
|
||||||
|
import de.com.baseband.client.feature.Feature;
|
||||||
|
import de.com.baseband.client.feature.Features;
|
||||||
|
import de.com.baseband.client.feature.background.PlayerListHandler;
|
||||||
|
import de.com.baseband.client.feature.category.Experimental;
|
||||||
|
import de.com.baseband.client.feature.modules.client.Client;
|
||||||
|
import de.com.baseband.client.registry.annotation.Config;
|
||||||
|
import de.com.baseband.client.registry.annotation.Gate;
|
||||||
|
import de.com.baseband.client.registry.annotation.Range;
|
||||||
|
import de.com.baseband.client.registry.annotation.Requires;
|
||||||
|
import de.com.baseband.client.util.adapt.Marker;
|
||||||
|
import de.com.baseband.client.util.render.Pixels;
|
||||||
|
import de.com.baseband.client.util.render.SimpleRender;
|
||||||
|
import de.tudbut.tools.Lock;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
|
import net.minecraftforge.client.event.RenderWorldLastEvent;
|
||||||
|
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Experimental
|
||||||
|
@Requires(PlayerListHandler.class)
|
||||||
|
public class PlayerLog extends Feature {
|
||||||
|
|
||||||
|
@Config("Wireframe")
|
||||||
|
public boolean wireframe = true;
|
||||||
|
|
||||||
|
@Config("Fill")
|
||||||
|
@Marker(1)
|
||||||
|
public boolean fill = true;
|
||||||
|
|
||||||
|
@Config("Fill opacity")
|
||||||
|
@Range("0.05..0.5@0.05")
|
||||||
|
@Gate(1)
|
||||||
|
public float opacity = 0.1f;
|
||||||
|
|
||||||
|
|
||||||
|
HashMap<UUID, Pair<Lock, EntityPlayer>> originalPlayers = new HashMap<>();
|
||||||
|
ArrayList<AxisAlignedBB> boxes = new ArrayList<>();
|
||||||
|
|
||||||
|
public void onPlayerLeaveView(PlayerLeftViewEvent event) {
|
||||||
|
Lock lock = new Lock();
|
||||||
|
lock.lock(1000);
|
||||||
|
originalPlayers.put(event.playerInfo.getGameProfile().getId(), new ImmutablePair<>(lock, event.player));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPlayerLeave(PlayerLeftEvent event) {
|
||||||
|
Pair<Lock, EntityPlayer> pair = originalPlayers.get(event.playerInfo.getGameProfile().getId());
|
||||||
|
if(pair != null) {
|
||||||
|
boxes.add(pair.getRight().getEntityBoundingBox());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTick() {
|
||||||
|
if(originalPlayers.isEmpty())
|
||||||
|
return;
|
||||||
|
for (Map.Entry<UUID, Pair<Lock, EntityPlayer>> entry : originalPlayers.entrySet().toArray(new Map.Entry[0])) {
|
||||||
|
if(!entry.getValue().getLeft().isLocked())
|
||||||
|
originalPlayers.remove(entry.getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
originalPlayers.clear();
|
||||||
|
boxes.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onRender(RenderWorldLastEvent event) {
|
||||||
|
SimpleRender render = new SimpleRender(event.getPartialTicks());
|
||||||
|
int c = Features.getFeature(Client.class).theme.getGreenColor() | 0xff000000;
|
||||||
|
if(wireframe)
|
||||||
|
renderOn(render.color(c).lines()).end();
|
||||||
|
if(fill)
|
||||||
|
renderOn(render.color(Pixels.mulTransparency(c, opacity)).quadsFill()).end();
|
||||||
|
render.finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
private SimpleRender.SimpleRenderBackend renderOn(SimpleRender.SimpleRenderBackend backend) {
|
||||||
|
for (AxisAlignedBB box : boxes) {
|
||||||
|
backend.aabb(box);
|
||||||
|
}
|
||||||
|
return backend;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "PlayerLog";
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue