Skip to content

Commit 7c64252

Browse files
committed
Add functions to hide entities from players
1 parent 170ebbb commit 7c64252

3 files changed

Lines changed: 201 additions & 0 deletions

File tree

src/main/java/com/laytonsmith/abstraction/MCPlayer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,12 @@ public interface MCPlayer extends MCCommandSender, MCHumanEntity, MCOfflinePlaye
119119

120120
void setVanished(boolean set, MCPlayer to);
121121

122+
void hideEntity(MCEntity entity);
123+
124+
void showEntity(MCEntity entity);
125+
126+
boolean canSeeEntity(MCEntity entity);
127+
122128
boolean isNewPlayer();
123129

124130
String getHost();

src/main/java/com/laytonsmith/abstraction/bukkit/entities/BukkitMCPlayer.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,34 @@ public void setVanished(boolean set, MCPlayer to) {
465465
}
466466
}
467467

468+
@Override
469+
public void hideEntity(MCEntity entity) {
470+
try {
471+
p.hideEntity(CommandHelperPlugin.self, (Entity) entity.getHandle());
472+
} catch(NoSuchMethodError ex) {
473+
// probably before 1.18
474+
}
475+
}
476+
477+
@Override
478+
public void showEntity(MCEntity entity) {
479+
try {
480+
p.showEntity(CommandHelperPlugin.self, (Entity) entity.getHandle());
481+
} catch(NoSuchMethodError ex) {
482+
// probably before 1.18
483+
}
484+
}
485+
486+
@Override
487+
public boolean canSeeEntity(MCEntity entity) {
488+
try {
489+
return p.canSee((Entity) entity.getHandle());
490+
} catch(NoSuchMethodError ex) {
491+
// probably before 1.18
492+
return true;
493+
}
494+
}
495+
468496
@Override
469497
public void setWhitelisted(boolean value) {
470498
p.setWhitelisted(value);

src/main/java/com/laytonsmith/core/functions/PlayerManagement.java

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6888,4 +6888,171 @@ public Boolean runAsync() {
68886888
return false;
68896889
}
68906890
}
6891+
6892+
@api
6893+
public static class phide_entity extends AbstractFunction {
6894+
6895+
@Override
6896+
public String getName() {
6897+
return "phide_entity";
6898+
}
6899+
6900+
@Override
6901+
public String docs() {
6902+
return "void {[player], entityUUID} Sets an entity to no longer be seen or tracked by the player's client."
6903+
+ " Resets to default on player rejoin."
6904+
+ " (MC 1.18+)";
6905+
}
6906+
6907+
@Override
6908+
public Integer[] numArgs() {
6909+
return new Integer[]{1, 2};
6910+
}
6911+
6912+
@Override
6913+
public Mixed exec(Target t, Environment env, Mixed... args) throws ConfigRuntimeException {
6914+
MCPlayer p;
6915+
MCEntity e;
6916+
if(args.length == 1) {
6917+
p = env.getEnv(CommandHelperEnvironment.class).GetPlayer();
6918+
Static.AssertPlayerNonNull(p, t);
6919+
e = Static.getEntity(args[0], t);
6920+
} else {
6921+
p = Static.GetPlayer(args[0], t);
6922+
e = Static.getEntity(args[1], t);
6923+
}
6924+
p.hideEntity(e);
6925+
return CVoid.VOID;
6926+
}
6927+
6928+
@Override
6929+
public Class<? extends CREThrowable>[] thrown() {
6930+
return new Class[]{CREPlayerOfflineException.class, CRELengthException.class, CREBadEntityException.class};
6931+
}
6932+
6933+
@Override
6934+
public Version since() {
6935+
return MSVersion.V3_3_5;
6936+
}
6937+
6938+
@Override
6939+
public boolean isRestricted() {
6940+
return true;
6941+
}
6942+
6943+
@Override
6944+
public Boolean runAsync() {
6945+
return false;
6946+
}
6947+
}
6948+
6949+
@api
6950+
public static class pshow_entity extends AbstractFunction {
6951+
6952+
@Override
6953+
public String getName() {
6954+
return "pshow_entity";
6955+
}
6956+
6957+
@Override
6958+
public String docs() {
6959+
return "void {[player], entityUUID} Sets an entity to be sent to the player's client again. (MC 1.18+)";
6960+
}
6961+
6962+
@Override
6963+
public Integer[] numArgs() {
6964+
return new Integer[]{1, 2};
6965+
}
6966+
6967+
@Override
6968+
public Mixed exec(Target t, Environment env, Mixed... args) throws ConfigRuntimeException {
6969+
MCPlayer p;
6970+
MCEntity e;
6971+
if(args.length == 1) {
6972+
p = env.getEnv(CommandHelperEnvironment.class).GetPlayer();
6973+
Static.AssertPlayerNonNull(p, t);
6974+
e = Static.getEntity(args[0], t);
6975+
} else {
6976+
p = Static.GetPlayer(args[0], t);
6977+
e = Static.getEntity(args[1], t);
6978+
}
6979+
p.showEntity(e);
6980+
return CVoid.VOID;
6981+
}
6982+
6983+
@Override
6984+
public Class<? extends CREThrowable>[] thrown() {
6985+
return new Class[]{CREPlayerOfflineException.class, CRELengthException.class, CREBadEntityException.class};
6986+
}
6987+
6988+
@Override
6989+
public Version since() {
6990+
return MSVersion.V3_3_5;
6991+
}
6992+
6993+
@Override
6994+
public boolean isRestricted() {
6995+
return true;
6996+
}
6997+
6998+
@Override
6999+
public Boolean runAsync() {
7000+
return false;
7001+
}
7002+
}
7003+
7004+
@api
7005+
public static class pcan_see_entity extends AbstractFunction {
7006+
7007+
@Override
7008+
public String getName() {
7009+
return "pcan_see_entity";
7010+
}
7011+
7012+
@Override
7013+
public String docs() {
7014+
return "boolean {[player], entityUUID} Gets whether the entity is known by the player's client or"
7015+
+ " hidden by a plugin. (MC 1.18+)";
7016+
}
7017+
7018+
@Override
7019+
public Integer[] numArgs() {
7020+
return new Integer[]{1, 2};
7021+
}
7022+
7023+
@Override
7024+
public Mixed exec(Target t, Environment env, Mixed... args) throws ConfigRuntimeException {
7025+
MCPlayer p;
7026+
MCEntity e;
7027+
if(args.length == 1) {
7028+
p = env.getEnv(CommandHelperEnvironment.class).GetPlayer();
7029+
Static.AssertPlayerNonNull(p, t);
7030+
e = Static.getEntity(args[0], t);
7031+
} else {
7032+
p = Static.GetPlayer(args[0], t);
7033+
e = Static.getEntity(args[1], t);
7034+
}
7035+
return CBoolean.get(p.canSeeEntity(e));
7036+
}
7037+
7038+
@Override
7039+
public Class<? extends CREThrowable>[] thrown() {
7040+
return new Class[]{CREPlayerOfflineException.class, CRELengthException.class, CREBadEntityException.class};
7041+
}
7042+
7043+
@Override
7044+
public Version since() {
7045+
return MSVersion.V3_3_5;
7046+
}
7047+
7048+
@Override
7049+
public boolean isRestricted() {
7050+
return true;
7051+
}
7052+
7053+
@Override
7054+
public Boolean runAsync() {
7055+
return false;
7056+
}
7057+
}
68917058
}

0 commit comments

Comments
 (0)