mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-11-22 02:25:57 +01:00
Make areaeffectcloud the default hologram renderer over armorstand, add /npc areaeffectcloud
This commit is contained in:
parent
a7078b2c6d
commit
46f3c31832
@ -114,10 +114,10 @@ public class Settings {
|
|||||||
"The default MOVEMENT distance in blocks where the NPC will move to before considering a path finished<br>Note: this is different from the PATHFINDING distance which is specified by path-distance-margin",
|
"The default MOVEMENT distance in blocks where the NPC will move to before considering a path finished<br>Note: this is different from the PATHFINDING distance which is specified by path-distance-margin",
|
||||||
"npc.pathfinding.default-distance-margin", 1),
|
"npc.pathfinding.default-distance-margin", 1),
|
||||||
DEFAULT_HOLOGRAM_BACKGROUND_COLOR(
|
DEFAULT_HOLOGRAM_BACKGROUND_COLOR(
|
||||||
"The default background color for holograms, specified as an RGB or RGBA value<br>For example 0,255,123,0 would be green",
|
"The default background color for holograms, specified as an RGB or RGBA value<br>For example 0,255,123 would be green and 255,255,255,255 would be transparent",
|
||||||
"npc.hologram.default-background-color", ""),
|
"npc.hologram.default-background-color", ""),
|
||||||
DEFAULT_HOLOGRAM_RENDERER(
|
DEFAULT_HOLOGRAM_RENDERER(
|
||||||
"The default renderer for holograms, must be one of the following:<br>interaction - matches inbuilt nametags most closely<br>display - allows for different colored backgrounds<br>display_vehicle - mounts the display on the NPC<br>armorstand - the safest option, very very small hit to client FPS compared to other options<br>armorstand_vehicle - mounts the armorstand on the NPC",
|
"The default renderer for holograms, must be one of the following:<br>interaction - requires 1.19+, matches nametags more closely than display<br>display - allows for different colored backgrounds<br>display_vehicle - mounts the display on the NPC<br>areaeffectcloud - the safest option<br>armorstand - the second safest option, has a hitbox clientside<br>armorstand_vehicle - mounts the armorstand on the NPC, only useful for nameplates",
|
||||||
"npc.hologram.default-renderer", "display"),
|
"npc.hologram.default-renderer", "display"),
|
||||||
DEFAULT_LOOK_CLOSE("Enable look close by default", "npc.default.look-close.enabled", false),
|
DEFAULT_LOOK_CLOSE("Enable look close by default", "npc.default.look-close.enabled", false),
|
||||||
DEFAULT_LOOK_CLOSE_RANGE("Default look close range in blocks", "npc.default.look-close.range", 10),
|
DEFAULT_LOOK_CLOSE_RANGE("Default look close range in blocks", "npc.default.look-close.range", 10),
|
||||||
@ -386,14 +386,17 @@ public class Settings {
|
|||||||
protected void setComments(DataKey root) {
|
protected void setComments(DataKey root) {
|
||||||
if (!SUPPORTS_SET_COMMENTS || !root.keyExists(path))
|
if (!SUPPORTS_SET_COMMENTS || !root.keyExists(path))
|
||||||
return;
|
return;
|
||||||
try {
|
((MemoryDataKey) root).getSection("").setComments(path,
|
||||||
((MemoryDataKey) root).getSection("").setComments(path,
|
comments == null ? null : Arrays.asList(comments.split("<br>")));
|
||||||
comments == null ? null : Arrays.asList(comments.split("<br>")));
|
|
||||||
} catch (Throwable t) {
|
|
||||||
SUPPORTS_SET_COMMENTS = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean SUPPORTS_SET_COMMENTS = true;
|
private static boolean SUPPORTS_SET_COMMENTS = true;
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
ConfigurationSection.class.getMethod("getInlineComments", String.class);
|
||||||
|
} catch (NoSuchMethodException | SecurityException e) {
|
||||||
|
SUPPORTS_SET_COMMENTS = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,12 @@ import java.util.List;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
@ -42,7 +44,6 @@ import net.citizensnpcs.npc.ai.AStarNavigationStrategy.AStarPlanner;
|
|||||||
import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator;
|
import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
import net.citizensnpcs.trait.RotationTrait.PacketRotationSession;
|
import net.citizensnpcs.trait.RotationTrait.PacketRotationSession;
|
||||||
import net.citizensnpcs.util.ChunkCoord;
|
|
||||||
import net.citizensnpcs.util.NMS;
|
import net.citizensnpcs.util.NMS;
|
||||||
|
|
||||||
public class CitizensNavigator implements Navigator, Runnable {
|
public class CitizensNavigator implements Navigator, Runnable {
|
||||||
@ -51,7 +52,7 @@ public class CitizensNavigator implements Navigator, Runnable {
|
|||||||
.range(Setting.DEFAULT_PATHFINDING_RANGE.asFloat()).debug(Setting.DEBUG_PATHFINDING.asBoolean())
|
.range(Setting.DEFAULT_PATHFINDING_RANGE.asFloat()).debug(Setting.DEBUG_PATHFINDING.asBoolean())
|
||||||
.defaultAttackStrategy((attacker, target) -> {
|
.defaultAttackStrategy((attacker, target) -> {
|
||||||
NMS.attack(attacker, target);
|
NMS.attack(attacker, target);
|
||||||
return false;
|
return true;
|
||||||
}).attackRange(Setting.NPC_ATTACK_DISTANCE.asDouble())
|
}).attackRange(Setting.NPC_ATTACK_DISTANCE.asDouble())
|
||||||
.updatePathRate(Setting.DEFAULT_PATHFINDER_UPDATE_PATH_RATE.asTicks())
|
.updatePathRate(Setting.DEFAULT_PATHFINDER_UPDATE_PATH_RATE.asTicks())
|
||||||
.distanceMargin(Setting.DEFAULT_DISTANCE_MARGIN.asDouble())
|
.distanceMargin(Setting.DEFAULT_DISTANCE_MARGIN.asDouble())
|
||||||
@ -518,32 +519,31 @@ public class CitizensNavigator implements Navigator, Runnable {
|
|||||||
if (!SUPPORT_CHUNK_TICKETS || !CitizensAPI.hasImplementation() || !CitizensAPI.getPlugin().isEnabled())
|
if (!SUPPORT_CHUNK_TICKETS || !CitizensAPI.hasImplementation() || !CitizensAPI.getPlugin().isEnabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (target != null && activeTicket != null
|
// already have a ticket on same chunk
|
||||||
&& new ChunkCoord(target.getChunk()).equals(new ChunkCoord(activeTicket.getChunk()))) {
|
if (target != null && activeTicket != null && target.getBlockX() >> 4 == activeTicket.getBlockX() >> 4
|
||||||
activeTicket = target.clone();
|
&& target.getBlockZ() >> 4 == activeTicket.getBlockZ() >> 4
|
||||||
|
&& target.getWorld().equals(activeTicket.getWorld()))
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
// switch ticket to the new chunk
|
||||||
if (activeTicket != null) {
|
if (activeTicket != null) {
|
||||||
try {
|
activeTicket.getChunk().removePluginChunkTicket(CitizensAPI.getPlugin());
|
||||||
activeTicket.getChunk().removePluginChunkTicket(CitizensAPI.getPlugin());
|
|
||||||
} catch (NoSuchMethodError e) {
|
|
||||||
SUPPORT_CHUNK_TICKETS = false;
|
|
||||||
activeTicket = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (target == null) {
|
if (target == null) {
|
||||||
activeTicket = null;
|
activeTicket = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
activeTicket = target.clone();
|
activeTicket = target.clone();
|
||||||
try {
|
activeTicket.getChunk().addPluginChunkTicket(CitizensAPI.getPlugin());
|
||||||
activeTicket.getChunk().addPluginChunkTicket(CitizensAPI.getPlugin());
|
|
||||||
} catch (NoSuchMethodError e) {
|
|
||||||
SUPPORT_CHUNK_TICKETS = false;
|
|
||||||
activeTicket = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean SUPPORT_CHUNK_TICKETS = true;
|
private static boolean SUPPORT_CHUNK_TICKETS = true;
|
||||||
private static int UNINITIALISED_SPEED = Integer.MIN_VALUE;
|
private static final int UNINITIALISED_SPEED = Integer.MIN_VALUE;
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
Chunk.class.getMethod("removePluginChunkTicket", Plugin.class);
|
||||||
|
} catch (NoSuchMethodException | SecurityException e) {
|
||||||
|
SUPPORT_CHUNK_TICKETS = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,11 +16,16 @@ import org.bukkit.ChatColor;
|
|||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Particle;
|
||||||
|
import org.bukkit.attribute.Attribute;
|
||||||
|
import org.bukkit.attribute.AttributeInstance;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.AreaEffectCloud;
|
||||||
import org.bukkit.entity.Display.Billboard;
|
import org.bukkit.entity.Display.Billboard;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.ItemDisplay;
|
import org.bukkit.entity.ItemDisplay;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.TextDisplay;
|
import org.bukkit.entity.TextDisplay;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
@ -135,11 +140,7 @@ public class HologramTrait extends Trait {
|
|||||||
HologramRenderer renderer;
|
HologramRenderer renderer;
|
||||||
String setting = Setting.DEFAULT_NAME_HOLOGRAM_RENDERER.asString();
|
String setting = Setting.DEFAULT_NAME_HOLOGRAM_RENDERER.asString();
|
||||||
if (setting.isEmpty()) {
|
if (setting.isEmpty()) {
|
||||||
if (SpigotUtil.getVersion()[1] >= 19) {
|
setting = SpigotUtil.getVersion()[1] <= 8 ? "armorstand" : "areaeffectcloud";
|
||||||
setting = "interaction";
|
|
||||||
} else {
|
|
||||||
setting = "armorstand";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
renderer = createRenderer(setting);
|
renderer = createRenderer(setting);
|
||||||
if (HologramRendererCreateEvent.handlers.getRegisteredListeners().length > 0) {
|
if (HologramRendererCreateEvent.handlers.getRegisteredListeners().length > 0) {
|
||||||
@ -151,17 +152,20 @@ public class HologramTrait extends Trait {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private HologramRenderer createRenderer(String setting) {
|
private HologramRenderer createRenderer(String setting) {
|
||||||
if (!SUPPORTS_DISPLAY)
|
if (!SUPPORTS_DISPLAY) {
|
||||||
return setting.equals("armorstand_vehicle") ? new ArmorstandVehicleRenderer() : new ArmorstandRenderer();
|
setting = SpigotUtil.getVersion()[1] <= 8 ? "armorstand" : "areaeffectcloud";
|
||||||
|
}
|
||||||
switch (setting) {
|
switch (setting) {
|
||||||
|
case "areaeffectcloud":
|
||||||
|
return new AreaEffectCloudRenderer();
|
||||||
|
case "armorstand_vehicle":
|
||||||
|
return new ArmorstandVehicleRenderer();
|
||||||
case "display":
|
case "display":
|
||||||
return new TextDisplayRenderer();
|
return new TextDisplayRenderer();
|
||||||
case "display_vehicle":
|
case "display_vehicle":
|
||||||
return new TextDisplayVehicleRenderer();
|
return new TextDisplayVehicleRenderer();
|
||||||
case "interaction":
|
case "interaction":
|
||||||
return new InteractionVehicleRenderer();
|
return new InteractionVehicleRenderer();
|
||||||
case "armorstand_vehicle":
|
|
||||||
return new ArmorstandVehicleRenderer();
|
|
||||||
default:
|
default:
|
||||||
return new ArmorstandRenderer();
|
return new ArmorstandRenderer();
|
||||||
}
|
}
|
||||||
@ -429,6 +433,30 @@ public class HologramTrait extends Trait {
|
|||||||
reloadLineHolograms();
|
reloadLineHolograms();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class AreaEffectCloudRenderer extends SingleEntityHologramRenderer {
|
||||||
|
private boolean rendered;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected NPC createNPC(Entity base, String name, Vector3d offset) {
|
||||||
|
NPC npc = registry().createNPC(EntityType.AREA_EFFECT_CLOUD, name);
|
||||||
|
rendered = false;
|
||||||
|
return npc;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void render0(NPC npc, Vector3d offset) {
|
||||||
|
AreaEffectCloud cloud = (AreaEffectCloud) hologram.getEntity();
|
||||||
|
if (!rendered) {
|
||||||
|
cloud.setRadius(0);
|
||||||
|
cloud.setParticle(Particle.BLOCK, Bukkit.createBlockData(Material.AIR));
|
||||||
|
}
|
||||||
|
hologram.getEntity().teleport(
|
||||||
|
npc.getEntity().getLocation().clone().add(offset.x,
|
||||||
|
offset.y + NMS.getBoundingBoxHeight(npc.getEntity()) - 0.5, offset.z),
|
||||||
|
TeleportCause.PLUGIN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class ArmorstandRenderer extends SingleEntityHologramRenderer {
|
public static class ArmorstandRenderer extends SingleEntityHologramRenderer {
|
||||||
@Override
|
@Override
|
||||||
protected NPC createNPC(Entity base, String name, Vector3d offset) {
|
protected NPC createNPC(Entity base, String name, Vector3d offset) {
|
||||||
@ -461,7 +489,7 @@ public class HologramTrait extends Trait {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class HologramLine {
|
class HologramLine {
|
||||||
Color backgroundColor = defaultBackgroundColor;
|
Color backgroundColor;
|
||||||
double mb, mt;
|
double mb, mt;
|
||||||
boolean persist;
|
boolean persist;
|
||||||
HologramRenderer renderer;
|
HologramRenderer renderer;
|
||||||
@ -477,7 +505,7 @@ public class HologramTrait extends Trait {
|
|||||||
this.persist = persist;
|
this.persist = persist;
|
||||||
this.ticks = ticks;
|
this.ticks = ticks;
|
||||||
this.renderer = hr;
|
this.renderer = hr;
|
||||||
renderer.setBackgroundColor(backgroundColor);
|
setBackgroundColor(defaultBackgroundColor);
|
||||||
if (renderer instanceof SingleEntityHologramRenderer) {
|
if (renderer instanceof SingleEntityHologramRenderer) {
|
||||||
SingleEntityHologramRenderer sr = (SingleEntityHologramRenderer) renderer;
|
SingleEntityHologramRenderer sr = (SingleEntityHologramRenderer) renderer;
|
||||||
sr.setViewRange(viewRange);
|
sr.setViewRange(viewRange);
|
||||||
@ -499,6 +527,9 @@ public class HologramTrait extends Trait {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setBackgroundColor(Color color) {
|
public void setBackgroundColor(Color color) {
|
||||||
|
if (color != null) {
|
||||||
|
renderer = new TextDisplayRenderer();
|
||||||
|
}
|
||||||
this.backgroundColor = color;
|
this.backgroundColor = color;
|
||||||
renderer.setBackgroundColor(color);
|
renderer.setBackgroundColor(color);
|
||||||
}
|
}
|
||||||
@ -886,6 +917,14 @@ public class HologramTrait extends Trait {
|
|||||||
if (color != null) {
|
if (color != null) {
|
||||||
disp.setBackgroundColor(color);
|
disp.setBackgroundColor(color);
|
||||||
}
|
}
|
||||||
|
if (SpigotUtil.getVersion()[1] >= 21 && base.getEntity() instanceof LivingEntity) {
|
||||||
|
AttributeInstance inst = ((LivingEntity) base.getEntity()).getAttribute(Attribute.GENERIC_SCALE);
|
||||||
|
if (inst != null) {
|
||||||
|
Transformation tf = disp.getTransformation();
|
||||||
|
tf.getScale().set(inst.getValue());
|
||||||
|
disp.setTransformation(tf);
|
||||||
|
}
|
||||||
|
}
|
||||||
hologram.getEntity().teleport(
|
hologram.getEntity().teleport(
|
||||||
base.getEntity().getLocation().clone().add(offset.x,
|
base.getEntity().getLocation().clone().add(offset.x,
|
||||||
offset.y + NMS.getBoundingBoxHeight(base.getEntity()) + 0.2f, offset.z),
|
offset.y + NMS.getBoundingBoxHeight(base.getEntity()) + 0.2f, offset.z),
|
||||||
|
@ -0,0 +1,112 @@
|
|||||||
|
package net.citizensnpcs.trait.versioned;
|
||||||
|
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.Particle;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.AreaEffectCloud;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.potion.PotionType;
|
||||||
|
|
||||||
|
import net.citizensnpcs.api.command.Command;
|
||||||
|
import net.citizensnpcs.api.command.CommandContext;
|
||||||
|
import net.citizensnpcs.api.command.Flag;
|
||||||
|
import net.citizensnpcs.api.command.Requirements;
|
||||||
|
import net.citizensnpcs.api.command.exception.CommandException;
|
||||||
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
|
import net.citizensnpcs.api.persistence.Persist;
|
||||||
|
import net.citizensnpcs.api.trait.Trait;
|
||||||
|
import net.citizensnpcs.api.trait.TraitName;
|
||||||
|
import net.citizensnpcs.api.util.Messaging;
|
||||||
|
|
||||||
|
@TraitName("areaeffectcloudtrait")
|
||||||
|
public class AreaEffectCloudTrait extends Trait {
|
||||||
|
@Persist
|
||||||
|
private Color color;
|
||||||
|
@Persist
|
||||||
|
private Integer duration;
|
||||||
|
@Persist
|
||||||
|
private Particle particle;
|
||||||
|
@Persist
|
||||||
|
private Float radius;
|
||||||
|
@Persist
|
||||||
|
private PotionType type;
|
||||||
|
|
||||||
|
public AreaEffectCloudTrait() {
|
||||||
|
super("areaeffectcloudtrait");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSpawn() {
|
||||||
|
AreaEffectCloud cloud = (AreaEffectCloud) npc.getEntity();
|
||||||
|
if (color != null) {
|
||||||
|
cloud.setColor(color);
|
||||||
|
}
|
||||||
|
if (radius != null) {
|
||||||
|
cloud.setRadius(radius);
|
||||||
|
}
|
||||||
|
if (duration != null) {
|
||||||
|
cloud.setDuration(duration);
|
||||||
|
}
|
||||||
|
if (particle != null) {
|
||||||
|
cloud.setParticle(particle);
|
||||||
|
}
|
||||||
|
if (type != null) {
|
||||||
|
cloud.setBasePotionType(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColor(Color color) {
|
||||||
|
this.color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDuration(Integer duration) {
|
||||||
|
this.duration = duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParticle(Particle particle) {
|
||||||
|
this.particle = particle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPotionType(PotionType type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRadius(Float radius) {
|
||||||
|
this.radius = radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(
|
||||||
|
aliases = { "npc" },
|
||||||
|
usage = "areaeffectcloud --color [color] --duration [duration] --radius [radius] --particle [particle]",
|
||||||
|
desc = "",
|
||||||
|
modifiers = { "areaeffectcloud" },
|
||||||
|
min = 1,
|
||||||
|
max = 1,
|
||||||
|
permission = "citizens.npc.areaeffectcloud")
|
||||||
|
@Requirements(selected = true, ownership = true, types = { EntityType.AREA_EFFECT_CLOUD })
|
||||||
|
public static void areaeffectcloud(CommandContext args, CommandSender sender, NPC npc,
|
||||||
|
@Flag("duration") Integer duration, @Flag("radius") Float radius, @Flag("color") Color color,
|
||||||
|
@Flag("potiontype") PotionType type, @Flag("particle") Particle particle) throws CommandException {
|
||||||
|
AreaEffectCloudTrait trait = npc.getOrAddTrait(AreaEffectCloudTrait.class);
|
||||||
|
String output = "";
|
||||||
|
if (radius != null) {
|
||||||
|
trait.setRadius(radius);
|
||||||
|
}
|
||||||
|
if (duration != null) {
|
||||||
|
trait.setDuration(duration);
|
||||||
|
}
|
||||||
|
if (color != null) {
|
||||||
|
trait.setColor(color);
|
||||||
|
}
|
||||||
|
if (type != null) {
|
||||||
|
trait.setPotionType(type);
|
||||||
|
}
|
||||||
|
if (particle != null) {
|
||||||
|
trait.setParticle(particle);
|
||||||
|
}
|
||||||
|
trait.onSpawn();
|
||||||
|
if (!output.isEmpty()) {
|
||||||
|
Messaging.send(sender, output.trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -16,6 +16,7 @@ import net.citizensnpcs.api.persistence.Persist;
|
|||||||
import net.citizensnpcs.api.trait.Trait;
|
import net.citizensnpcs.api.trait.Trait;
|
||||||
import net.citizensnpcs.api.trait.TraitName;
|
import net.citizensnpcs.api.trait.TraitName;
|
||||||
import net.citizensnpcs.api.util.Messaging;
|
import net.citizensnpcs.api.util.Messaging;
|
||||||
|
import net.citizensnpcs.util.NMS;
|
||||||
|
|
||||||
@TraitName("textdisplaytrait")
|
@TraitName("textdisplaytrait")
|
||||||
public class TextDisplayTrait extends Trait {
|
public class TextDisplayTrait extends Trait {
|
||||||
@ -29,6 +30,8 @@ public class TextDisplayTrait extends Trait {
|
|||||||
private Boolean seeThrough;
|
private Boolean seeThrough;
|
||||||
@Persist
|
@Persist
|
||||||
private Boolean shadowed;
|
private Boolean shadowed;
|
||||||
|
@Persist
|
||||||
|
private String text;
|
||||||
|
|
||||||
public TextDisplayTrait() {
|
public TextDisplayTrait() {
|
||||||
super("textdisplaytrait");
|
super("textdisplaytrait");
|
||||||
@ -37,6 +40,9 @@ public class TextDisplayTrait extends Trait {
|
|||||||
@Override
|
@Override
|
||||||
public void onSpawn() {
|
public void onSpawn() {
|
||||||
TextDisplay display = (TextDisplay) npc.getEntity();
|
TextDisplay display = (TextDisplay) npc.getEntity();
|
||||||
|
if (text != null) {
|
||||||
|
NMS.setTextDisplayComponent(display, Messaging.minecraftComponentFromRawMessage(text));
|
||||||
|
}
|
||||||
if (shadowed != null) {
|
if (shadowed != null) {
|
||||||
display.setShadowed(shadowed);
|
display.setShadowed(shadowed);
|
||||||
}
|
}
|
||||||
@ -74,9 +80,13 @@ public class TextDisplayTrait extends Trait {
|
|||||||
this.shadowed = shadowed;
|
this.shadowed = shadowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setText(String text) {
|
||||||
|
this.text = text;
|
||||||
|
}
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
aliases = { "npc" },
|
aliases = { "npc" },
|
||||||
usage = "textdisplay --shadowed [true|false] --seethrough [true|false] --line_width [width]",
|
usage = "textdisplay --shadowed [true|false] --seethrough [true|false] --line_width [width] --text [text]",
|
||||||
desc = "",
|
desc = "",
|
||||||
modifiers = { "textdisplay" },
|
modifiers = { "textdisplay" },
|
||||||
min = 1,
|
min = 1,
|
||||||
@ -84,7 +94,7 @@ public class TextDisplayTrait extends Trait {
|
|||||||
permission = "citizens.npc.textdisplay")
|
permission = "citizens.npc.textdisplay")
|
||||||
@Requirements(selected = true, ownership = true, types = { EntityType.TEXT_DISPLAY })
|
@Requirements(selected = true, ownership = true, types = { EntityType.TEXT_DISPLAY })
|
||||||
public static void display(CommandContext args, CommandSender sender, NPC npc, @Flag("shadowed") Boolean shadowed,
|
public static void display(CommandContext args, CommandSender sender, NPC npc, @Flag("shadowed") Boolean shadowed,
|
||||||
@Flag("seethrough") Boolean seethrough, @Flag("line_width") Integer lineWidth,
|
@Flag("seethrough") Boolean seethrough, @Flag("line_width") Integer lineWidth, @Flag("text") String text,
|
||||||
@Flag("bgcolor") Color bgcolor, @Flag("alignment") TextAlignment alignment) throws CommandException {
|
@Flag("bgcolor") Color bgcolor, @Flag("alignment") TextAlignment alignment) throws CommandException {
|
||||||
TextDisplayTrait trait = npc.getOrAddTrait(TextDisplayTrait.class);
|
TextDisplayTrait trait = npc.getOrAddTrait(TextDisplayTrait.class);
|
||||||
String output = "";
|
String output = "";
|
||||||
@ -103,6 +113,9 @@ public class TextDisplayTrait extends Trait {
|
|||||||
if (bgcolor != null) {
|
if (bgcolor != null) {
|
||||||
trait.setBackgroundColor(bgcolor);
|
trait.setBackgroundColor(bgcolor);
|
||||||
}
|
}
|
||||||
|
if (text != null) {
|
||||||
|
trait.setText(text);
|
||||||
|
}
|
||||||
trait.onSpawn();
|
trait.onSpawn();
|
||||||
if (!output.isEmpty()) {
|
if (!output.isEmpty()) {
|
||||||
Messaging.send(sender, output.trim());
|
Messaging.send(sender, output.trim());
|
||||||
|
@ -36,10 +36,9 @@ public class ChunkCoord {
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
ChunkCoord other = (ChunkCoord) obj;
|
ChunkCoord other = (ChunkCoord) obj;
|
||||||
if (!Objects.equals(worldUUID, other.worldUUID)) {
|
if (!Objects.equals(worldUUID, other.worldUUID))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
|
||||||
return x == other.x && z == other.z;
|
return x == other.x && z == other.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,18 +49,15 @@ public class ChunkCoord {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
final int prime = 31;
|
return 31 * (31 * (31 + (worldUUID == null ? 0 : worldUUID.hashCode())) + x) + z;
|
||||||
return prime * (prime * (prime + (worldUUID == null ? 0 : worldUUID.hashCode())) + x) + z;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setForceLoaded(boolean b) {
|
public void setForceLoaded(boolean b) {
|
||||||
|
if (!SUPPORTS_FORCE_LOADED)
|
||||||
|
return;
|
||||||
Chunk chunk = getChunk();
|
Chunk chunk = getChunk();
|
||||||
if (chunk != null && SUPPORTS_FORCE_LOADED) {
|
if (chunk != null) {
|
||||||
try {
|
chunk.setForceLoaded(b);
|
||||||
chunk.setForceLoaded(b);
|
|
||||||
} catch (NoSuchMethodError e) {
|
|
||||||
SUPPORTS_FORCE_LOADED = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,4 +67,11 @@ public class ChunkCoord {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean SUPPORTS_FORCE_LOADED = true;
|
private static boolean SUPPORTS_FORCE_LOADED = true;
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
Chunk.class.getMethod("setForceLoaded", boolean.class);
|
||||||
|
} catch (NoSuchMethodException | SecurityException e) {
|
||||||
|
SUPPORTS_FORCE_LOADED = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -18,10 +18,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.server.v1_10_R1.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.v1_10_R1.DedicatedServer;
|
|
||||||
import net.minecraft.server.v1_10_R1.OpList;
|
|
||||||
import net.minecraft.server.v1_10_R1.OpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -164,6 +160,7 @@ import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator;
|
|||||||
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
||||||
import net.citizensnpcs.trait.versioned.PolarBearTrait;
|
import net.citizensnpcs.trait.versioned.PolarBearTrait;
|
||||||
@ -194,6 +191,8 @@ import net.minecraft.server.v1_10_R1.CrashReport;
|
|||||||
import net.minecraft.server.v1_10_R1.CrashReportSystemDetails;
|
import net.minecraft.server.v1_10_R1.CrashReportSystemDetails;
|
||||||
import net.minecraft.server.v1_10_R1.DamageSource;
|
import net.minecraft.server.v1_10_R1.DamageSource;
|
||||||
import net.minecraft.server.v1_10_R1.DataWatcherObject;
|
import net.minecraft.server.v1_10_R1.DataWatcherObject;
|
||||||
|
import net.minecraft.server.v1_10_R1.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.v1_10_R1.DedicatedServer;
|
||||||
import net.minecraft.server.v1_10_R1.EnchantmentManager;
|
import net.minecraft.server.v1_10_R1.EnchantmentManager;
|
||||||
import net.minecraft.server.v1_10_R1.EnderDragonBattle;
|
import net.minecraft.server.v1_10_R1.EnderDragonBattle;
|
||||||
import net.minecraft.server.v1_10_R1.Entity;
|
import net.minecraft.server.v1_10_R1.Entity;
|
||||||
@ -225,6 +224,8 @@ import net.minecraft.server.v1_10_R1.Navigation;
|
|||||||
import net.minecraft.server.v1_10_R1.NavigationAbstract;
|
import net.minecraft.server.v1_10_R1.NavigationAbstract;
|
||||||
import net.minecraft.server.v1_10_R1.NavigationSpider;
|
import net.minecraft.server.v1_10_R1.NavigationSpider;
|
||||||
import net.minecraft.server.v1_10_R1.NetworkManager;
|
import net.minecraft.server.v1_10_R1.NetworkManager;
|
||||||
|
import net.minecraft.server.v1_10_R1.OpList;
|
||||||
|
import net.minecraft.server.v1_10_R1.OpListEntry;
|
||||||
import net.minecraft.server.v1_10_R1.Packet;
|
import net.minecraft.server.v1_10_R1.Packet;
|
||||||
import net.minecraft.server.v1_10_R1.PacketPlayOutAnimation;
|
import net.minecraft.server.v1_10_R1.PacketPlayOutAnimation;
|
||||||
import net.minecraft.server.v1_10_R1.PacketPlayOutBed;
|
import net.minecraft.server.v1_10_R1.PacketPlayOutBed;
|
||||||
@ -721,6 +722,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, BossBarTrait.class);
|
registerTraitWithCommand(manager, BossBarTrait.class);
|
||||||
registerTraitWithCommand(manager, PolarBearTrait.class);
|
registerTraitWithCommand(manager, PolarBearTrait.class);
|
||||||
@ -1247,6 +1249,23 @@ public class NMSImpl implements NMSBridge {
|
|||||||
getHandle(entity).setNoGravity(enabled);
|
getHandle(entity).setNoGravity(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final OpList opList = playerList.getOPs();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new OpListEntry(profile, server.getPropertyManager().getInt("op-permission-level", 4),
|
||||||
|
opList.b(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
player.recalculatePermissions();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
||||||
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
||||||
@ -1320,21 +1339,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.g(ticks);
|
handle.g(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final OpList opList = playerList.getOPs();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new OpListEntry(profile, server.getPropertyManager().getInt("op-permission-level", 4), opList.b(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
player.recalculatePermissions();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
||||||
|
@ -18,10 +18,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.server.v1_11_R1.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.v1_11_R1.DedicatedServer;
|
|
||||||
import net.minecraft.server.v1_11_R1.OpList;
|
|
||||||
import net.minecraft.server.v1_11_R1.OpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -179,6 +175,7 @@ import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator;
|
|||||||
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
||||||
import net.citizensnpcs.trait.versioned.LlamaTrait;
|
import net.citizensnpcs.trait.versioned.LlamaTrait;
|
||||||
@ -211,6 +208,8 @@ import net.minecraft.server.v1_11_R1.CrashReport;
|
|||||||
import net.minecraft.server.v1_11_R1.CrashReportSystemDetails;
|
import net.minecraft.server.v1_11_R1.CrashReportSystemDetails;
|
||||||
import net.minecraft.server.v1_11_R1.DamageSource;
|
import net.minecraft.server.v1_11_R1.DamageSource;
|
||||||
import net.minecraft.server.v1_11_R1.DataWatcherObject;
|
import net.minecraft.server.v1_11_R1.DataWatcherObject;
|
||||||
|
import net.minecraft.server.v1_11_R1.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.v1_11_R1.DedicatedServer;
|
||||||
import net.minecraft.server.v1_11_R1.EnchantmentManager;
|
import net.minecraft.server.v1_11_R1.EnchantmentManager;
|
||||||
import net.minecraft.server.v1_11_R1.Enchantments;
|
import net.minecraft.server.v1_11_R1.Enchantments;
|
||||||
import net.minecraft.server.v1_11_R1.EnderDragonBattle;
|
import net.minecraft.server.v1_11_R1.EnderDragonBattle;
|
||||||
@ -245,6 +244,8 @@ import net.minecraft.server.v1_11_R1.Navigation;
|
|||||||
import net.minecraft.server.v1_11_R1.NavigationAbstract;
|
import net.minecraft.server.v1_11_R1.NavigationAbstract;
|
||||||
import net.minecraft.server.v1_11_R1.NavigationSpider;
|
import net.minecraft.server.v1_11_R1.NavigationSpider;
|
||||||
import net.minecraft.server.v1_11_R1.NetworkManager;
|
import net.minecraft.server.v1_11_R1.NetworkManager;
|
||||||
|
import net.minecraft.server.v1_11_R1.OpList;
|
||||||
|
import net.minecraft.server.v1_11_R1.OpListEntry;
|
||||||
import net.minecraft.server.v1_11_R1.Packet;
|
import net.minecraft.server.v1_11_R1.Packet;
|
||||||
import net.minecraft.server.v1_11_R1.PacketPlayOutAnimation;
|
import net.minecraft.server.v1_11_R1.PacketPlayOutAnimation;
|
||||||
import net.minecraft.server.v1_11_R1.PacketPlayOutBed;
|
import net.minecraft.server.v1_11_R1.PacketPlayOutBed;
|
||||||
@ -757,6 +758,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, BossBarTrait.class);
|
registerTraitWithCommand(manager, BossBarTrait.class);
|
||||||
registerTraitWithCommand(manager, LlamaTrait.class);
|
registerTraitWithCommand(manager, LlamaTrait.class);
|
||||||
@ -1300,6 +1302,23 @@ public class NMSImpl implements NMSBridge {
|
|||||||
getHandle(entity).setNoGravity(enabled);
|
getHandle(entity).setNoGravity(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final OpList opList = playerList.getOPs();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new OpListEntry(profile, server.getPropertyManager().getInt("op-permission-level", 4),
|
||||||
|
opList.b(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
player.recalculatePermissions();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
||||||
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
||||||
@ -1373,21 +1392,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.g(ticks);
|
handle.g(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final OpList opList = playerList.getOPs();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new OpListEntry(profile, server.getPropertyManager().getInt("op-permission-level", 4), opList.b(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
player.recalculatePermissions();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
||||||
|
@ -19,10 +19,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.server.v1_12_R1.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.v1_12_R1.DedicatedServer;
|
|
||||||
import net.minecraft.server.v1_12_R1.OpList;
|
|
||||||
import net.minecraft.server.v1_12_R1.OpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -182,6 +178,7 @@ import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator;
|
|||||||
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
||||||
import net.citizensnpcs.trait.versioned.LlamaTrait;
|
import net.citizensnpcs.trait.versioned.LlamaTrait;
|
||||||
@ -215,6 +212,8 @@ import net.minecraft.server.v1_12_R1.CrashReport;
|
|||||||
import net.minecraft.server.v1_12_R1.CrashReportSystemDetails;
|
import net.minecraft.server.v1_12_R1.CrashReportSystemDetails;
|
||||||
import net.minecraft.server.v1_12_R1.DamageSource;
|
import net.minecraft.server.v1_12_R1.DamageSource;
|
||||||
import net.minecraft.server.v1_12_R1.DataWatcherObject;
|
import net.minecraft.server.v1_12_R1.DataWatcherObject;
|
||||||
|
import net.minecraft.server.v1_12_R1.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.v1_12_R1.DedicatedServer;
|
||||||
import net.minecraft.server.v1_12_R1.EnchantmentManager;
|
import net.minecraft.server.v1_12_R1.EnchantmentManager;
|
||||||
import net.minecraft.server.v1_12_R1.Enchantments;
|
import net.minecraft.server.v1_12_R1.Enchantments;
|
||||||
import net.minecraft.server.v1_12_R1.EnderDragonBattle;
|
import net.minecraft.server.v1_12_R1.EnderDragonBattle;
|
||||||
@ -250,6 +249,8 @@ import net.minecraft.server.v1_12_R1.Navigation;
|
|||||||
import net.minecraft.server.v1_12_R1.NavigationAbstract;
|
import net.minecraft.server.v1_12_R1.NavigationAbstract;
|
||||||
import net.minecraft.server.v1_12_R1.NavigationSpider;
|
import net.minecraft.server.v1_12_R1.NavigationSpider;
|
||||||
import net.minecraft.server.v1_12_R1.NetworkManager;
|
import net.minecraft.server.v1_12_R1.NetworkManager;
|
||||||
|
import net.minecraft.server.v1_12_R1.OpList;
|
||||||
|
import net.minecraft.server.v1_12_R1.OpListEntry;
|
||||||
import net.minecraft.server.v1_12_R1.Packet;
|
import net.minecraft.server.v1_12_R1.Packet;
|
||||||
import net.minecraft.server.v1_12_R1.PacketPlayOutAnimation;
|
import net.minecraft.server.v1_12_R1.PacketPlayOutAnimation;
|
||||||
import net.minecraft.server.v1_12_R1.PacketPlayOutBed;
|
import net.minecraft.server.v1_12_R1.PacketPlayOutBed;
|
||||||
@ -759,6 +760,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, BossBarTrait.class);
|
registerTraitWithCommand(manager, BossBarTrait.class);
|
||||||
registerTraitWithCommand(manager, LlamaTrait.class);
|
registerTraitWithCommand(manager, LlamaTrait.class);
|
||||||
@ -1308,6 +1310,23 @@ public class NMSImpl implements NMSBridge {
|
|||||||
getHandle(entity).setNoGravity(enabled);
|
getHandle(entity).setNoGravity(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final OpList opList = playerList.getOPs();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new OpListEntry(profile, server.getPropertyManager().getInt("op-permission-level", 4),
|
||||||
|
opList.b(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
player.recalculatePermissions();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
||||||
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
||||||
@ -1381,21 +1400,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.g(ticks);
|
handle.g(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final OpList opList = playerList.getOPs();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new OpListEntry(profile, server.getPropertyManager().getInt("op-permission-level", 4), opList.b(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
player.recalculatePermissions();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
||||||
|
@ -18,10 +18,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.v1_13_R2.DedicatedServer;
|
|
||||||
import net.minecraft.server.v1_13_R2.OpList;
|
|
||||||
import net.minecraft.server.v1_13_R2.OpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -191,6 +187,7 @@ import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator;
|
|||||||
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
||||||
import net.citizensnpcs.trait.versioned.LlamaTrait;
|
import net.citizensnpcs.trait.versioned.LlamaTrait;
|
||||||
@ -227,6 +224,8 @@ import net.minecraft.server.v1_13_R2.CrashReport;
|
|||||||
import net.minecraft.server.v1_13_R2.CrashReportSystemDetails;
|
import net.minecraft.server.v1_13_R2.CrashReportSystemDetails;
|
||||||
import net.minecraft.server.v1_13_R2.DamageSource;
|
import net.minecraft.server.v1_13_R2.DamageSource;
|
||||||
import net.minecraft.server.v1_13_R2.DataWatcherObject;
|
import net.minecraft.server.v1_13_R2.DataWatcherObject;
|
||||||
|
import net.minecraft.server.v1_13_R2.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.v1_13_R2.DedicatedServer;
|
||||||
import net.minecraft.server.v1_13_R2.EnchantmentManager;
|
import net.minecraft.server.v1_13_R2.EnchantmentManager;
|
||||||
import net.minecraft.server.v1_13_R2.Enchantments;
|
import net.minecraft.server.v1_13_R2.Enchantments;
|
||||||
import net.minecraft.server.v1_13_R2.EnderDragonBattle;
|
import net.minecraft.server.v1_13_R2.EnderDragonBattle;
|
||||||
@ -267,6 +266,8 @@ import net.minecraft.server.v1_13_R2.Navigation;
|
|||||||
import net.minecraft.server.v1_13_R2.NavigationAbstract;
|
import net.minecraft.server.v1_13_R2.NavigationAbstract;
|
||||||
import net.minecraft.server.v1_13_R2.NavigationSpider;
|
import net.minecraft.server.v1_13_R2.NavigationSpider;
|
||||||
import net.minecraft.server.v1_13_R2.NetworkManager;
|
import net.minecraft.server.v1_13_R2.NetworkManager;
|
||||||
|
import net.minecraft.server.v1_13_R2.OpList;
|
||||||
|
import net.minecraft.server.v1_13_R2.OpListEntry;
|
||||||
import net.minecraft.server.v1_13_R2.Packet;
|
import net.minecraft.server.v1_13_R2.Packet;
|
||||||
import net.minecraft.server.v1_13_R2.PacketPlayOutAnimation;
|
import net.minecraft.server.v1_13_R2.PacketPlayOutAnimation;
|
||||||
import net.minecraft.server.v1_13_R2.PacketPlayOutBed;
|
import net.minecraft.server.v1_13_R2.PacketPlayOutBed;
|
||||||
@ -782,6 +783,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, BossBarTrait.class);
|
registerTraitWithCommand(manager, BossBarTrait.class);
|
||||||
registerTraitWithCommand(manager, LlamaTrait.class);
|
registerTraitWithCommand(manager, LlamaTrait.class);
|
||||||
@ -1344,6 +1346,24 @@ public class NMSImpl implements NMSBridge {
|
|||||||
getHandle(entity).setNoGravity(enabled);
|
getHandle(entity).setNoGravity(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final EntityPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final OpList opList = playerList.getOPs();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new OpListEntry(profile, server.getPropertyManager().getInt("op-permission-level", 4),
|
||||||
|
opList.b(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
playerList.f(playerHandle);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
||||||
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
||||||
@ -1417,22 +1437,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.d(ticks);
|
handle.d(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final EntityPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final OpList opList = playerList.getOPs();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new OpListEntry(profile, server.getPropertyManager().getInt("op-permission-level", 4), opList.b(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
playerList.f(playerHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
||||||
|
@ -17,10 +17,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.server.v1_14_R1.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.v1_14_R1.DedicatedServer;
|
|
||||||
import net.minecraft.server.v1_14_R1.OpList;
|
|
||||||
import net.minecraft.server.v1_14_R1.OpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -195,6 +191,7 @@ import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator;
|
|||||||
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
import net.citizensnpcs.trait.versioned.CatTrait;
|
import net.citizensnpcs.trait.versioned.CatTrait;
|
||||||
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
import net.citizensnpcs.trait.versioned.EnderDragonTrait;
|
||||||
@ -238,6 +235,8 @@ import net.minecraft.server.v1_14_R1.ControllerLook;
|
|||||||
import net.minecraft.server.v1_14_R1.ControllerMove;
|
import net.minecraft.server.v1_14_R1.ControllerMove;
|
||||||
import net.minecraft.server.v1_14_R1.DamageSource;
|
import net.minecraft.server.v1_14_R1.DamageSource;
|
||||||
import net.minecraft.server.v1_14_R1.DataWatcherObject;
|
import net.minecraft.server.v1_14_R1.DataWatcherObject;
|
||||||
|
import net.minecraft.server.v1_14_R1.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.v1_14_R1.DedicatedServer;
|
||||||
import net.minecraft.server.v1_14_R1.EnchantmentManager;
|
import net.minecraft.server.v1_14_R1.EnchantmentManager;
|
||||||
import net.minecraft.server.v1_14_R1.Enchantments;
|
import net.minecraft.server.v1_14_R1.Enchantments;
|
||||||
import net.minecraft.server.v1_14_R1.EnderDragonBattle;
|
import net.minecraft.server.v1_14_R1.EnderDragonBattle;
|
||||||
@ -282,6 +281,8 @@ import net.minecraft.server.v1_14_R1.Navigation;
|
|||||||
import net.minecraft.server.v1_14_R1.NavigationAbstract;
|
import net.minecraft.server.v1_14_R1.NavigationAbstract;
|
||||||
import net.minecraft.server.v1_14_R1.NavigationSpider;
|
import net.minecraft.server.v1_14_R1.NavigationSpider;
|
||||||
import net.minecraft.server.v1_14_R1.NetworkManager;
|
import net.minecraft.server.v1_14_R1.NetworkManager;
|
||||||
|
import net.minecraft.server.v1_14_R1.OpList;
|
||||||
|
import net.minecraft.server.v1_14_R1.OpListEntry;
|
||||||
import net.minecraft.server.v1_14_R1.Packet;
|
import net.minecraft.server.v1_14_R1.Packet;
|
||||||
import net.minecraft.server.v1_14_R1.PacketPlayOutEntity.PacketPlayOutEntityLook;
|
import net.minecraft.server.v1_14_R1.PacketPlayOutEntity.PacketPlayOutEntityLook;
|
||||||
import net.minecraft.server.v1_14_R1.PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook;
|
import net.minecraft.server.v1_14_R1.PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook;
|
||||||
@ -838,6 +839,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, BossBarTrait.class);
|
registerTraitWithCommand(manager, BossBarTrait.class);
|
||||||
registerTraitWithCommand(manager, CatTrait.class);
|
registerTraitWithCommand(manager, CatTrait.class);
|
||||||
@ -1395,6 +1397,24 @@ public class NMSImpl implements NMSBridge {
|
|||||||
getHandle(entity).setNoGravity(enabled);
|
getHandle(entity).setNoGravity(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final EntityPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final OpList opList = playerList.getOPs();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new OpListEntry(profile, server.getDedicatedServerProperties().opPermissionLevel,
|
||||||
|
opList.b(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
playerList.d(playerHandle);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
public void setPeekShulker(org.bukkit.entity.Entity shulker, int peek) {
|
||||||
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
((EntityShulker) getHandle(shulker)).a((byte) peek);
|
||||||
@ -1487,22 +1507,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.r(ticks);
|
handle.r(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final EntityPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final OpList opList = playerList.getOPs();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new OpListEntry(profile, server.getDedicatedServerProperties().opPermissionLevel, opList.b(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
playerList.d(playerHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
||||||
|
@ -17,10 +17,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.server.v1_15_R1.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.v1_15_R1.DedicatedServer;
|
|
||||||
import net.minecraft.server.v1_15_R1.OpList;
|
|
||||||
import net.minecraft.server.v1_15_R1.OpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -196,6 +192,7 @@ import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator;
|
|||||||
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BeeTrait;
|
import net.citizensnpcs.trait.versioned.BeeTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
import net.citizensnpcs.trait.versioned.CatTrait;
|
import net.citizensnpcs.trait.versioned.CatTrait;
|
||||||
@ -241,6 +238,8 @@ import net.minecraft.server.v1_15_R1.ControllerMove;
|
|||||||
import net.minecraft.server.v1_15_R1.ControllerMoveFlying;
|
import net.minecraft.server.v1_15_R1.ControllerMoveFlying;
|
||||||
import net.minecraft.server.v1_15_R1.DamageSource;
|
import net.minecraft.server.v1_15_R1.DamageSource;
|
||||||
import net.minecraft.server.v1_15_R1.DataWatcherObject;
|
import net.minecraft.server.v1_15_R1.DataWatcherObject;
|
||||||
|
import net.minecraft.server.v1_15_R1.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.v1_15_R1.DedicatedServer;
|
||||||
import net.minecraft.server.v1_15_R1.EnchantmentManager;
|
import net.minecraft.server.v1_15_R1.EnchantmentManager;
|
||||||
import net.minecraft.server.v1_15_R1.Enchantments;
|
import net.minecraft.server.v1_15_R1.Enchantments;
|
||||||
import net.minecraft.server.v1_15_R1.EnderDragonBattle;
|
import net.minecraft.server.v1_15_R1.EnderDragonBattle;
|
||||||
@ -287,6 +286,8 @@ import net.minecraft.server.v1_15_R1.Navigation;
|
|||||||
import net.minecraft.server.v1_15_R1.NavigationAbstract;
|
import net.minecraft.server.v1_15_R1.NavigationAbstract;
|
||||||
import net.minecraft.server.v1_15_R1.NavigationSpider;
|
import net.minecraft.server.v1_15_R1.NavigationSpider;
|
||||||
import net.minecraft.server.v1_15_R1.NetworkManager;
|
import net.minecraft.server.v1_15_R1.NetworkManager;
|
||||||
|
import net.minecraft.server.v1_15_R1.OpList;
|
||||||
|
import net.minecraft.server.v1_15_R1.OpListEntry;
|
||||||
import net.minecraft.server.v1_15_R1.Packet;
|
import net.minecraft.server.v1_15_R1.Packet;
|
||||||
import net.minecraft.server.v1_15_R1.PacketPlayOutEntity.PacketPlayOutEntityLook;
|
import net.minecraft.server.v1_15_R1.PacketPlayOutEntity.PacketPlayOutEntityLook;
|
||||||
import net.minecraft.server.v1_15_R1.PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook;
|
import net.minecraft.server.v1_15_R1.PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook;
|
||||||
@ -853,6 +854,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, BeeTrait.class);
|
registerTraitWithCommand(manager, BeeTrait.class);
|
||||||
registerTraitWithCommand(manager, BossBarTrait.class);
|
registerTraitWithCommand(manager, BossBarTrait.class);
|
||||||
@ -1432,6 +1434,24 @@ public class NMSImpl implements NMSBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final EntityPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final OpList opList = playerList.getOPs();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new OpListEntry(profile, server.getDedicatedServerProperties().opPermissionLevel,
|
||||||
|
opList.b(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
playerList.d(playerHandle);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
||||||
((EntityPanda) getHandle(entity)).r(sitting);
|
((EntityPanda) getHandle(entity)).r(sitting);
|
||||||
@ -1536,22 +1556,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.s(ticks);
|
handle.s(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final EntityPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final OpList opList = playerList.getOPs();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new OpListEntry(profile, server.getDedicatedServerProperties().opPermissionLevel, opList.b(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
playerList.d(playerHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
||||||
|
@ -17,10 +17,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.server.v1_16_R3.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.v1_16_R3.DedicatedServer;
|
|
||||||
import net.minecraft.server.v1_16_R3.OpList;
|
|
||||||
import net.minecraft.server.v1_16_R3.OpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -202,6 +198,7 @@ import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator;
|
|||||||
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BeeTrait;
|
import net.citizensnpcs.trait.versioned.BeeTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
import net.citizensnpcs.trait.versioned.CatTrait;
|
import net.citizensnpcs.trait.versioned.CatTrait;
|
||||||
@ -251,6 +248,8 @@ import net.minecraft.server.v1_16_R3.ControllerMove;
|
|||||||
import net.minecraft.server.v1_16_R3.ControllerMoveFlying;
|
import net.minecraft.server.v1_16_R3.ControllerMoveFlying;
|
||||||
import net.minecraft.server.v1_16_R3.DamageSource;
|
import net.minecraft.server.v1_16_R3.DamageSource;
|
||||||
import net.minecraft.server.v1_16_R3.DataWatcherObject;
|
import net.minecraft.server.v1_16_R3.DataWatcherObject;
|
||||||
|
import net.minecraft.server.v1_16_R3.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.v1_16_R3.DedicatedServer;
|
||||||
import net.minecraft.server.v1_16_R3.EnchantmentManager;
|
import net.minecraft.server.v1_16_R3.EnchantmentManager;
|
||||||
import net.minecraft.server.v1_16_R3.Enchantments;
|
import net.minecraft.server.v1_16_R3.Enchantments;
|
||||||
import net.minecraft.server.v1_16_R3.EnderDragonBattle;
|
import net.minecraft.server.v1_16_R3.EnderDragonBattle;
|
||||||
@ -299,6 +298,8 @@ import net.minecraft.server.v1_16_R3.Navigation;
|
|||||||
import net.minecraft.server.v1_16_R3.NavigationAbstract;
|
import net.minecraft.server.v1_16_R3.NavigationAbstract;
|
||||||
import net.minecraft.server.v1_16_R3.NavigationSpider;
|
import net.minecraft.server.v1_16_R3.NavigationSpider;
|
||||||
import net.minecraft.server.v1_16_R3.NetworkManager;
|
import net.minecraft.server.v1_16_R3.NetworkManager;
|
||||||
|
import net.minecraft.server.v1_16_R3.OpList;
|
||||||
|
import net.minecraft.server.v1_16_R3.OpListEntry;
|
||||||
import net.minecraft.server.v1_16_R3.Packet;
|
import net.minecraft.server.v1_16_R3.Packet;
|
||||||
import net.minecraft.server.v1_16_R3.PacketPlayOutEntity.PacketPlayOutEntityLook;
|
import net.minecraft.server.v1_16_R3.PacketPlayOutEntity.PacketPlayOutEntityLook;
|
||||||
import net.minecraft.server.v1_16_R3.PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook;
|
import net.minecraft.server.v1_16_R3.PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook;
|
||||||
@ -876,6 +877,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, BeeTrait.class);
|
registerTraitWithCommand(manager, BeeTrait.class);
|
||||||
registerTraitWithCommand(manager, BossBarTrait.class);
|
registerTraitWithCommand(manager, BossBarTrait.class);
|
||||||
@ -1460,6 +1462,24 @@ public class NMSImpl implements NMSBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final EntityPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final OpList opList = playerList.getOPs();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new OpListEntry(profile, server.getDedicatedServerProperties().opPermissionLevel,
|
||||||
|
opList.b(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
playerList.d(playerHandle);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
||||||
((EntityPanda) getHandle(entity)).t(sitting);
|
((EntityPanda) getHandle(entity)).t(sitting);
|
||||||
@ -1556,22 +1576,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.setInvul(ticks);
|
handle.setInvul(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final EntityPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final OpList opList = playerList.getOPs();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new OpListEntry(profile, server.getDedicatedServerProperties().opPermissionLevel, opList.b(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
playerList.d(playerHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof LivingEntity))
|
||||||
|
@ -16,10 +16,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.dedicated.DedicatedServer;
|
|
||||||
import net.minecraft.server.players.ServerOpList;
|
|
||||||
import net.minecraft.server.players.ServerOpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -203,6 +199,7 @@ import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
|||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.citizensnpcs.trait.EntityPoseTrait.EntityPose;
|
import net.citizensnpcs.trait.EntityPoseTrait.EntityPose;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BeeTrait;
|
import net.citizensnpcs.trait.versioned.BeeTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
@ -246,6 +243,8 @@ import net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket;
|
|||||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedServer;
|
||||||
import net.minecraft.server.level.ChunkMap;
|
import net.minecraft.server.level.ChunkMap;
|
||||||
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
||||||
import net.minecraft.server.level.ServerBossEvent;
|
import net.minecraft.server.level.ServerBossEvent;
|
||||||
@ -254,6 +253,8 @@ import net.minecraft.server.level.ServerEntity;
|
|||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.server.network.ServerPlayerConnection;
|
import net.minecraft.server.network.ServerPlayerConnection;
|
||||||
|
import net.minecraft.server.players.ServerOpList;
|
||||||
|
import net.minecraft.server.players.ServerOpListEntry;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.tags.FluidTags;
|
import net.minecraft.tags.FluidTags;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
@ -879,6 +880,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, AxolotlTrait.class);
|
registerTraitWithCommand(manager, AxolotlTrait.class);
|
||||||
registerTraitWithCommand(manager, BeeTrait.class);
|
registerTraitWithCommand(manager, BeeTrait.class);
|
||||||
@ -1455,6 +1457,24 @@ public class NMSImpl implements NMSBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final ServerOpList opList = playerList.getOps();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(),
|
||||||
|
opList.canBypassPlayerLimit(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
playerList.sendPlayerPermissionLevel(playerHandle);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
||||||
((Panda) getHandle(entity)).sit(sitting);
|
((Panda) getHandle(entity)).sit(sitting);
|
||||||
@ -1553,22 +1573,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.setInvulnerableTicks(ticks);
|
handle.setInvulnerableTicks(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final ServerOpList opList = playerList.getOps();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(), opList.canBypassPlayerLimit(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
playerList.sendPlayerPermissionLevel(playerHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
||||||
|
@ -15,10 +15,6 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.dedicated.DedicatedServer;
|
|
||||||
import net.minecraft.server.players.ServerOpList;
|
|
||||||
import net.minecraft.server.players.ServerOpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -204,6 +200,7 @@ import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator;
|
|||||||
import net.citizensnpcs.npc.ai.NPCHolder;
|
import net.citizensnpcs.npc.ai.NPCHolder;
|
||||||
import net.citizensnpcs.trait.EntityPoseTrait.EntityPose;
|
import net.citizensnpcs.trait.EntityPoseTrait.EntityPose;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BeeTrait;
|
import net.citizensnpcs.trait.versioned.BeeTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
@ -247,6 +244,8 @@ import net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket;
|
|||||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedServer;
|
||||||
import net.minecraft.server.level.ChunkMap;
|
import net.minecraft.server.level.ChunkMap;
|
||||||
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
||||||
import net.minecraft.server.level.ServerBossEvent;
|
import net.minecraft.server.level.ServerBossEvent;
|
||||||
@ -255,6 +254,8 @@ import net.minecraft.server.level.ServerEntity;
|
|||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.server.network.ServerPlayerConnection;
|
import net.minecraft.server.network.ServerPlayerConnection;
|
||||||
|
import net.minecraft.server.players.ServerOpList;
|
||||||
|
import net.minecraft.server.players.ServerOpListEntry;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.tags.FluidTags;
|
import net.minecraft.tags.FluidTags;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
@ -886,6 +887,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, AxolotlTrait.class);
|
registerTraitWithCommand(manager, AxolotlTrait.class);
|
||||||
registerTraitWithCommand(manager, BeeTrait.class);
|
registerTraitWithCommand(manager, BeeTrait.class);
|
||||||
@ -1465,6 +1467,24 @@ public class NMSImpl implements NMSBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final ServerOpList opList = playerList.getOps();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(),
|
||||||
|
opList.canBypassPlayerLimit(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
playerList.sendPlayerPermissionLevel(playerHandle);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
||||||
((Panda) getHandle(entity)).sit(sitting);
|
((Panda) getHandle(entity)).sit(sitting);
|
||||||
@ -1563,22 +1583,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.setInvulnerableTicks(ticks);
|
handle.setInvulnerableTicks(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final ServerOpList opList = playerList.getOps();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(), opList.canBypassPlayerLimit(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
playerList.sendPlayerPermissionLevel(playerHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
||||||
|
@ -20,10 +20,6 @@ import java.util.function.Function;
|
|||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.dedicated.DedicatedServer;
|
|
||||||
import net.minecraft.server.players.ServerOpList;
|
|
||||||
import net.minecraft.server.players.ServerOpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -224,6 +220,7 @@ import net.citizensnpcs.trait.EntityPoseTrait.EntityPose;
|
|||||||
import net.citizensnpcs.trait.MirrorTrait;
|
import net.citizensnpcs.trait.MirrorTrait;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
import net.citizensnpcs.trait.versioned.AllayTrait;
|
import net.citizensnpcs.trait.versioned.AllayTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BeeTrait;
|
import net.citizensnpcs.trait.versioned.BeeTrait;
|
||||||
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
import net.citizensnpcs.trait.versioned.BossBarTrait;
|
||||||
@ -283,6 +280,8 @@ import net.minecraft.network.syncher.EntityDataAccessor;
|
|||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedServer;
|
||||||
import net.minecraft.server.level.ChunkMap;
|
import net.minecraft.server.level.ChunkMap;
|
||||||
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
||||||
import net.minecraft.server.level.ServerBossEvent;
|
import net.minecraft.server.level.ServerBossEvent;
|
||||||
@ -291,6 +290,8 @@ import net.minecraft.server.level.ServerEntity;
|
|||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.server.network.ServerPlayerConnection;
|
import net.minecraft.server.network.ServerPlayerConnection;
|
||||||
|
import net.minecraft.server.players.ServerOpList;
|
||||||
|
import net.minecraft.server.players.ServerOpListEntry;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.sounds.SoundEvents;
|
import net.minecraft.sounds.SoundEvents;
|
||||||
import net.minecraft.tags.FluidTags;
|
import net.minecraft.tags.FluidTags;
|
||||||
@ -935,6 +936,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, AllayTrait.class);
|
registerTraitWithCommand(manager, AllayTrait.class);
|
||||||
registerTraitWithCommand(manager, AxolotlTrait.class);
|
registerTraitWithCommand(manager, AxolotlTrait.class);
|
||||||
@ -1617,6 +1619,24 @@ public class NMSImpl implements NMSBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final ServerOpList opList = playerList.getOps();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(),
|
||||||
|
opList.canBypassPlayerLimit(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
playerList.sendPlayerPermissionLevel(playerHandle);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
||||||
((Panda) getHandle(entity)).sit(sitting);
|
((Panda) getHandle(entity)).sit(sitting);
|
||||||
@ -1767,22 +1787,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
handle.setInvulnerableTicks(ticks);
|
handle.setInvulnerableTicks(ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final ServerOpList opList = playerList.getOps();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(), opList.canBypassPlayerLimit(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
playerList.sendPlayerPermissionLevel(playerHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
||||||
|
@ -18,10 +18,6 @@ import java.util.function.Function;
|
|||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.dedicated.DedicatedServer;
|
|
||||||
import net.minecraft.server.players.ServerOpList;
|
|
||||||
import net.minecraft.server.players.ServerOpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -226,6 +222,7 @@ import net.citizensnpcs.trait.EntityPoseTrait.EntityPose;
|
|||||||
import net.citizensnpcs.trait.MirrorTrait;
|
import net.citizensnpcs.trait.MirrorTrait;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
import net.citizensnpcs.trait.versioned.AllayTrait;
|
import net.citizensnpcs.trait.versioned.AllayTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.ArmadilloTrait;
|
import net.citizensnpcs.trait.versioned.ArmadilloTrait;
|
||||||
import net.citizensnpcs.trait.versioned.ArmadilloTrait.ArmadilloState;
|
import net.citizensnpcs.trait.versioned.ArmadilloTrait.ArmadilloState;
|
||||||
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
||||||
@ -294,6 +291,8 @@ import net.minecraft.network.syncher.EntityDataAccessor;
|
|||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedServer;
|
||||||
import net.minecraft.server.level.ChunkMap;
|
import net.minecraft.server.level.ChunkMap;
|
||||||
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
||||||
import net.minecraft.server.level.ServerBossEvent;
|
import net.minecraft.server.level.ServerBossEvent;
|
||||||
@ -302,6 +301,8 @@ import net.minecraft.server.level.ServerEntity;
|
|||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.server.network.ServerPlayerConnection;
|
import net.minecraft.server.network.ServerPlayerConnection;
|
||||||
|
import net.minecraft.server.players.ServerOpList;
|
||||||
|
import net.minecraft.server.players.ServerOpListEntry;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.sounds.SoundEvents;
|
import net.minecraft.sounds.SoundEvents;
|
||||||
import net.minecraft.tags.FluidTags;
|
import net.minecraft.tags.FluidTags;
|
||||||
@ -958,6 +959,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
registerTraitWithCommand(manager, AllayTrait.class);
|
registerTraitWithCommand(manager, AllayTrait.class);
|
||||||
registerTraitWithCommand(manager, AxolotlTrait.class);
|
registerTraitWithCommand(manager, AxolotlTrait.class);
|
||||||
@ -1661,6 +1663,24 @@ public class NMSImpl implements NMSBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final ServerOpList opList = playerList.getOps();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(),
|
||||||
|
opList.canBypassPlayerLimit(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
playerList.sendPlayerPermissionLevel(playerHandle);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
||||||
((Panda) getHandle(entity)).sit(sitting);
|
((Panda) getHandle(entity)).sit(sitting);
|
||||||
@ -1808,22 +1828,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final ServerOpList opList = playerList.getOps();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(), opList.canBypassPlayerLimit(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
playerList.sendPlayerPermissionLevel(playerHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
||||||
|
@ -18,10 +18,6 @@ import java.util.function.Function;
|
|||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
|
||||||
import net.minecraft.server.dedicated.DedicatedServer;
|
|
||||||
import net.minecraft.server.players.ServerOpList;
|
|
||||||
import net.minecraft.server.players.ServerOpListEntry;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -226,6 +222,7 @@ import net.citizensnpcs.trait.EntityPoseTrait.EntityPose;
|
|||||||
import net.citizensnpcs.trait.MirrorTrait;
|
import net.citizensnpcs.trait.MirrorTrait;
|
||||||
import net.citizensnpcs.trait.RotationTrait;
|
import net.citizensnpcs.trait.RotationTrait;
|
||||||
import net.citizensnpcs.trait.versioned.AllayTrait;
|
import net.citizensnpcs.trait.versioned.AllayTrait;
|
||||||
|
import net.citizensnpcs.trait.versioned.AreaEffectCloudTrait;
|
||||||
import net.citizensnpcs.trait.versioned.ArmadilloTrait;
|
import net.citizensnpcs.trait.versioned.ArmadilloTrait;
|
||||||
import net.citizensnpcs.trait.versioned.ArmadilloTrait.ArmadilloState;
|
import net.citizensnpcs.trait.versioned.ArmadilloTrait.ArmadilloState;
|
||||||
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
import net.citizensnpcs.trait.versioned.AxolotlTrait;
|
||||||
@ -294,6 +291,8 @@ import net.minecraft.network.syncher.EntityDataAccessor;
|
|||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedPlayerList;
|
||||||
|
import net.minecraft.server.dedicated.DedicatedServer;
|
||||||
import net.minecraft.server.level.ChunkMap;
|
import net.minecraft.server.level.ChunkMap;
|
||||||
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
import net.minecraft.server.level.ChunkMap.TrackedEntity;
|
||||||
import net.minecraft.server.level.ServerBossEvent;
|
import net.minecraft.server.level.ServerBossEvent;
|
||||||
@ -302,6 +301,8 @@ import net.minecraft.server.level.ServerEntity;
|
|||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.server.network.ServerPlayerConnection;
|
import net.minecraft.server.network.ServerPlayerConnection;
|
||||||
|
import net.minecraft.server.players.ServerOpList;
|
||||||
|
import net.minecraft.server.players.ServerOpListEntry;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.sounds.SoundEvents;
|
import net.minecraft.sounds.SoundEvents;
|
||||||
import net.minecraft.tags.FluidTags;
|
import net.minecraft.tags.FluidTags;
|
||||||
@ -939,6 +940,7 @@ public class NMSImpl implements NMSBridge {
|
|||||||
@Override
|
@Override
|
||||||
public void load(CommandManager manager) {
|
public void load(CommandManager manager) {
|
||||||
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
registerTraitWithCommand(manager, EnderDragonTrait.class);
|
||||||
|
registerTraitWithCommand(manager, AreaEffectCloudTrait.class);
|
||||||
registerTraitWithCommand(manager, AllayTrait.class);
|
registerTraitWithCommand(manager, AllayTrait.class);
|
||||||
registerTraitWithCommand(manager, AxolotlTrait.class);
|
registerTraitWithCommand(manager, AxolotlTrait.class);
|
||||||
registerTraitWithCommand(manager, ArmadilloTrait.class);
|
registerTraitWithCommand(manager, ArmadilloTrait.class);
|
||||||
@ -1625,6 +1627,24 @@ public class NMSImpl implements NMSBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOpWithoutSaving(Player player, boolean op) {
|
||||||
|
if (player.isOp() == op)
|
||||||
|
return;
|
||||||
|
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
||||||
|
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
||||||
|
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
||||||
|
final DedicatedServer server = playerList.getServer();
|
||||||
|
final ServerOpList opList = playerList.getOps();
|
||||||
|
if (op) {
|
||||||
|
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(),
|
||||||
|
opList.canBypassPlayerLimit(profile)));
|
||||||
|
} else {
|
||||||
|
opList.remove(profile);
|
||||||
|
}
|
||||||
|
playerList.sendPlayerPermissionLevel(playerHandle);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
public void setPandaSitting(org.bukkit.entity.Entity entity, boolean sitting) {
|
||||||
((Panda) getHandle(entity)).sit(sitting);
|
((Panda) getHandle(entity)).sit(sitting);
|
||||||
@ -1772,22 +1792,6 @@ public class NMSImpl implements NMSBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setOpWithoutSaving(Player player, boolean op) {
|
|
||||||
if (player.isOp() == op) return;
|
|
||||||
final ServerPlayer playerHandle = ((CraftPlayer) player).getHandle();
|
|
||||||
final GameProfile profile = ((CraftPlayer) player).getProfile();
|
|
||||||
final DedicatedPlayerList playerList = ((CraftServer) player.getServer()).getHandle();
|
|
||||||
final DedicatedServer server = playerList.getServer();
|
|
||||||
final ServerOpList opList = playerList.getOps();
|
|
||||||
if (op) {
|
|
||||||
opList.add(new ServerOpListEntry(profile, server.getOperatorUserPermissionLevel(), opList.canBypassPlayerLimit(profile)));
|
|
||||||
} else {
|
|
||||||
opList.remove(profile);
|
|
||||||
}
|
|
||||||
playerList.sendPlayerPermissionLevel(playerHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
public boolean shouldJump(org.bukkit.entity.Entity entity) {
|
||||||
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
if (JUMP_FIELD == null || !(entity instanceof org.bukkit.entity.LivingEntity))
|
||||||
|
Loading…
Reference in New Issue
Block a user