Skip to content

Commit c4aa4d6

Browse files
committed
Add functions for entity default client visibility
1 parent 91751a8 commit c4aa4d6

File tree

3 files changed

+82
-0
lines changed

3 files changed

+82
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,8 @@ public interface MCEntity extends MCMetadatable {
118118
boolean isInWater();
119119

120120
void setRotation(float yaw, float pitch);
121+
122+
boolean isVisibleByDefault();
123+
124+
void setVisibleByDefault(boolean visible);
121125
}

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,4 +418,23 @@ public boolean isInWater() {
418418
public void setRotation(float yaw, float pitch) {
419419
e.setRotation(yaw, pitch);
420420
}
421+
422+
@Override
423+
public boolean isVisibleByDefault() {
424+
try {
425+
return e.isVisibleByDefault();
426+
} catch (NoSuchMethodError ex) {
427+
// probably before 1.19.3
428+
return true;
429+
}
430+
}
431+
432+
@Override
433+
public void setVisibleByDefault(boolean visible) {
434+
try {
435+
e.setVisibleByDefault(visible);
436+
} catch (NoSuchMethodError ex) {
437+
// probably before 1.19.3
438+
}
439+
}
421440
}

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

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5674,4 +5674,63 @@ public Version since() {
56745674
return MSVersion.V3_3_5;
56755675
}
56765676
}
5677+
5678+
@api
5679+
@seealso({PlayerManagement.pshow_entity.class, PlayerManagement.phide_entity.class,
5680+
PlayerManagement.pcan_see_entity.class, set_entity_visible_by_default.class})
5681+
public static class is_entity_visible_by_default extends EntityGetterFunction {
5682+
5683+
@Override
5684+
public String getName() {
5685+
return "is_entity_visible_by_default";
5686+
}
5687+
5688+
@Override
5689+
public String docs() {
5690+
return "boolean {entityUUID} Returns an entity's default visibility to a client. (MC 1.19.3+)"
5691+
+ " Unrelated to the invisibility potion effect. If false,"
5692+
+ " pshow_entity() must be used before a player's client can see this entity.";
5693+
}
5694+
5695+
@Override
5696+
public Mixed exec(Target t, Environment env, Mixed... args) throws ConfigRuntimeException {
5697+
MCEntity entity = Static.getEntity(args[0], t);
5698+
return CBoolean.get(entity.isVisibleByDefault());
5699+
}
5700+
5701+
@Override
5702+
public Version since() {
5703+
return MSVersion.V3_3_5;
5704+
}
5705+
}
5706+
5707+
@api
5708+
@seealso({PlayerManagement.pshow_entity.class, PlayerManagement.phide_entity.class,
5709+
PlayerManagement.pcan_see_entity.class, is_entity_visible_by_default.class})
5710+
public static class set_entity_visible_by_default extends EntitySetterFunction {
5711+
5712+
@Override
5713+
public String getName() {
5714+
return "set_entity_visible_by_default";
5715+
}
5716+
5717+
@Override
5718+
public String docs() {
5719+
return "void {entityUUID, visibility} Sets an entity's default visibility to a client. (MC 1.19.3+)"
5720+
+ " Unrelated to the invisibility potion effect. If visibility is false,"
5721+
+ " pshow_entity() must be used before a player's client can see this entity.";
5722+
}
5723+
5724+
@Override
5725+
public Mixed exec(Target t, Environment env, Mixed... args) throws ConfigRuntimeException {
5726+
MCEntity entity = Static.getEntity(args[0], t);
5727+
entity.setVisibleByDefault(ArgumentValidation.getBooleanObject(args[1], t));
5728+
return CVoid.VOID;
5729+
}
5730+
5731+
@Override
5732+
public Version since() {
5733+
return MSVersion.V3_3_5;
5734+
}
5735+
}
56775736
}

0 commit comments

Comments
 (0)