diff --git a/build.gradle b/build.gradle index 6c58a893c..2b836562d 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { id 'java-library' - id 'com.github.johnrengelman.shadow' version '7.1.2' + id 'io.github.goooler.shadow' version '8.1.7' } shadowJar { diff --git a/bungee/build.gradle b/bungee/build.gradle index 777bb0868..07a16478c 100644 --- a/bungee/build.gradle +++ b/bungee/build.gradle @@ -1,7 +1,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { - id 'com.github.johnrengelman.shadow' + id 'io.github.goooler.shadow' } evaluationDependsOn(':common') // Projects are evaluated by alphabetical order, but common should be evaluated before bungee @@ -14,21 +14,18 @@ sourceSets { } repositories { + mavenCentral() maven { name 'sonatype' url 'https://oss.sonatype.org/content/repositories/snapshots/' } - maven { - name 'jitpack' - url 'https://jitpack.io' - } } dependencies { api project(':common') implementation 'org.bstats:bstats-bungeecord-lite:1.7' - compileOnly 'net.md-5:bungeecord-api:1.19-R0.1-SNAPSHOT' - compileOnly 'net.md-5:bungeecord-chat:1.19-R0.1-SNAPSHOT' + compileOnly 'net.md-5:bungeecord-api:1.20-R0.1-SNAPSHOT' + compileOnly 'net.md-5:bungeecord-chat:1.20-R0.1-SNAPSHOT' compileOnly 'com.github.minecrafter:RedisBungee:master' } diff --git a/common/build.gradle b/common/build.gradle index 500b06a08..5d1fe273f 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -1,7 +1,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { - id 'com.github.johnrengelman.shadow' + id 'io.github.goooler.shadow' } sourceSets { diff --git a/common/integrations/advancedban/build.gradle b/common/integrations/advancedban/build.gradle index 96330bbc1..3b99fe190 100644 --- a/common/integrations/advancedban/build.gradle +++ b/common/integrations/advancedban/build.gradle @@ -6,7 +6,7 @@ sourceSets { } dependencies { - compileOnly 'com.github.DevLeoko:AdvancedBan:v2.2.1' + compileOnly 'com.github.DevLeoko:AdvancedBan:v2.3.0' api project(':common') //compileOnly(project(':common')) } diff --git a/common/integrations/floodgate/build.gradle b/common/integrations/floodgate/build.gradle index 74bcd4068..757e3fb21 100644 --- a/common/integrations/floodgate/build.gradle +++ b/common/integrations/floodgate/build.gradle @@ -10,11 +10,11 @@ sourceSets { repositories { maven { name 'geyser' - url 'https://repo.opencollab.dev/maven-snapshots/' + url 'https://repo.opencollab.dev/main/' } } dependencies { - compileOnly 'org.geysermc.floodgate:api:2.2.0-SNAPSHOT' + compileOnly 'org.geysermc.floodgate:api:2.2.2-SNAPSHOT' api(project(':common')) } diff --git a/common/integrations/geysermc/build.gradle b/common/integrations/geysermc/build.gradle index da487a12e..8c3f56752 100644 --- a/common/integrations/geysermc/build.gradle +++ b/common/integrations/geysermc/build.gradle @@ -17,8 +17,8 @@ configurations { repositories { maven { - name 'geyser' - url 'https://repo.opencollab.dev/maven-snapshots/' + name 'geyser-main' + url 'https://repo.opencollab.dev/main/' } } diff --git a/common/integrations/litebans/build.gradle b/common/integrations/litebans/build.gradle index 19c47ffce..789753d71 100644 --- a/common/integrations/litebans/build.gradle +++ b/common/integrations/litebans/build.gradle @@ -6,6 +6,6 @@ sourceSets { } dependencies { - compileOnly 'com.gitlab.ruany:LiteBansAPI:0.3.4' + compileOnly 'com.gitlab.ruany:LiteBansAPI:0.5.0' api(project(':common')) } diff --git a/common/integrations/viaversion/build.gradle b/common/integrations/viaversion/build.gradle index 432fa407d..cffdf6738 100644 --- a/common/integrations/viaversion/build.gradle +++ b/common/integrations/viaversion/build.gradle @@ -13,6 +13,6 @@ repositories { } dependencies { - compileOnly 'com.viaversion:viaversion-api:4.7.0' + compileOnly 'com.viaversion:viaversion-api:4.10.2' api(project(':common')) } diff --git a/common/src/com/elikill58/negativity/api/entity/AbstractPlayer.java b/common/src/com/elikill58/negativity/api/entity/AbstractPlayer.java index 6b2b2fff4..287dd6e72 100644 --- a/common/src/com/elikill58/negativity/api/entity/AbstractPlayer.java +++ b/common/src/com/elikill58/negativity/api/entity/AbstractPlayer.java @@ -59,7 +59,8 @@ public void setProtocolVersion(int protocolVersion) { public Location getLocation() { return location; } - + + @Override public void setLocation(Location location) { this.location = location; } diff --git a/common/src/com/elikill58/negativity/api/entity/Player.java b/common/src/com/elikill58/negativity/api/entity/Player.java index 5cd9b7612..4086a83ef 100644 --- a/common/src/com/elikill58/negativity/api/entity/Player.java +++ b/common/src/com/elikill58/negativity/api/entity/Player.java @@ -34,13 +34,6 @@ public interface Player extends OfflinePlayer { @Nullable String getIP(); - /** - * Know if the player is dead - * - * @return true if the player is dead - */ - boolean isDead(); - /** * Know if the player is sleeping * @@ -225,6 +218,7 @@ default void setSleeping(boolean b) { * * @return the world where the player is */ + @Override CompensatedWorld getWorld(); /** diff --git a/common/src/com/elikill58/negativity/api/inventory/InventoryManager.java b/common/src/com/elikill58/negativity/api/inventory/InventoryManager.java index 8ce32332f..04222c97d 100644 --- a/common/src/com/elikill58/negativity/api/inventory/InventoryManager.java +++ b/common/src/com/elikill58/negativity/api/inventory/InventoryManager.java @@ -74,7 +74,6 @@ public InventoryManager() { AbstractInventory.getInventories().forEach(AbstractInventory::load); } - @SuppressWarnings({ "rawtypes" }) @EventListener public void onInventoryClick(InventoryClickEvent e) { PlatformHolder holder = e.getClickedInventory().getHolder(); diff --git a/common/src/com/elikill58/negativity/api/json/JSONArray.java b/common/src/com/elikill58/negativity/api/json/JSONArray.java index bc0574ef1..caaa35a68 100644 --- a/common/src/com/elikill58/negativity/api/json/JSONArray.java +++ b/common/src/com/elikill58/negativity/api/json/JSONArray.java @@ -16,7 +16,6 @@ * * @author FangYidong */ -@SuppressWarnings({ "rawtypes"}) public class JSONArray extends ArrayList implements JSONAware, JSONStreamAware { private static final long serialVersionUID = 3957988303675231981L; diff --git a/common/src/com/elikill58/negativity/api/json/JSONObject.java b/common/src/com/elikill58/negativity/api/json/JSONObject.java index 88d772e38..5799a8f7d 100644 --- a/common/src/com/elikill58/negativity/api/json/JSONObject.java +++ b/common/src/com/elikill58/negativity/api/json/JSONObject.java @@ -16,7 +16,6 @@ * * @author FangYidong */ -@SuppressWarnings({"rawtypes"}) public class JSONObject extends HashMap implements Map, JSONAware, JSONStreamAware{ private static final long serialVersionUID = -503443796854799292L; diff --git a/common/src/com/elikill58/negativity/api/json/JSONValue.java b/common/src/com/elikill58/negativity/api/json/JSONValue.java index 3f6f958c4..5d3300f2e 100644 --- a/common/src/com/elikill58/negativity/api/json/JSONValue.java +++ b/common/src/com/elikill58/negativity/api/json/JSONValue.java @@ -18,7 +18,6 @@ /** * @author FangYidong */ -@SuppressWarnings("rawtypes") public class JSONValue { /** * Parse JSON text into java object from the input source. Please use diff --git a/common/src/com/elikill58/negativity/api/json/parser/ContainerFactory.java b/common/src/com/elikill58/negativity/api/json/parser/ContainerFactory.java index 92f7c9a57..f7597c05f 100644 --- a/common/src/com/elikill58/negativity/api/json/parser/ContainerFactory.java +++ b/common/src/com/elikill58/negativity/api/json/parser/ContainerFactory.java @@ -10,7 +10,6 @@ * * @author FangYidong */ -@SuppressWarnings("rawtypes") public interface ContainerFactory { /** * @return A Map instance to store JSON object, or null if you want to use org.json.JSONObject. diff --git a/common/src/com/elikill58/negativity/api/json/parser/JSONParser.java b/common/src/com/elikill58/negativity/api/json/parser/JSONParser.java index 5ebb683ff..2254f4c88 100644 --- a/common/src/com/elikill58/negativity/api/json/parser/JSONParser.java +++ b/common/src/com/elikill58/negativity/api/json/parser/JSONParser.java @@ -19,7 +19,6 @@ * * @author FangYidong */ -@SuppressWarnings({"rawtypes"}) public class JSONParser { public static final int S_INIT=0; public static final int S_IN_FINISHED_VALUE=1;//string,number,boolean,null,object,array diff --git a/common/src/com/elikill58/negativity/api/packets/PacketType.java b/common/src/com/elikill58/negativity/api/packets/PacketType.java index 536ff1852..43209c762 100644 --- a/common/src/com/elikill58/negativity/api/packets/PacketType.java +++ b/common/src/com/elikill58/negativity/api/packets/PacketType.java @@ -179,13 +179,25 @@ enum Client implements PacketType { CHAT(NPacketPlayInChat::new), CHAT_ACK, CHAT_COMMAND, + /** + * Since MC 1.20.5 + */ + CHAT_COMMAND_SIGNED, CHAT_PREVIEW, CHAT_SESSION_UPDATE, CHUNK_BATCH_RECEIVED, CLIENT_COMMAND, CLOSE_WINDOW, CONFIGURATION_ACKNOWLEDGED, + /** + * Since MC 1.20.5 + */ + COOKIE_RESPONSE, CUSTOM_PAYLOAD(NPacketPlayInCustomPayload::new), + /** + * Since MC 1.20.5 + */ + DEBUG_SAMPLE_SUBSCRIPTION, DIFFICULTY_CHANGE, DIFFICULTY_LOCK, ENCHANT_ITEM, @@ -295,12 +307,15 @@ enum Server implements PacketType { COMBAT_ENTER_EVENT, COMBAT_KILL_EVENT, COMMANDS, + COOKIE_STORE, + COOKIE_REQUEST, CHUNK_BATCH_FINISHED, CHUNK_BATCH_STARTED, CHUNK_BIOMES, CUSTOM_PAYLOAD(NPacketPlayOutCustomPayload::new), CUSTOM_SOUND_EFFECT, DAMAGE_EVENT, + DEBUG_SAMPLE, ENTITY, ENTITY_DESTROY(NPacketPlayOutEntityDestroy::new), ENTITY_EFFECT(NPacketPlayOutEntityEffect::new), @@ -316,6 +331,7 @@ enum Server implements PacketType { GAME_STATE_CHANGE, HELD_ITEM_SLOT, HIT_ANIMATION, + HURT_ANIMATION, INITIALIZE_BORDER, KEEP_ALIVE(NPacketPlayOutKeepAlive::new), KICK_DISCONNECT, @@ -340,6 +356,7 @@ enum Server implements PacketType { PLAYER_INFO_UPDATE, PLAYER_LIST_HEADER_FOOTER, POSITION(NPacketPlayOutPosition::new), + PROJECTILE_POWER, RECIPES, RECIPE_UPDATE, REL_ENTITY_LOOK(NPacketPlayOutRelEntityLook::new), @@ -388,6 +405,7 @@ enum Server implements PacketType { TICKING_STEP, TILE_ENTITY_DATA, TITLE, + TRANSFERT, PING(NPacketPlayOutPing::new), PONG, UNLOAD_CHUNK(NPacketPlayOutUnloadChunk::new), diff --git a/common/src/com/elikill58/negativity/api/packets/nms/versions/Version1_20_5.java b/common/src/com/elikill58/negativity/api/packets/nms/versions/Version1_20_5.java new file mode 100644 index 000000000..34a8eabcc --- /dev/null +++ b/common/src/com/elikill58/negativity/api/packets/nms/versions/Version1_20_5.java @@ -0,0 +1,100 @@ +package com.elikill58.negativity.api.packets.nms.versions; + +import java.util.Arrays; + +import com.elikill58.negativity.api.entity.EntityType; +import com.elikill58.negativity.api.packets.PacketType.Client; +import com.elikill58.negativity.api.packets.PacketType.Server; +import com.elikill58.negativity.api.packets.nms.NamedVersion; + +public class Version1_20_5 extends NamedVersion { + + public Version1_20_5() { + super("1.20.5"); + // packets ID seems not same as 1.20 + int i = 0; + for (Client type : Arrays.asList(Client.TELEPORT_ACCEPT, Client.TILE_NBT_QUERY, Client.DIFFICULTY_CHANGE, + Client.CHAT_ACK, Client.CHAT_COMMAND, Client.CHAT_COMMAND_SIGNED, Client.CHAT, + Client.CHAT_SESSION_UPDATE, Client.CHUNK_BATCH_RECEIVED, Client.CLIENT_COMMAND, Client.SETTINGS, + Client.TAB_COMPLETE, Client.CONFIGURATION_ACKNOWLEDGED, Client.ENCHANT_ITEM, Client.WINDOW_CLICK, + Client.CLOSE_WINDOW, Client.SLOT_STATE_CHANGE, Client.COOKIE_RESPONSE, Client.CUSTOM_PAYLOAD, + Client.DEBUG_SAMPLE_SUBSCRIPTION, Client.BEDIT, Client.ENTITY_NBT_QUERY, Client.USE_ENTITY, + Client.JIGSAW_GENERATE, Client.KEEP_ALIVE, Client.DIFFICULTY_LOCK, Client.POSITION, + Client.POSITION_LOOK, Client.LOOK, Client.GROUND, Client.VEHICLE_MOVE, Client.BOAT_MOVE, + Client.PICK_ITEM, Client.PING, Client.AUTO_RECIPE, Client.ABILITIES, Client.BLOCK_DIG, + Client.ENTITY_ACTION, Client.STEER_VEHICLE, Client.PONG, Client.RECIPE_SETTINGS, + Client.RECIPE_DISPLAYED, Client.ITEM_NAME, Client.RESOURCE_PACK_STATUS, Client.ADVANCEMENTS, + Client.TR_SEL, Client.BEACON, Client.HELD_ITEM_SLOT, Client.SET_COMMAND_BLOCK, + Client.SET_COMMAND_MINECART, Client.SET_CREATIVE_SLOT, Client.SET_JIGSAW, Client.STRUCT, + Client.UPDATE_SIGN, Client.ARM_ANIMATION, Client.SPECTATE, Client.USE_ITEM, Client.BLOCK_PLACE)) { + playIn.put(i++, type); + } + i = 0; + for (Server type : Arrays.asList(Server.BUNDLE, Server.SPAWN_ENTITY, Server.SPAWN_ENTITY_EXPERIENCE_ORB, + Server.ANIMATION, Server.STATISTIC, Server.BLOCK_CHANGED_ACK, Server.BLOCK_BREAK_ANIMATION, + Server.TILE_ENTITY_DATA, Server.BLOCK_ACTION, Server.BLOCK_CHANGE, Server.BOSS, + Server.SERVER_DIFFICULTY, Server.CHUNK_BATCH_FINISHED, Server.CHUNK_BATCH_STARTED, Server.CHUNK_BIOMES, + Server.CLEAR_TITLE, Server.TAB_COMPLETE, Server.COMMANDS, Server.CLOSE_WINDOW, Server.WINDOW_ITEMS, + Server.WINDOW_DATA, Server.SET_SLOT, Server.COOKIE_REQUEST, Server.SET_COOLDOWN, + Server.CHAT_CUSTOM_COMPLETION, Server.CUSTOM_PAYLOAD, Server.DAMAGE_EVENT, Server.DEBUG_SAMPLE, + Server.CHAT_DELETE, Server.KICK_DISCONNECT, Server.CHAT_DISGUISED, Server.ENTITY_STATUS, + Server.EXPLOSION, Server.UNLOAD_CHUNK, Server.GAME_STATE_CHANGE, Server.OPEN_WINDOW_HORSE, + Server.HURT_ANIMATION, Server.INITIALIZE_BORDER, Server.KEEP_ALIVE, Server.LEVEL_CHUNK_LIGHT, + Server.WORLD_EVENT, Server.WORLD_PARTICLES, Server.LIGHT_UPDATE, Server.LOGIN, Server.MAP, + Server.OPEN_WINDOW_MERCHANT, Server.REL_ENTITY_MOVE, Server.REL_ENTITY_MOVE_LOOK, + Server.REL_ENTITY_LOOK, Server.VEHICLE_MOVE, Server.OPEN_BOOK, Server.OPEN_WINDOW, + Server.OPEN_SIGN_EDITOR, Server.PING, Server.PONG, Server.AUTO_RECIPE, Server.ABILITIES, Server.CHAT, + Server.COMBAT_END_EVENT, Server.COMBAT_ENTER_EVENT, Server.COMBAT_KILL_EVENT, Server.PLAYER_INFO_REMOVE, + Server.PLAYER_INFO_UPDATE, Server.LOOK_AT, Server.POSITION, Server.RECIPES, Server.ENTITY_DESTROY, + Server.REMOVE_ENTITY_EFFECT, Server.SCOREBOARD_RESET, Server.RESOURCE_PACK_POP, + Server.RESOURCE_PACK_SEND, Server.RESPAWN, Server.ENTITY_HEAD_ROTATION, Server.MULTI_BLOCK_CHANGE, + Server.SELECT_ADVANCEMENT_TAB, Server.SERVER_DATA, Server.SET_ACTION_BAR_TEXT, Server.SET_BORDER_CENTER, + Server.SET_BORDER_LERP_SIZE, Server.SET_BORDER_SIZE, Server.SET_BORDER_WARNING_DELAY, + Server.SET_BORDER_WARNING_DISTANCE, Server.CAMERA, Server.HELD_ITEM_SLOT, Server.VIEW_CENTRE, + Server.VIEW_DISTANCE, Server.SPAWN_POSITION, Server.SCOREBOARD_DISPLAY_OBJECTIVE, + Server.ENTITY_METADATA, Server.ATTACH_ENTITY, Server.ENTITY_VELOCITY, Server.ENTITY_EQUIPMENT, + Server.EXPERIENCE, Server.UPDATE_HEALTH, Server.SCOREBOARD_OBJECTIVE, Server.MOUNT, + Server.SCOREBOARD_TEAM, Server.SCOREBOARD_SCORE, Server.SIMULATION_DISTANCE, Server.SET_SUBTITLE_TEXT, + Server.UPDATE_TIME, Server.SET_TITLE_TEXT, Server.SET_TITLE_ANIMATION, Server.ENTITY_SOUND, + Server.NAMED_SOUND_EFFECT, Server.START_CONFIGURATION, Server.STOP_SOUND, Server.COOKIE_STORE, + Server.SYSTEM_CHAT, Server.PLAYER_LIST_HEADER_FOOTER, Server.NBT_QUERY, Server.COLLECT, + Server.ENTITY_TELEPORT, Server.TICKING_STATE, Server.TICKING_STEP, Server.TRANSFERT, + Server.ADVANCEMENTS, Server.UPDATE_ATTRIBUTES, Server.ENTITY_EFFECT, Server.RECIPE_UPDATE, Server.TAGS, + Server.PROJECTILE_POWER)) { + playOut.put(i++, type); + } + i = 0; + for (EntityType types : Arrays.asList(EntityType.ALLAY, EntityType.AREA_EFFECT_CLOUD, EntityType.ARMOR_STAND, + EntityType.ARROW, EntityType.AXOLOTL, EntityType.BAT, EntityType.BEE, EntityType.BLAZE, EntityType.BOAT, + EntityType.CHEST_BOAT, EntityType.CAT, EntityType.CAVE_SPIDER, EntityType.CHICKEN, EntityType.COD, + EntityType.COW, EntityType.CREEPER, EntityType.DOLPHIN, EntityType.DONKEY, EntityType.DRAGON_FIREBALL, + EntityType.DROWNED, EntityType.ELDER_GUARDIAN, EntityType.ENDER_CRYSTAL, EntityType.ENDER_DRAGON, + EntityType.ENDERMAN, EntityType.ENDERMITE, EntityType.EVOKER, EntityType.EVOKER_FANGS, + EntityType.EXPERIENCE_ORB, EntityType.EYE_OF_ENDER, EntityType.FALLING_BLOCK, EntityType.FIREWORK, + EntityType.FOX, EntityType.FROG, EntityType.GHAST, EntityType.GIANT, EntityType.GLOW_ITEM_FRAME, + EntityType.GLOW_SQUID, EntityType.GOAT, EntityType.GUARDIAN, EntityType.HOGLIN, EntityType.HORSE, + EntityType.HUSK, EntityType.ILLUSIONER, EntityType.IRON_GOLEM, EntityType.DROPPED_ITEM, + EntityType.ITEM_FRAME, EntityType.FIREBALL, EntityType.LEASH_KNOT, EntityType.LIGHTNING, + EntityType.LLAMA, EntityType.LLAMA_SPIT, EntityType.MAGMA_CUBE, EntityType.MARKER, EntityType.MINECART, + EntityType.MINECART_CHEST, EntityType.MINECART_COMMAND_BLOCK, EntityType.MINECART_FURNACE, + EntityType.MINECART_HOPPER, EntityType.MINECART_MOB_SPAWNER, EntityType.MINECART_TNT, EntityType.MULE, + EntityType.MOOSHROOM, EntityType.OCELOT, EntityType.PAINTING, EntityType.PANDA, EntityType.PARROT, + EntityType.PHANTOM, EntityType.PIG, EntityType.PIGLIN, EntityType.PIGLIN_BRUTE, EntityType.PILLAGER, + EntityType.POLAR_BEAR, EntityType.PRIMED_TNT, EntityType.PUFFER_FISH, EntityType.RABBIT, + EntityType.RAVAGER, EntityType.SALMON, EntityType.SHEEP, EntityType.SHULKER, EntityType.SHULKER_BULLET, + EntityType.SILVERFISH, EntityType.SKELETON, EntityType.SKELETON_HORSE, EntityType.SLIME, + EntityType.SMALL_FIREBALL, EntityType.SNOW_GOLEM, EntityType.SNOW_BALL, EntityType.SPECTRAL_ARROW, + EntityType.SPIDER, EntityType.SQUID, EntityType.STRAY, EntityType.STRIDER, EntityType.TADPOLE, + EntityType.EGG, EntityType.ENDER_PEARL, EntityType.EXP_BOTTLE, EntityType.SPLASH_POTION, + EntityType.TRIDENT, EntityType.LLAMA_TRADER, EntityType.TROPICAL_FISH, EntityType.TURTLE, + EntityType.VEX, EntityType.VILLAGER, EntityType.VINDICATOR, EntityType.WANDERING_TRADER, + EntityType.WARDEN, EntityType.WITCH, EntityType.WITHER, EntityType.WITHER_SKELETON, + EntityType.WITHER_SKULL, EntityType.WOLF, EntityType.ZOGLIN, EntityType.ZOMBIE, + EntityType.ZOMBIE_VILLAGER, EntityType.PIG_ZOMBIE, EntityType.PLAYER, EntityType.FISHING_HOOK)) { + entityTypes.put(i++, types); + } + loadPostFlattening("/versions/v1_19_3/"); + + log(); + } +} diff --git a/common/src/com/elikill58/negativity/api/packets/packet/NPacketUnset.java b/common/src/com/elikill58/negativity/api/packets/packet/NPacketUnset.java index 9c6599f5f..a913fd042 100644 --- a/common/src/com/elikill58/negativity/api/packets/packet/NPacketUnset.java +++ b/common/src/com/elikill58/negativity/api/packets/packet/NPacketUnset.java @@ -12,7 +12,8 @@ default void read(PacketSerializer serializer, Version version) { } void setPacketName(String name); - + + @Override String getPacketName(); void setPacketTypeCible(PacketType type); diff --git a/common/src/com/elikill58/negativity/api/ray/block/BlockRayBuilder.java b/common/src/com/elikill58/negativity/api/ray/block/BlockRayBuilder.java index 707bd51a4..3895c3748 100644 --- a/common/src/com/elikill58/negativity/api/ray/block/BlockRayBuilder.java +++ b/common/src/com/elikill58/negativity/api/ray/block/BlockRayBuilder.java @@ -111,6 +111,7 @@ public BlockRayBuilder neededPositions(List vec) { * * @return the block ray */ + @Override public BlockRay build() { if(search == null || !search.isValid(this)) throw new IllegalArgumentException("Please check what you set as param before running ray."); diff --git a/common/src/com/elikill58/negativity/api/ray/entity/EntityRayBuilder.java b/common/src/com/elikill58/negativity/api/ray/entity/EntityRayBuilder.java index da302d23b..f71c1b35b 100644 --- a/common/src/com/elikill58/negativity/api/ray/entity/EntityRayBuilder.java +++ b/common/src/com/elikill58/negativity/api/ray/entity/EntityRayBuilder.java @@ -96,6 +96,7 @@ public EntityRayBuilder searched(Entity searched) { * * @return the block ray */ + @Override public EntityRay build() { return new EntityRay(w, position, vector, maxDistance, onlyPlayer, bypassEntities, searched); } diff --git a/common/src/com/elikill58/negativity/common/protocols/GroundSpoof.java b/common/src/com/elikill58/negativity/common/protocols/GroundSpoof.java index 266ca4743..06d2a5616 100644 --- a/common/src/com/elikill58/negativity/common/protocols/GroundSpoof.java +++ b/common/src/com/elikill58/negativity/common/protocols/GroundSpoof.java @@ -44,7 +44,7 @@ public void onGroundSpoof(PlayerMoveEvent e, NegativityPlayer np, GroundSpoofDat return; } double diffY = e.getTo().getY() - e.getFrom().getY(); - if (diffY <= p.getWalkSpeed()) + if (diffY <= p.getWalkSpeed() || diffY == 0.1647732818260721) // specific value for MC 1.20.5 return; if (data.wasAlert) Negativity.alertMod(ReportType.WARNING, p, this, getReliability(p), "check-blocks-under", diff --git a/common/src/com/elikill58/negativity/universal/Version.java b/common/src/com/elikill58/negativity/universal/Version.java index 782474ec4..200e8a4a8 100644 --- a/common/src/com/elikill58/negativity/universal/Version.java +++ b/common/src/com/elikill58/negativity/universal/Version.java @@ -22,6 +22,7 @@ import com.elikill58.negativity.api.packets.nms.versions.Version1_20; import com.elikill58.negativity.api.packets.nms.versions.Version1_20_2; import com.elikill58.negativity.api.packets.nms.versions.Version1_20_4; +import com.elikill58.negativity.api.packets.nms.versions.Version1_20_5; import com.elikill58.negativity.api.packets.nms.versions.Version1_8; import com.elikill58.negativity.api.packets.nms.versions.Version1_9; import com.elikill58.negativity.api.packets.nms.versions.VersionUnknown; @@ -48,7 +49,8 @@ public enum Version { V1_19_4("1.19.4", 19.4, Version1_19_4::new, 762), V1_20("1.20", 20, Version1_20::new, 763), V1_20_2("1.20.2", 20.2, Version1_20_2::new, 764), - V1_20_4("1.20.4", 20.4, Version1_20_4::new, 765, 999), + V1_20_4("1.20.4", 20.4, Version1_20_4::new, 765), + V1_20_5("1.20.5", 20.5, Version1_20_5::new, 766, 999), HIGHER("higher", 42, VersionUnknown::new, 1000); private final double power; diff --git a/fabric/build.gradle b/fabric/build.gradle index 3ae7fa13a..625fca13a 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,8 +1,8 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { - id 'fabric-loom' version '1.0.9' - id 'com.github.johnrengelman.shadow' + id 'fabric-loom' version '1.6-SNAPSHOT' + id 'io.github.goooler.shadow' } evaluationDependsOn(':common') diff --git a/fabric/gradle.properties b/fabric/gradle.properties index 95d06ad9e..d0433b55b 100644 --- a/fabric/gradle.properties +++ b/fabric/gradle.properties @@ -1,10 +1,8 @@ # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.19.2 -yarn_mappings=1.19.2+build.28 -loader_version=0.14.10 +minecraft_version=1.20 +yarn_mappings=1.20+build.1 +loader_version=0.15.11 -#Fabric api -fabric_version=0.66.0+1.19.2 - -org.gradle.jvmargs=-Xmx6G +# Fabric API +fabric_version=0.83.0+1.20 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 070cb702f..17655d0ef 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/minestom/build.gradle b/minestom/build.gradle index 946198332..61faad2a0 100644 --- a/minestom/build.gradle +++ b/minestom/build.gradle @@ -1,7 +1,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { - id 'com.github.johnrengelman.shadow' + id 'io.github.goooler.shadow' } evaluationDependsOn(':common') @@ -13,18 +13,17 @@ sourceSets { } } -java.toolchain.languageVersion = JavaLanguageVersion.of(17) +java.toolchain.languageVersion = JavaLanguageVersion.of(21) dependencies { api project(':common') - compileOnly 'com.github.Minestom:Minestom:954e8b3915' - compileOnly 'io.netty:netty-all:4.1.85.Final' + compileOnly 'com.github.Minestom:Minestom:19bb74e942' + // https://mvnrepository.com/artifact/dev.hollowcube/minestom-ce-extensions + compileOnly 'dev.hollowcube:minestom-ce-extensions:1.2.0' + + compileOnly 'io.netty:netty-all:4.1.110.Final' } -compileJava.javaCompiler.set( - javaToolchains.compilerFor { languageVersion = JavaLanguageVersion.of(17) } -) - processResources { inputs.property "version", project.version @@ -34,13 +33,12 @@ processResources { } tasks.withType(JavaCompile).configureEach { - // Minecraft 1.18 (1.18-pre2) upwards uses Java 17. - it.options.release = 17 + it.options.release = 21 } shadowJar { archiveBaseName.set('NegativityMinestom') - archiveAppendix.set('1.19.3') + archiveAppendix.set('1.20.4') archiveClassifier.set(null) mergeServiceFiles() diff --git a/minestom/src/com/elikill58/negativity/minestom/MinestomAdapter.java b/minestom/src/com/elikill58/negativity/minestom/MinestomAdapter.java index 24e06e3b6..6fcdff610 100644 --- a/minestom/src/com/elikill58/negativity/minestom/MinestomAdapter.java +++ b/minestom/src/com/elikill58/negativity/minestom/MinestomAdapter.java @@ -41,6 +41,7 @@ import com.elikill58.negativity.universal.translation.TranslationProviderFactory; import com.elikill58.negativity.universal.utils.UniversalUtils; +import net.hollowcube.minestom.extensions.ExtensionBootstrap; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; @@ -138,7 +139,7 @@ public List getOnlinePlayersUUID() { @Override public double[] getTPS() { - return new double[] {MinecraftServer.TICK_PER_SECOND}; + return new double[] { 20 }; } @Override @@ -193,12 +194,12 @@ public Inventory createInventory(String inventoryName, int size, NegativityHolde @Override public @Nullable Player getPlayer(String name) { - return MinestomEntityManager.getPlayer(MinecraftServer.getConnectionManager().getPlayer(name)); + return MinestomEntityManager.getPlayer(MinecraftServer.getConnectionManager().getOnlinePlayerByUsername(name)); } @Override public @Nullable Player getPlayer(UUID uuid) { - return MinestomEntityManager.getPlayer(MinecraftServer.getConnectionManager().getPlayer(uuid)); + return MinestomEntityManager.getPlayer(MinecraftServer.getConnectionManager().getOnlinePlayerByUuid(uuid)); } @Override @@ -215,12 +216,12 @@ public Inventory createInventory(String inventoryName, int size, NegativityHolde @Override public boolean hasPlugin(String name) { - return MinecraftServer.getExtensionManager().hasExtension(name); + return ExtensionBootstrap.getExtensionManager().hasExtension(name); } @Override public ExternalPlugin getPlugin(String name) { - Extension e = MinecraftServer.getExtensionManager().getExtension(name); + Extension e = ExtensionBootstrap.getExtensionManager().getExtension(name); return e == null ? null : new MinestomExternalPlugin(e); } @@ -264,12 +265,12 @@ public VersionAdapter getVersionAdapter() { @Override public List getAllPlugins() { - return MinecraftServer.getExtensionManager().getExtensions().stream().map(Extension::getOrigin).map(DiscoveredExtension::getName).collect(Collectors.toList()); + return ExtensionBootstrap.getExtensionManager().getExtensions().stream().map(Extension::getOrigin).map(DiscoveredExtension::getName).collect(Collectors.toList()); } @Override public World getServerWorld(Player p) { - Instance i = MinecraftServer.getConnectionManager().getPlayer(p.getUniqueId()).getInstance(); + Instance i = MinecraftServer.getConnectionManager().getOnlinePlayerByUuid(p.getUniqueId()).getInstance(); return World.getWorld(i.getUniqueId().toString(), (a) -> new MinestomWorld(i)); } } diff --git a/minestom/src/com/elikill58/negativity/minestom/MinestomNegativity.java b/minestom/src/com/elikill58/negativity/minestom/MinestomNegativity.java index aef4d8e3e..f59e05009 100644 --- a/minestom/src/com/elikill58/negativity/minestom/MinestomNegativity.java +++ b/minestom/src/com/elikill58/negativity/minestom/MinestomNegativity.java @@ -2,6 +2,7 @@ import java.io.File; import java.io.InputStream; +import java.net.URI; import java.net.URL; import java.nio.file.Files; import java.util.ArrayList; @@ -129,7 +130,7 @@ private void loadNetty() { String url = "https://repo1.maven.org/maven2/io/netty/" + requiredJarNames + "/" + nettyVersion + "/" + fileName; try { - try (InputStream in = new URL(url).openStream()) { + try (InputStream in = new URI(url).toURL().openStream()) { File jarFile = new File(netty, fileName); Files.copy(in, jarFile.toPath()); getLogger().info("[Negativity] Jar " + fileName + " downloaded."); diff --git a/minestom/src/com/elikill58/negativity/minestom/MinestomScheduler.java b/minestom/src/com/elikill58/negativity/minestom/MinestomScheduler.java index 4b4cc04ff..2cd996b22 100644 --- a/minestom/src/com/elikill58/negativity/minestom/MinestomScheduler.java +++ b/minestom/src/com/elikill58/negativity/minestom/MinestomScheduler.java @@ -30,22 +30,22 @@ public void runRepeating(Consumer task, int delayTicks, int inter @Override public ScheduledTask runRepeating(Runnable task, int delayTicks, int intervalTicks) { - return new TaskWrapper(sh.scheduleTask(task, TaskSchedule.tick(delayTicks), TaskSchedule.tick(intervalTicks), ExecutionType.SYNC)); + return new TaskWrapper(sh.scheduleTask(task, TaskSchedule.tick(delayTicks), TaskSchedule.tick(intervalTicks), ExecutionType.TICK_START)); } @Override public ScheduledTask runRepeating(Runnable task, int intervalTicks, @Nullable String name) { - return new TaskWrapper(sh.scheduleTask(task, TaskSchedule.tick(intervalTicks), TaskSchedule.tick(intervalTicks), ExecutionType.SYNC)); + return new TaskWrapper(sh.scheduleTask(task, TaskSchedule.tick(intervalTicks), TaskSchedule.tick(intervalTicks), ExecutionType.TICK_START)); } @Override public ScheduledTask runRepeatingAsync(Runnable task, Duration delay, Duration interval, @Nullable String name) { - return new TaskWrapper(sh.scheduleTask(task, TaskSchedule.duration(delay), TaskSchedule.duration(interval), ExecutionType.ASYNC)); + return new TaskWrapper(sh.scheduleTask(task, TaskSchedule.duration(delay), TaskSchedule.duration(interval), ExecutionType.TICK_END)); } @Override public ScheduledTask runDelayed(Runnable task, int delayTicks) { - return new TaskWrapper(sh.scheduleTask(task, TaskSchedule.tick(delayTicks), TaskSchedule.stop(), ExecutionType.ASYNC)); + return new TaskWrapper(sh.scheduleTask(task, TaskSchedule.tick(delayTicks), TaskSchedule.stop(), ExecutionType.TICK_END)); } private static class TaskWrapper implements ScheduledTask { diff --git a/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomArrow.java b/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomArrow.java index 3500fb2d9..7f06c5cb8 100644 --- a/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomArrow.java +++ b/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomArrow.java @@ -4,7 +4,7 @@ import com.elikill58.negativity.api.entity.Entity; import com.elikill58.negativity.api.entity.EntityType; -import net.minestom.server.entity.metadata.arrow.ArrowMeta; +import net.minestom.server.entity.metadata.projectile.ArrowMeta; public class MinestomArrow extends MinestomEntity implements Arrow { diff --git a/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomOfflinePlayer.java b/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomOfflinePlayer.java index 7d2368cf2..9a576509e 100644 --- a/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomOfflinePlayer.java +++ b/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomOfflinePlayer.java @@ -27,7 +27,7 @@ public UUID getUniqueId() { @Override public boolean isOnline() { - return uuid != null && MinecraftServer.getConnectionManager().getPlayer(uuid) != null; + return uuid != null && MinecraftServer.getConnectionManager().getOnlinePlayerByUuid(uuid) != null; } @Override @@ -43,7 +43,7 @@ public boolean isOp() { @Override public String getName() { ConnectionManager cm = MinecraftServer.getConnectionManager(); - return name == null ? (uuid == null ? "??" : uuid.toString()) : (cm.getPlayer(uuid) == null ? uuid.toString() : cm.getPlayer(uuid).getUsername()); + return name == null ? (uuid == null ? "??" : uuid.toString()) : (cm.getOnlinePlayerByUuid(uuid) == null ? uuid.toString() : cm.getOnlinePlayerByUuid(uuid).getUsername()); } @Override diff --git a/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomPlayer.java b/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomPlayer.java index 5c9b6aa22..e8da08c9b 100644 --- a/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomPlayer.java +++ b/minestom/src/com/elikill58/negativity/minestom/impl/entity/MinestomPlayer.java @@ -93,7 +93,7 @@ public void setHealth(double health) { @Override public float getFallDistance() { - return (float) entity.getGravityAcceleration(); + return (float) entity.getAerodynamics().gravity(); } @Override @@ -108,7 +108,7 @@ public void setGameMode(GameMode gameMode) { @Override public void damage(double amount) { - entity.damage(DamageType.VOID, (float) amount); + entity.damage(DamageType.GENERIC, (float) amount); } @Override @@ -200,19 +200,19 @@ public double getEyeHeight() { @Override public boolean hasPotionEffect(PotionEffectType type) { - return entity.getActiveEffects().stream().filter(p -> p.getPotion().effect().key().asString().equalsIgnoreCase(type.getId())).count() > 0; + return entity.getActiveEffects().stream().filter(p -> p.potion().effect().key().asString().equalsIgnoreCase(type.getId())).count() > 0; } @Override public List getActivePotionEffect() { - return entity.getActiveEffects().stream().map(effect -> new PotionEffect(PotionEffectType.forId(effect.getPotion().effect().key().asString()), effect.getPotion().duration(), effect.getPotion().amplifier())).collect(Collectors.toList()); + return entity.getActiveEffects().stream().map(effect -> new PotionEffect(PotionEffectType.forId(effect.potion().effect().key().asString()), effect.potion().duration(), effect.potion().amplifier())).collect(Collectors.toList()); } @Override public Optional getPotionEffect(PotionEffectType type) { for(TimedPotion effect : entity.getActiveEffects()) { - if(effect.getPotion().effect().key().asString().equalsIgnoreCase(type.getId())) - return Optional.of(new PotionEffect(PotionEffectType.forId(effect.getPotion().effect().key().asString()), effect.getPotion().duration(), effect.getPotion().amplifier())); + if(effect.potion().effect().key().asString().equalsIgnoreCase(type.getId())) + return Optional.of(new PotionEffect(PotionEffectType.forId(effect.potion().effect().key().asString()), effect.potion().duration(), effect.potion().amplifier())); } return Optional.empty(); } diff --git a/minestom/src/com/elikill58/negativity/minestom/impl/inventory/MinestomInventory.java b/minestom/src/com/elikill58/negativity/minestom/impl/inventory/MinestomInventory.java index a5add5941..52e6e1050 100644 --- a/minestom/src/com/elikill58/negativity/minestom/impl/inventory/MinestomInventory.java +++ b/minestom/src/com/elikill58/negativity/minestom/impl/inventory/MinestomInventory.java @@ -74,6 +74,7 @@ public InventoryType getType() { return InventoryType.SMOKER; case STONE_CUTTER: return InventoryType.STONECUTTER; + case CRAFTER_3X3: case WINDOW_3X3: return InventoryType.PLAYER; } diff --git a/minestom/src/com/elikill58/negativity/minestom/listeners/PacketListeners.java b/minestom/src/com/elikill58/negativity/minestom/listeners/PacketListeners.java index 499aa6805..36dfca417 100644 --- a/minestom/src/com/elikill58/negativity/minestom/listeners/PacketListeners.java +++ b/minestom/src/com/elikill58/negativity/minestom/listeners/PacketListeners.java @@ -19,6 +19,7 @@ import net.minestom.server.event.EventNode; import net.minestom.server.event.player.PlayerPacketEvent; import net.minestom.server.event.player.PlayerPacketOutEvent; +import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.client.ClientPacket; import net.minestom.server.network.packet.server.ServerPacket; @@ -81,7 +82,7 @@ public void onPacket(PlayerPacketEvent e) { public void onPacket(PlayerPacketOutEvent e) { ServerPacket sp = e.getPacket(); Player p = MinestomEntityManager.getPlayer(e.getEntity()); - NPacket packet = getPacketFromWriter(p, sp, sp.getId(), PacketDirection.SERVER_TO_CLIENT); + NPacket packet = getPacketFromWriter(p, sp, sp.getId(ConnectionState.PLAY), PacketDirection.SERVER_TO_CLIENT); if(packet == null) { return; } diff --git a/minestom/src/com/elikill58/negativity/minestom/nms/MinestomPlayPackets.java b/minestom/src/com/elikill58/negativity/minestom/nms/MinestomPlayPackets.java index b1f040d4d..ab3a7897b 100644 --- a/minestom/src/com/elikill58/negativity/minestom/nms/MinestomPlayPackets.java +++ b/minestom/src/com/elikill58/negativity/minestom/nms/MinestomPlayPackets.java @@ -3,66 +3,80 @@ import java.util.HashMap; import net.minestom.server.network.packet.client.ClientPacket; +import net.minestom.server.network.packet.client.common.ClientKeepAlivePacket; +import net.minestom.server.network.packet.client.common.ClientPingRequestPacket; +import net.minestom.server.network.packet.client.common.ClientPluginMessagePacket; +import net.minestom.server.network.packet.client.common.ClientPongPacket; +import net.minestom.server.network.packet.client.common.ClientResourcePackStatusPacket; +import net.minestom.server.network.packet.client.common.ClientSettingsPacket; import net.minestom.server.network.packet.client.play.*; public class MinestomPlayPackets { private static HashMap, Integer> idPerPacket = new HashMap<>(); - + private static int nextId = 0; + private static int nextId() { + return nextId++; + } + static { // same as https://github.com/Minestom/Minestom/blob/master/src/main/java/net/minestom/server/network/packet/client/ClientPacketsHandler.java - register(0x00, ClientTeleportConfirmPacket.class); - register(0x01, ClientQueryBlockNbtPacket.class); - // 0x02 difficulty packet - register(0x03, ClientChatAckPacket.class); - register(0x04, ClientCommandChatPacket.class); - register(0x05, ClientChatMessagePacket.class); - register(0x06, ClientStatusPacket.class); - register(0x07, ClientSettingsPacket.class); - register(0x08, ClientTabCompletePacket.class); - register(0x09, ClientClickWindowButtonPacket.class); - register(0x0A, ClientClickWindowPacket.class); - register(0x0B, ClientCloseWindowPacket.class); - register(0x0C, ClientPluginMessagePacket.class); - register(0x0D, ClientEditBookPacket.class); - register(0x0E, ClientQueryEntityNbtPacket.class); - register(0x0F, ClientInteractEntityPacket.class); - register(0x10, ClientGenerateStructurePacket.class); - register(0x11, ClientKeepAlivePacket.class); - // 0x12 packet not used server-side - register(0x13, ClientPlayerPositionPacket.class); - register(0x14, ClientPlayerPositionAndRotationPacket.class); - register(0x15, ClientPlayerRotationPacket.class); - register(0x16, ClientPlayerPacket.class); - register(0x17, ClientVehicleMovePacket.class); - register(0x18, ClientSteerBoatPacket.class); - register(0x19, ClientPickItemPacket.class); - register(0x1A, ClientCraftRecipeRequest.class); - register(0x1B, ClientPlayerAbilitiesPacket.class); - register(0x1C, ClientPlayerDiggingPacket.class); - register(0x1D, ClientEntityActionPacket.class); - register(0x1E, ClientSteerVehiclePacket.class); - register(0x1F, ClientPongPacket.class); - register(0x20, ClientChatSessionUpdatePacket.class); - register(0x21, ClientSetRecipeBookStatePacket.class); - register(0x22, ClientSetDisplayedRecipePacket.class); - register(0x23, ClientNameItemPacket.class); - register(0x24, ClientResourcePackStatusPacket.class); - register(0x25, ClientAdvancementTabPacket.class); - register(0x26, ClientSelectTradePacket.class); - register(0x27, ClientSetBeaconEffectPacket.class); - register(0x28, ClientHeldItemChangePacket.class); - register(0x29, ClientUpdateCommandBlockPacket.class); - register(0x2A, ClientUpdateCommandBlockMinecartPacket.class); - register(0x2B, ClientCreativeInventoryActionPacket.class); - // 0x2B Update Jigsaw Block - register(0x2D, ClientUpdateStructureBlockPacket.class); - register(0x2E, ClientUpdateSignPacket.class); - register(0x2F, ClientAnimationPacket.class); - register(0x30, ClientSpectatePacket.class); - register(0x31, ClientPlayerBlockPlacementPacket.class); - register(0x32, ClientUseItemPacket.class); + register(nextId(), ClientTeleportConfirmPacket.class); + register(nextId(), ClientQueryBlockNbtPacket.class); + nextId(); // difficulty packet + register(nextId(), ClientChatAckPacket.class); + register(nextId(), ClientCommandChatPacket.class); + register(nextId(), ClientChatMessagePacket.class); + register(nextId(), ClientChatSessionUpdatePacket.class); + register(nextId(), ClientChunkBatchReceivedPacket.class); + register(nextId(), ClientStatusPacket.class); + register(nextId(), ClientSettingsPacket.class); + register(nextId(), ClientTabCompletePacket.class); + register(nextId(), ClientConfigurationAckPacket.class); + register(nextId(), ClientClickWindowButtonPacket.class); + register(nextId(), ClientClickWindowPacket.class); + register(nextId(), ClientCloseWindowPacket.class); + register(nextId(), ClientWindowSlotStatePacket.class); + register(nextId(), ClientPluginMessagePacket.class); + register(nextId(), ClientEditBookPacket.class); + register(nextId(), ClientQueryEntityNbtPacket.class); + register(nextId(), ClientInteractEntityPacket.class); + register(nextId(), ClientGenerateStructurePacket.class); + register(nextId(), ClientKeepAlivePacket.class); + nextId(); // lock difficulty + register(nextId(), ClientPlayerPositionPacket.class); + register(nextId(), ClientPlayerPositionAndRotationPacket.class); + register(nextId(), ClientPlayerRotationPacket.class); + register(nextId(), ClientPlayerPacket.class); + register(nextId(), ClientVehicleMovePacket.class); + register(nextId(), ClientSteerBoatPacket.class); + register(nextId(), ClientPickItemPacket.class); + register(nextId(), ClientPingRequestPacket.class); + register(nextId(), ClientCraftRecipeRequest.class); + register(nextId(), ClientPlayerAbilitiesPacket.class); + register(nextId(), ClientPlayerDiggingPacket.class); + register(nextId(), ClientEntityActionPacket.class); + register(nextId(), ClientSteerVehiclePacket.class); + register(nextId(), ClientPongPacket.class); + register(nextId(), ClientSetRecipeBookStatePacket.class); + register(nextId(), ClientSetDisplayedRecipePacket.class); + register(nextId(), ClientNameItemPacket.class); + register(nextId(), ClientResourcePackStatusPacket.class); + register(nextId(), ClientAdvancementTabPacket.class); + register(nextId(), ClientSelectTradePacket.class); + register(nextId(), ClientSetBeaconEffectPacket.class); + register(nextId(), ClientHeldItemChangePacket.class); + register(nextId(), ClientUpdateCommandBlockPacket.class); + register(nextId(), ClientUpdateCommandBlockMinecartPacket.class); + register(nextId(), ClientCreativeInventoryActionPacket.class); + nextId(); // Update Jigsaw Block + register(nextId(), ClientUpdateStructureBlockPacket.class); + register(nextId(), ClientUpdateSignPacket.class); + register(nextId(), ClientAnimationPacket.class); + register(nextId(), ClientSpectatePacket.class); + register(nextId(), ClientPlayerBlockPlacementPacket.class); + register(nextId(), ClientUseItemPacket.class); } private static void register(int id, Class clazz) { diff --git a/spigot/build.gradle b/spigot/build.gradle index 6e81c1ee2..292ccd3b8 100644 --- a/spigot/build.gradle +++ b/spigot/build.gradle @@ -1,7 +1,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { - id 'com.github.johnrengelman.shadow' + id 'io.github.goooler.shadow' } evaluationDependsOn(':common') diff --git a/spigot/integrations/essentials/build.gradle b/spigot/integrations/essentials/build.gradle index b176c40bc..70330b709 100644 --- a/spigot/integrations/essentials/build.gradle +++ b/spigot/integrations/essentials/build.gradle @@ -19,7 +19,7 @@ repositories { } dependencies { - compileOnly 'net.ess3:EssentialsX:2.17.2' + compileOnly 'net.ess3:EssentialsX:2.18.2' api(project(':spigot')) compileOnly(project(path: ':spigot', configuration: 'spigot')) } diff --git a/spigot/integrations/gadgetsmenu/build.gradle b/spigot/integrations/gadgetsmenu/build.gradle index 27c789bc2..bb88bb46a 100644 --- a/spigot/integrations/gadgetsmenu/build.gradle +++ b/spigot/integrations/gadgetsmenu/build.gradle @@ -8,7 +8,7 @@ sourceSets { } dependencies { - compileOnly 'com.yapzhenyie:GadgetsMenu:4.3.29' + compileOnly 'com.yapzhenyie:GadgetsMenu:4.13.1' api(project(':spigot')) compileOnly(project(path: ':spigot', configuration: 'spigot')) } diff --git a/spigot/src/com/elikill58/negativity/spigot/nms/SpigotVersionAdapter.java b/spigot/src/com/elikill58/negativity/spigot/nms/SpigotVersionAdapter.java index 5fafa551c..8bf694744 100644 --- a/spigot/src/com/elikill58/negativity/spigot/nms/SpigotVersionAdapter.java +++ b/spigot/src/com/elikill58/negativity/spigot/nms/SpigotVersionAdapter.java @@ -33,7 +33,7 @@ public abstract class SpigotVersionAdapter extends VersionAdapter { protected Method getPlayerHandle, getEntityLookup, getBukkitEntity; - protected Field recentTpsField, pingField, tpsField, playerConnectionField; + protected Field recentTpsField, tpsField, playerConnectionField; protected Field minX, minY, minZ, maxX, maxY, maxZ, entityLookup; protected Object dedicatedServer; @@ -49,23 +49,15 @@ public SpigotVersionAdapter(int protocolVersion) { getPlayerHandle = PacketUtils.getObcClass("entity.CraftPlayer").getDeclaredMethod("getHandle"); - Class entityPlayerClass = PacketUtils.getNmsClass("EntityPlayer", "server.level."); - if (version.isNewerOrEquals(Version.V1_20_2)) { - Class ServerCommonPacketListenerImplClass = PacketUtils.getNmsClass("ServerCommonPacketListenerImpl", "server.network."); - pingField = ServerCommonPacketListenerImplClass.getDeclaredField("i"); - pingField.setAccessible(true); - playerConnectionField = entityPlayerClass.getDeclaredField("c"); - } else if (version.isNewerOrEquals(Version.V1_20)) { - pingField = entityPlayerClass.getDeclaredField("f"); - playerConnectionField = entityPlayerClass.getDeclaredField("c"); + Class entityPlayerClass = PacketUtils.getNmsClass(SubPlatform.getSubPlatform().equals(SubPlatform.FOLIA) ? "ServerPlayer" : "EntityPlayer", "server.level."); + if (version.isNewerOrEquals(Version.V1_20)) { + playerConnectionField = entityPlayerClass.getDeclaredField(SubPlatform.getSubPlatform().equals(SubPlatform.FOLIA) ? "connection" : "c"); } else if (version.isNewerOrEquals(Version.V1_17)) { - pingField = entityPlayerClass.getDeclaredField("e"); playerConnectionField = entityPlayerClass.getDeclaredField("b"); } else { - pingField = entityPlayerClass.getDeclaredField("ping"); playerConnectionField = entityPlayerClass.getDeclaredField("playerConnection"); } - Class bbClass = PacketUtils.getNmsClass("AxisAlignedBB", "world.phys."); + Class bbClass = PacketUtils.getNmsClass(SubPlatform.getSubPlatform().equals(SubPlatform.FOLIA) ? "AABB" : "AxisAlignedBB", "world.phys."); if (version.isNewerOrEquals(Version.V1_13) && hasMinField(bbClass)) { minX = bbClass.getDeclaredField("minX"); @@ -87,7 +79,7 @@ public SpigotVersionAdapter(int protocolVersion) { this.getBukkitEntity = PacketUtils.getNmsClass("Entity", "world.entity.").getDeclaredMethod("getBukkitEntity"); if (version.isNewerOrEquals(Version.V1_17)) { - Class worldServer = PacketUtils.getNmsClass("WorldServer", "server.level."); + Class worldServer = PacketUtils.getNmsClass(SubPlatform.getSubPlatform().equals(SubPlatform.FOLIA) ? "ServerLevel" : "WorldServer", "server.level."); try { getEntityLookup = worldServer.getDeclaredMethod("getEntityLookup"); @@ -110,11 +102,20 @@ private boolean hasMinField(Class bbClass) { public double getAverageTps() { try { - long[] array = (long[]) tpsField.get(dedicatedServer); - long l = 0L; - for (long m : array) - l += m; - return l / array.length; + Object tps = tpsField.get(dedicatedServer); + if(tps instanceof long[]) { + long[] array = (long[]) tps; + long l = 0L; + for (long m : array) + l += m; + return l / array.length; + } else { + double[] array = (double[]) tps; + double l = 0L; + for (double m : array) + l += m; + return l / array.length; + } } catch (Exception e) { e.printStackTrace(); return 0; @@ -129,10 +130,10 @@ public List getOnlinePlayers() { public int getPlayerPing(Player player) { try { - if (version.isNewerOrEquals(Version.V1_20_2)) { - return pingField.getInt(getPlayerConnection(player)); + if (version.isNewerOrEquals(Version.V1_17)) { + return (int) player.getClass().getDeclaredMethod("getPing").invoke(player); } else { - return pingField.getInt(getPlayerHandle.invoke(player)); + return PacketUtils.getNmsClass("EntityPlayer", "server.level.").getDeclaredField("ping").getInt(getPlayerHandle.invoke(player)); } } catch (Exception e) { e.printStackTrace(); @@ -168,7 +169,7 @@ public Object getPlayerConnection(Player p) { public Object getNetworkManager(Player p) { try { Object playerConnection = getPlayerConnection(p); - return new PacketContent(playerConnection).getSpecificModifier(PacketUtils.getNmsClass("NetworkManager", "network.")).readSafely(0); + return new PacketContent(playerConnection).getSpecificModifier(PacketUtils.getNmsClass(SubPlatform.getSubPlatform().equals(SubPlatform.FOLIA) ? "Connection" : "NetworkManager", "network.")).readSafely(0); } catch (Exception e) { e.printStackTrace(); return null; @@ -194,6 +195,7 @@ public Channel getChannel(Player p) { } } + @Override public AbstractChannel getPlayerChannel(Player p) { return new NettyChannel(getChannel(p)); } @@ -219,7 +221,7 @@ public List getFuturChannel() { public BoundingBox getBoundingBox(Entity et) { try { Object ep = PacketUtils.getNMSEntity(et); - Object bb = ReflectionUtils.getFirstWith(ep, PacketUtils.getNmsClass("Entity", "world.entity."), PacketUtils.getNmsClass("AxisAlignedBB", "world.phys.")); + Object bb = ReflectionUtils.getFirstWith(ep, PacketUtils.getNmsClass("Entity", "world.entity."), PacketUtils.getNmsClass(SubPlatform.getSubPlatform().equals(SubPlatform.FOLIA) ? "AABB" : "AxisAlignedBB", "world.phys.")); double minX = this.minX.getDouble(bb); double minY = this.minY.getDouble(bb); @@ -320,6 +322,10 @@ public static SpigotVersionAdapter getVersionAdapter() { return instance = new Spigot_1_20_R2(); case "v1_20_R3": return instance = new Spigot_1_20_R3(); + case "v1_20_R4": + return instance = new Spigot_1_20_R4(); + case "v1_21_R1": + return instance = new Spigot_1_21_R1(); default: return instance = new Spigot_UnknowVersion(VERSION); } diff --git a/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_20_R3.java b/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_20_R3.java index bf128e158..93fbd8016 100644 --- a/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_20_R3.java +++ b/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_20_R3.java @@ -1,5 +1,6 @@ package com.elikill58.negativity.spigot.nms; +import com.elikill58.negativity.spigot.SubPlatform; import com.elikill58.negativity.spigot.utils.PacketUtils; public class Spigot_1_20_R3 extends SpigotVersionAdapter { @@ -10,6 +11,6 @@ public Spigot_1_20_R3() { @Override public String getTpsFieldName() { - return "ac"; + return SubPlatform.getSubPlatform().equals(SubPlatform.FOLIA) ? "tickTimesNanos" : "ac"; } } diff --git a/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_20_R4.java b/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_20_R4.java new file mode 100644 index 000000000..7ead5fe43 --- /dev/null +++ b/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_20_R4.java @@ -0,0 +1,16 @@ +package com.elikill58.negativity.spigot.nms; + +import com.elikill58.negativity.spigot.SubPlatform; +import com.elikill58.negativity.spigot.utils.PacketUtils; + +public class Spigot_1_20_R4 extends SpigotVersionAdapter { + + public Spigot_1_20_R4() { + super(PacketUtils.getProtocolVersion()); + } + + @Override + public String getTpsFieldName() { + return SubPlatform.getSubPlatform().equals(SubPlatform.FOLIA) ? "tickTimesNanos" : "ab"; + } +} diff --git a/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_21_R1.java b/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_21_R1.java new file mode 100644 index 000000000..3065931d5 --- /dev/null +++ b/spigot/src/com/elikill58/negativity/spigot/nms/Spigot_1_21_R1.java @@ -0,0 +1,16 @@ +package com.elikill58.negativity.spigot.nms; + +import com.elikill58.negativity.spigot.SubPlatform; +import com.elikill58.negativity.spigot.utils.PacketUtils; + +public class Spigot_1_21_R1 extends SpigotVersionAdapter { + + public Spigot_1_21_R1() { + super(PacketUtils.getProtocolVersion()); + } + + @Override + public String getTpsFieldName() { + return SubPlatform.getSubPlatform().equals(SubPlatform.FOLIA) ? "tickTimesNanos" : "ab"; + } +} diff --git a/spigot/src/com/elikill58/negativity/spigot/utils/PacketUtils.java b/spigot/src/com/elikill58/negativity/spigot/utils/PacketUtils.java index b789970c9..2dbed7c90 100644 --- a/spigot/src/com/elikill58/negativity/spigot/utils/PacketUtils.java +++ b/spigot/src/com/elikill58/negativity/spigot/utils/PacketUtils.java @@ -175,8 +175,11 @@ public static Object getWorldServer(World w) { public static int getProtocolVersion() { try { Class sharedConstants = PacketUtils.getNmsClass("SharedConstants", ""); + try { // try get value directly + return (int) sharedConstants.getDeclaredField("RELEASE_NETWORK_PROTOCOL_VERSION").get(null); + } catch (Exception e) {} return (int) sharedConstants.getDeclaredMethod("c").invoke(null); - } catch (Exception e) {} // ignore because it's just an old version + } catch (Exception e) { e.printStackTrace(); } // ignore because it's just an old version try { Class serverClazz = getNmsClass("MinecraftServer", "server."); Object server = serverClazz.getDeclaredMethod("getServer").invoke(null); diff --git a/sponge/build.gradle b/sponge/build.gradle index 3e4ef60ad..484127388 100644 --- a/sponge/build.gradle +++ b/sponge/build.gradle @@ -4,7 +4,7 @@ import org.spongepowered.plugin.metadata.model.PluginDependency import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { - id 'com.github.johnrengelman.shadow' + id 'io.github.goooler.shadow' id 'org.spongepowered.gradle.plugin' version '2.0.2' id 'org.spongepowered.gradle.vanilla' version '0.2.1-SNAPSHOT' } diff --git a/sponge/src/com/elikill58/negativity/sponge/impl/entity/SpongeEntityManager.java b/sponge/src/com/elikill58/negativity/sponge/impl/entity/SpongeEntityManager.java index 3eac4c969..4320ae868 100644 --- a/sponge/src/com/elikill58/negativity/sponge/impl/entity/SpongeEntityManager.java +++ b/sponge/src/com/elikill58/negativity/sponge/impl/entity/SpongeEntityManager.java @@ -34,7 +34,6 @@ else if(e instanceof Potion) return new SpongeEntity<>(e); } - @SuppressWarnings({ "rawtypes" }) public static @Nullable CommandSender getExecutor(@Nullable Audience src) { if(src == null) return null; diff --git a/sponge7/build.gradle b/sponge7/build.gradle index d96715747..a2a2cf65f 100644 --- a/sponge7/build.gradle +++ b/sponge7/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'com.github.johnrengelman.shadow' + id 'io.github.goooler.shadow' } evaluationDependsOn(':common') diff --git a/velocity/build.gradle b/velocity/build.gradle index 33bc71f89..c62819bd8 100644 --- a/velocity/build.gradle +++ b/velocity/build.gradle @@ -1,7 +1,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { - id 'com.github.johnrengelman.shadow' + id 'io.github.goooler.shadow' } evaluationDependsOn(':common') @@ -22,7 +22,7 @@ repositories { dependencies { api project(':common') - compileOnly 'com.velocitypowered:velocity-api:3.0.0' + compileOnly 'com.velocitypowered:velocity-api:3.1.1' } processResources {