added spell property
This commit is contained in:
parent
dd029786dd
commit
0569df795b
3 changed files with 33 additions and 4 deletions
|
@ -1,5 +1,7 @@
|
||||||
package lol.pyr.znpcsplus.commands.property;
|
package lol.pyr.znpcsplus.commands.property;
|
||||||
|
|
||||||
|
import com.github.retrooper.packetevents.PacketEvents;
|
||||||
|
import com.github.retrooper.packetevents.manager.server.ServerVersion;
|
||||||
import com.github.retrooper.packetevents.protocol.world.states.WrappedBlockState;
|
import com.github.retrooper.packetevents.protocol.world.states.WrappedBlockState;
|
||||||
import com.github.retrooper.packetevents.protocol.world.states.type.StateType;
|
import com.github.retrooper.packetevents.protocol.world.states.type.StateType;
|
||||||
import com.github.retrooper.packetevents.protocol.world.states.type.StateTypes;
|
import com.github.retrooper.packetevents.protocol.world.states.type.StateTypes;
|
||||||
|
@ -18,6 +20,7 @@ import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import com.github.retrooper.packetevents.protocol.item.ItemStack;
|
import com.github.retrooper.packetevents.protocol.item.ItemStack;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -96,6 +99,20 @@ public class PropertySetCommand implements CommandHandler {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (type == SpellType.class) {
|
||||||
|
if (PacketEvents.getAPI().getServerManager().getVersion().isOlderThan(ServerVersion.V_1_13)) {
|
||||||
|
value = context.parse(type);
|
||||||
|
valueName = String.valueOf(value);
|
||||||
|
if (((SpellType) value).ordinal() > 3) {
|
||||||
|
context.send(Component.text("Spell type " + valueName + " is not supported on this version", NamedTextColor.RED));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
value = context.parse(type);
|
||||||
|
valueName = String.valueOf(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
value = context.parse(type);
|
value = context.parse(type);
|
||||||
valueName = String.valueOf(value);
|
valueName = String.valueOf(value);
|
||||||
|
@ -119,6 +136,9 @@ public class PropertySetCommand implements CommandHandler {
|
||||||
if (type == NamedTextColor.class) return context.suggestCollection(NamedTextColor.NAMES.keys());
|
if (type == NamedTextColor.class) return context.suggestCollection(NamedTextColor.NAMES.keys());
|
||||||
if (type == Color.class) return context.suggestLiteral("0x0F00FF", "#FFFFFF");
|
if (type == Color.class) return context.suggestLiteral("0x0F00FF", "#FFFFFF");
|
||||||
if (type == BlockState.class) return context.suggestLiteral("hand", "looking_at", "block");
|
if (type == BlockState.class) return context.suggestLiteral("hand", "looking_at", "block");
|
||||||
|
if (type == SpellType.class) return PacketEvents.getAPI().getServerManager().getVersion().isOlderThan(ServerVersion.V_1_13) ?
|
||||||
|
context.suggestEnum(Arrays.stream(SpellType.values()).filter(spellType -> spellType.ordinal() <= 3).toArray(SpellType[]::new)) :
|
||||||
|
context.suggestEnum(SpellType.values());
|
||||||
|
|
||||||
// Suggest enum values directly
|
// Suggest enum values directly
|
||||||
if (type.isEnum()) {
|
if (type.isEnum()) {
|
||||||
|
|
|
@ -84,9 +84,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
||||||
registerType("enderman_screaming", false); // TODO
|
registerType("enderman_screaming", false); // TODO
|
||||||
registerType("enderman_staring", false); // TODO
|
registerType("enderman_staring", false); // TODO
|
||||||
|
|
||||||
// Evoker
|
|
||||||
registerType("evoker_spell", SpellType.NONE);
|
|
||||||
|
|
||||||
// Frog
|
// Frog
|
||||||
registerType("frog_variant", FrogVariant.TEMPERATE);
|
registerType("frog_variant", FrogVariant.TEMPERATE);
|
||||||
|
|
||||||
|
@ -271,7 +268,7 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
||||||
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_10)) batIndex = 12;
|
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_10)) batIndex = 12;
|
||||||
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_9)) batIndex = 11;
|
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_9)) batIndex = 11;
|
||||||
else batIndex = 16;
|
else batIndex = 16;
|
||||||
register(new BooleanProperty("hanging", batIndex, false, true /* This isnt a mistake */));
|
register(new BooleanProperty("hanging", batIndex, false, true /* This isn't a mistake */));
|
||||||
|
|
||||||
// Blaze
|
// Blaze
|
||||||
final int blazeIndex;
|
final int blazeIndex;
|
||||||
|
@ -344,6 +341,15 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
||||||
linkProperties("is_saddled", "is_eating", "is_rearing", "has_mouth_open");
|
linkProperties("is_saddled", "is_eating", "is_rearing", "has_mouth_open");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ver.isNewerThanOrEquals(ServerVersion.V_1_11)) return;
|
||||||
|
// Spellcaster Illager
|
||||||
|
int spellIndex = 12;
|
||||||
|
if (ver.isNewerThanOrEquals(ServerVersion.V_1_17)) spellIndex = 17;
|
||||||
|
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_15)) spellIndex = 16;
|
||||||
|
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_14)) spellIndex = 15;
|
||||||
|
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_12)) spellIndex = 13;
|
||||||
|
register(new EncodedByteProperty<>("spell", SpellType.NONE, spellIndex, obj -> (byte) Math.min(obj.ordinal(), ver.isOlderThan(ServerVersion.V_1_13) ? 3 : 5)));
|
||||||
|
|
||||||
if (!ver.isNewerThanOrEquals(ServerVersion.V_1_14)) return;
|
if (!ver.isNewerThanOrEquals(ServerVersion.V_1_14)) return;
|
||||||
// Pose
|
// Pose
|
||||||
register(new NpcPoseProperty());
|
register(new NpcPoseProperty());
|
||||||
|
|
|
@ -129,6 +129,9 @@ public class NpcTypeImpl implements NpcType {
|
||||||
} else if (version.isOlderThan(ServerVersion.V_1_11) && type.equals(EntityTypes.HORSE)) {
|
} else if (version.isOlderThan(ServerVersion.V_1_11) && type.equals(EntityTypes.HORSE)) {
|
||||||
addProperties("has_chest");
|
addProperties("has_chest");
|
||||||
}
|
}
|
||||||
|
if (EntityTypes.isTypeInstanceOf(type, EntityTypes.ABSTRACT_EVO_ILLU_ILLAGER)) {
|
||||||
|
addProperties("spell");
|
||||||
|
}
|
||||||
return new NpcTypeImpl(name, type, hologramOffset, new HashSet<>(allowedProperties), defaultProperties);
|
return new NpcTypeImpl(name, type, hologramOffset, new HashSet<>(allowedProperties), defaultProperties);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue