forked from SteamWar/SteamWar
Remove even more useless stuff
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
|
||||
package de.steamwar.core;
|
||||
|
||||
import lombok.experimental.UtilityClass;
|
||||
import net.minecraft.network.chat.MutableComponent;
|
||||
import net.minecraft.network.chat.contents.PlainTextContents;
|
||||
import net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket;
|
||||
@@ -26,9 +27,8 @@ import net.minecraft.network.syncher.SynchedEntityData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@UtilityClass
|
||||
public class ChatWrapper {
|
||||
public static final ChatWrapper impl = new ChatWrapper();
|
||||
|
||||
public Object stringToChatComponent(String text) {
|
||||
return MutableComponent.create(PlainTextContents.create(text));
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import io.netty.channel.ChannelFuture;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.network.ServerConnectionListener;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.CraftWorld;
|
||||
import org.eclipse.openj9.criu.CRIUSupport;
|
||||
import org.eclipse.openj9.criu.JVMCRIUException;
|
||||
import sun.misc.Signal;
|
||||
@@ -96,7 +97,9 @@ class CheckpointUtilsJ9 {
|
||||
private static void freezeInternal(Path path) throws Exception {
|
||||
Bukkit.getPluginManager().callEvent(new CRIUSleepEvent());
|
||||
|
||||
Bukkit.getWorlds().forEach(FlatteningWrapper.impl::syncSave);
|
||||
Bukkit.getWorlds().forEach(world -> {
|
||||
((CraftWorld) world).getHandle().save(null, true, false);
|
||||
});
|
||||
Statement.closeAll();
|
||||
|
||||
// Close socket
|
||||
|
||||
@@ -19,339 +19,14 @@
|
||||
|
||||
package de.steamwar.core;
|
||||
|
||||
import com.destroystokyo.paper.profile.PlayerProfile;
|
||||
import de.steamwar.Reflection;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.protocol.game.ClientboundSetObjectivePacket;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.Pose;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.craftbukkit.CraftWorld;
|
||||
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
import lombok.experimental.UtilityClass;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
@UtilityClass
|
||||
public class FlatteningWrapper {
|
||||
private FlatteningWrapper() {}
|
||||
|
||||
public static final FlatteningWrapper impl = new FlatteningWrapper();
|
||||
|
||||
private static final Map<String, Material> renamedLegacy = new HashMap<>();
|
||||
|
||||
static{
|
||||
renamedLegacy.put("WOOD", Material.OAK_WOOD);
|
||||
renamedLegacy.put("SAPLING", Material.OAK_SAPLING);
|
||||
renamedLegacy.put("STATIONARY_WATER", Material.WATER);
|
||||
renamedLegacy.put("STATIONARY_LAVA", Material.LAVA);
|
||||
renamedLegacy.put("LOG", Material.OAK_LOG);
|
||||
renamedLegacy.put("LEAVES", Material.OAK_LEAVES);
|
||||
renamedLegacy.put("BED_BLOCK", Material.RED_BED);
|
||||
renamedLegacy.put("BED", Material.RED_BED);
|
||||
renamedLegacy.put("PISTON_STICKY_BASE", Material.STICKY_PISTON);
|
||||
renamedLegacy.put("WEB", Material.COBWEB);
|
||||
renamedLegacy.put("LONG_GRASS", Material.TALL_GRASS);
|
||||
renamedLegacy.put("PISTON_BASE", Material.PISTON);
|
||||
renamedLegacy.put("PISTON_EXTENSION", Material.PISTON_HEAD);
|
||||
renamedLegacy.put("WOOL", Material.WHITE_WOOL);
|
||||
renamedLegacy.put("PISTON_MOVING_PIECE", Material.MOVING_PISTON);
|
||||
renamedLegacy.put("YELLOW_FLOWER", Material.DANDELION);
|
||||
renamedLegacy.put("RED_ROSE", Material.POPPY);
|
||||
renamedLegacy.put("DOUBLE_STEP", Material.SMOOTH_STONE);
|
||||
renamedLegacy.put("STEP", Material.SMOOTH_STONE_SLAB);
|
||||
renamedLegacy.put("MOB_SPAWNER", Material.SPAWNER);
|
||||
renamedLegacy.put("WOOD_STAIRS", Material.OAK_STAIRS);
|
||||
renamedLegacy.put("WORKBENCH", Material.CRAFTING_TABLE);
|
||||
renamedLegacy.put("CROPS", Material.WHEAT_SEEDS);
|
||||
renamedLegacy.put("SEEDS", Material.WHEAT_SEEDS);
|
||||
renamedLegacy.put("SOIL", Material.FARMLAND);
|
||||
renamedLegacy.put("BURNING_FURNACE", Material.FURNACE);
|
||||
renamedLegacy.put("SIGN_POST", Material.OAK_SIGN);
|
||||
renamedLegacy.put("SIGN", Material.OAK_SIGN);
|
||||
renamedLegacy.put("WOODEN_DOOR", Material.OAK_DOOR);
|
||||
renamedLegacy.put("WOOD_DOOR", Material.OAK_DOOR);
|
||||
renamedLegacy.put("RAILS", Material.RAIL);
|
||||
renamedLegacy.put("WALL_SIGN", Material.OAK_WALL_SIGN);
|
||||
renamedLegacy.put("STONE_PLATE", Material.STONE_PRESSURE_PLATE);
|
||||
renamedLegacy.put("WOOD_PLATE", Material.OAK_PRESSURE_PLATE);
|
||||
renamedLegacy.put("GLOWING_REDSTONE_ORE", Material.REDSTONE_ORE);
|
||||
renamedLegacy.put("REDSTONE_TORCH_OFF", Material.REDSTONE_TORCH);
|
||||
renamedLegacy.put("REDSTONE_TORCH_ON", Material.REDSTONE_TORCH);
|
||||
renamedLegacy.put("IRON_DOOR_BLOCK", Material.IRON_DOOR);
|
||||
renamedLegacy.put("SUGAR_CANE_BLOCK", Material.SUGAR_CANE);
|
||||
renamedLegacy.put("CAKE_BLOCK", Material.CAKE);
|
||||
renamedLegacy.put("MELON_BLOCK", Material.MELON);
|
||||
renamedLegacy.put("BEETROOT_BLOCK", Material.BEETROOT);
|
||||
renamedLegacy.put("FENCE", Material.OAK_FENCE);
|
||||
renamedLegacy.put("PORTAL", Material.NETHER_PORTAL);
|
||||
renamedLegacy.put("DIODE_BLOCK_OFF", Material.REPEATER);
|
||||
renamedLegacy.put("DIODE_BLOCK_ON", Material.REPEATER);
|
||||
renamedLegacy.put("DIODE", Material.REPEATER);
|
||||
renamedLegacy.put("STAINED_GLASS", Material.WHITE_STAINED_GLASS);
|
||||
renamedLegacy.put("TRAP_DOOR", Material.OAK_TRAPDOOR);
|
||||
renamedLegacy.put("MONSTER_EGGS", Material.SKELETON_SPAWN_EGG);
|
||||
renamedLegacy.put("MONSTER_EGG", Material.SKELETON_SPAWN_EGG);
|
||||
renamedLegacy.put("SMOOTH_BRICK", Material.STONE_BRICKS);
|
||||
renamedLegacy.put("HUGE_MUSHROOM_1", Material.MUSHROOM_STEM);
|
||||
renamedLegacy.put("HUGE_MUSHROOM_2", Material.RED_MUSHROOM);
|
||||
renamedLegacy.put("IRON_FENCE", Material.IRON_BARS);
|
||||
renamedLegacy.put("THIN_GLASS", Material.GLASS_PANE);
|
||||
renamedLegacy.put("FENCE_GATE", Material.OAK_FENCE_GATE);
|
||||
renamedLegacy.put("SMOOTH_STAIRS", Material.STONE_BRICK_STAIRS);
|
||||
renamedLegacy.put("MYCEL", Material.MYCELIUM);
|
||||
renamedLegacy.put("WATER_LILY", Material.LILY_PAD);
|
||||
renamedLegacy.put("NETHER_FENCE", Material.NETHER_BRICK_FENCE);
|
||||
renamedLegacy.put("NETHER_WARTS", Material.NETHER_WART);
|
||||
renamedLegacy.put("NETHER_STALK", Material.NETHER_WART);
|
||||
renamedLegacy.put("ENCHANTMENT_TABLE", Material.ENCHANTING_TABLE);
|
||||
renamedLegacy.put("ENDER_PORTAL", Material.END_PORTAL);
|
||||
renamedLegacy.put("ENDER_PORTAL_FRAME", Material.END_PORTAL_FRAME);
|
||||
renamedLegacy.put("ENDER_STONE", Material.END_STONE);
|
||||
renamedLegacy.put("REDSTONE_LAMP_OFF", Material.REDSTONE_LAMP);
|
||||
renamedLegacy.put("REDSTONE_LAMP_ON", Material.REDSTONE_LAMP);
|
||||
renamedLegacy.put("WOOD_DOUBLE_STEP", Material.OAK_SLAB);
|
||||
renamedLegacy.put("WOOD_STEP", Material.OAK_SLAB);
|
||||
renamedLegacy.put("SPRUCE_WOOD_STAIRS", Material.SPRUCE_STAIRS);
|
||||
renamedLegacy.put("BIRCH_WOOD_STAIRS", Material.BIRCH_STAIRS);
|
||||
renamedLegacy.put("JUNGLE_WOOD_STAIRS", Material.JUNGLE_STAIRS);
|
||||
renamedLegacy.put("COMMAND", Material.COMMAND_BLOCK);
|
||||
renamedLegacy.put("COBBLE_WALL", Material.COBBLESTONE_WALL);
|
||||
renamedLegacy.put("WOOD_BUTTON", Material.OAK_BUTTON);
|
||||
renamedLegacy.put("SKULL", Material.SKELETON_SKULL);
|
||||
renamedLegacy.put("SKULL_ITEM", Material.SKELETON_SKULL);
|
||||
renamedLegacy.put("GOLD_PLATE", Material.LIGHT_WEIGHTED_PRESSURE_PLATE);
|
||||
renamedLegacy.put("IRON_PLATE", Material.HEAVY_WEIGHTED_PRESSURE_PLATE);
|
||||
renamedLegacy.put("REDSTONE_COMPARATOR_OFF", Material.COMPARATOR);
|
||||
renamedLegacy.put("REDSTONE_COMPARATOR_ON", Material.COMPARATOR);
|
||||
renamedLegacy.put("REDSTONE_COMPARATOR", Material.COMPARATOR);
|
||||
renamedLegacy.put("QUARTZ_ORE", Material.QUARTZ);
|
||||
renamedLegacy.put("STAINED_CLAY", Material.WHITE_TERRACOTTA);
|
||||
renamedLegacy.put("STAINED_GLASS_PANE", Material.WHITE_STAINED_GLASS_PANE);
|
||||
renamedLegacy.put("LEAVES_2", Material.ACACIA_LEAVES);
|
||||
renamedLegacy.put("LOG_2", Material.ACACIA_LOG);
|
||||
renamedLegacy.put("CARPET", Material.WHITE_CARPET);
|
||||
renamedLegacy.put("HARD_CLAY", Material.TERRACOTTA);
|
||||
renamedLegacy.put("DOUBLE_PLANT", Material.SUNFLOWER);
|
||||
renamedLegacy.put("STANDING_BANNER", Material.WHITE_BANNER);
|
||||
renamedLegacy.put("BANNER", Material.WHITE_BANNER);
|
||||
renamedLegacy.put("WALL_BANNER", Material.WHITE_WALL_BANNER);
|
||||
renamedLegacy.put("DAYLIGHT_DETECTOR_INVERTED", Material.DAYLIGHT_DETECTOR);
|
||||
renamedLegacy.put("DOUBLE_STONE_SLAB2", Material.RED_SANDSTONE_SLAB);
|
||||
renamedLegacy.put("STONE_SLAB2", Material.RED_SANDSTONE_SLAB);
|
||||
renamedLegacy.put("PURPUR_DOUBLE_SLAB", Material.PURPUR_SLAB);
|
||||
renamedLegacy.put("END_BRICKS", Material.END_STONE_BRICKS);
|
||||
renamedLegacy.put("COMMAND_REPEATING", Material.REPEATING_COMMAND_BLOCK);
|
||||
renamedLegacy.put("COMMAND_CHAIN", Material.CHAIN_COMMAND_BLOCK);
|
||||
renamedLegacy.put("MAGMA", Material.MAGMA_BLOCK);
|
||||
renamedLegacy.put("RED_NETHER_BRICK", Material.RED_NETHER_BRICKS);
|
||||
renamedLegacy.put("SILVER_SHULKER_BOX", Material.LIGHT_GRAY_SHULKER_BOX);
|
||||
renamedLegacy.put("SILVER_GLAZED_TERRACOTTA", Material.LIGHT_GRAY_TERRACOTTA);
|
||||
renamedLegacy.put("CONCRETE", Material.WHITE_CONCRETE);
|
||||
renamedLegacy.put("CONCRETE_POWDER", Material.WHITE_CONCRETE_POWDER);
|
||||
renamedLegacy.put("IRON_SPADE", Material.IRON_SHOVEL);
|
||||
renamedLegacy.put("WOOD_SWORD", Material.WOODEN_SWORD);
|
||||
renamedLegacy.put("WOOD_SPADE", Material.WOODEN_SHOVEL);
|
||||
renamedLegacy.put("WOOD_PICKAXE", Material.WOODEN_PICKAXE);
|
||||
renamedLegacy.put("WOOD_AXE", Material.WOODEN_AXE);
|
||||
renamedLegacy.put("STONE_SPADE", Material.STONE_SHOVEL);
|
||||
renamedLegacy.put("DIAMOND_SPADE", Material.DIAMOND_SHOVEL);
|
||||
renamedLegacy.put("MUSHROOM_SOUP", Material.MUSHROOM_STEW);
|
||||
renamedLegacy.put("GOLD_SWORD", Material.GOLDEN_SWORD);
|
||||
renamedLegacy.put("GOLD_SPADE", Material.GOLDEN_SHOVEL);
|
||||
renamedLegacy.put("GOLD_PICKAXE", Material.GOLDEN_PICKAXE);
|
||||
renamedLegacy.put("GOLD_AXE", Material.GOLDEN_AXE);
|
||||
renamedLegacy.put("SULPHUR", Material.GUNPOWDER);
|
||||
renamedLegacy.put("WOOD_HOE", Material.WOODEN_HOE);
|
||||
renamedLegacy.put("GOLD_HOE", Material.GOLDEN_HOE);
|
||||
renamedLegacy.put("GOLD_HELMET", Material.GOLDEN_HELMET);
|
||||
renamedLegacy.put("GOLD_CHESTPLATE", Material.GOLDEN_CHESTPLATE);
|
||||
renamedLegacy.put("GOLD_LEGGINGS", Material.GOLDEN_LEGGINGS);
|
||||
renamedLegacy.put("GOLD_BOOTS", Material.GOLDEN_BOOTS);
|
||||
renamedLegacy.put("PORK", Material.PORKCHOP);
|
||||
renamedLegacy.put("GRILLED_PORK", Material.COOKED_PORKCHOP);
|
||||
renamedLegacy.put("SNOW_BALL", Material.SNOWBALL);
|
||||
renamedLegacy.put("BOAT", Material.OAK_BOAT);
|
||||
renamedLegacy.put("CLAY_BRICK", Material.BRICKS);
|
||||
renamedLegacy.put("STORAGE_MINECART", Material.CHEST_MINECART);
|
||||
renamedLegacy.put("POWERED_MINECART", Material.FURNACE_MINECART);
|
||||
renamedLegacy.put("WATCH", Material.CLOCK);
|
||||
renamedLegacy.put("RAW_FISH", Material.SALMON);
|
||||
renamedLegacy.put("COOKED_FISH", Material.COOKED_SALMON);
|
||||
renamedLegacy.put("INK_SACK", Material.INK_SAC);
|
||||
renamedLegacy.put("RAW_BEEF", Material.BEEF);
|
||||
renamedLegacy.put("RAW_CHICKEN", Material.CHICKEN);
|
||||
renamedLegacy.put("EYE_OF_ENDER", Material.ENDER_EYE);
|
||||
renamedLegacy.put("SPECKLED_MELON", Material.GLISTERING_MELON_SLICE);
|
||||
renamedLegacy.put("EXP_BOTTLE", Material.EXPERIENCE_BOTTLE);
|
||||
renamedLegacy.put("FIREBALL", Material.FIRE_CHARGE);
|
||||
renamedLegacy.put("BOOK_AND_QUILL", Material.WRITABLE_BOOK);
|
||||
renamedLegacy.put("FLOWER_POT_ITEM", Material.FLOWER_POT);
|
||||
renamedLegacy.put("EMPTY_MAP", Material.MAP);
|
||||
renamedLegacy.put("BREWING_STAND_ITEM", Material.BREWING_STAND);
|
||||
renamedLegacy.put("CAULDRON_ITEM", Material.CAULDRON);
|
||||
renamedLegacy.put("CARROT_ITEM", Material.CARROT);
|
||||
renamedLegacy.put("POTATO_ITEM", Material.POTATO);
|
||||
renamedLegacy.put("SPRUCE_DOOR_ITEM", Material.SPRUCE_DOOR);
|
||||
renamedLegacy.put("BIRCH_DOOR_ITEM", Material.BIRCH_DOOR);
|
||||
renamedLegacy.put("JUNGLE_DOOR_ITEM", Material.JUNGLE_DOOR);
|
||||
renamedLegacy.put("ACACIA_DOOR_ITEM", Material.ACACIA_DOOR);
|
||||
renamedLegacy.put("DARK_OAK_DOOR_ITEM", Material.DARK_OAK_DOOR);
|
||||
renamedLegacy.put("CARROT_STICK", Material.CARROT_ON_A_STICK);
|
||||
renamedLegacy.put("FIREWORK", Material.FIREWORK_ROCKET);
|
||||
renamedLegacy.put("FIREWORK_CHARGE", Material.FIREWORK_STAR);
|
||||
renamedLegacy.put("NETHER_BRICK_ITEM", Material.NETHER_BRICKS);
|
||||
renamedLegacy.put("EXPLOSIVE_MINECART", Material.TNT_MINECART);
|
||||
renamedLegacy.put("IRON_BARDING", Material.IRON_HORSE_ARMOR);
|
||||
renamedLegacy.put("GOLD_BARDING", Material.GOLDEN_HORSE_ARMOR);
|
||||
renamedLegacy.put("DIAMOND_BARDING", Material.DIAMOND_HORSE_ARMOR);
|
||||
renamedLegacy.put("LEASH", Material.LEAD);
|
||||
renamedLegacy.put("COMMAND_MINECART", Material.COMMAND_BLOCK_MINECART);
|
||||
renamedLegacy.put("CHORUS_FRUIT_POPPED", Material.POPPED_CHORUS_FRUIT);
|
||||
renamedLegacy.put("DRAGONS_BREATH", Material.DRAGON_BREATH);
|
||||
renamedLegacy.put("BOAT_SPRUCE", Material.SPRUCE_BOAT);
|
||||
renamedLegacy.put("BOAT_BIRCH", Material.BIRCH_BOAT);
|
||||
renamedLegacy.put("BOAT_JUNGLE", Material.JUNGLE_BOAT);
|
||||
renamedLegacy.put("BOAT_ACACIA", Material.ACACIA_BOAT);
|
||||
renamedLegacy.put("BOAT_DARK_OAK", Material.DARK_OAK_BOAT);
|
||||
renamedLegacy.put("TOTEM", Material.TOTEM_OF_UNDYING);
|
||||
renamedLegacy.put("GOLD_RECORD", Material.MUSIC_DISC_13);
|
||||
renamedLegacy.put("GREEN_RECORD", Material.MUSIC_DISC_CAT);
|
||||
renamedLegacy.put("RECORD_3", Material.MUSIC_DISC_BLOCKS);
|
||||
renamedLegacy.put("RECORD_4", Material.MUSIC_DISC_CHIRP);
|
||||
renamedLegacy.put("RECORD_5", Material.MUSIC_DISC_FAR);
|
||||
renamedLegacy.put("RECORD_6", Material.MUSIC_DISC_MALL);
|
||||
renamedLegacy.put("RECORD_7", Material.MUSIC_DISC_MELLOHI);
|
||||
renamedLegacy.put("RECORD_8", Material.MUSIC_DISC_STAL);
|
||||
renamedLegacy.put("RECORD_9", Material.MUSIC_DISC_STRAD);
|
||||
renamedLegacy.put("RECORD_10", Material.MUSIC_DISC_WARD);
|
||||
renamedLegacy.put("RECORD_11", Material.MUSIC_DISC_11);
|
||||
renamedLegacy.put("RECORD_12", Material.MUSIC_DISC_WAIT);
|
||||
}
|
||||
|
||||
private static final Reflection.Field<?> scoreboardName = Reflection.getField(ClientboundSetObjectivePacket.class, Component.class, 0);
|
||||
public void setScoreboardTitle(Object packet, String title) {
|
||||
scoreboardName.set(packet, ChatWrapper.impl.stringToChatComponent(title));
|
||||
}
|
||||
|
||||
private static final Class<?> scoreActionEnum = null;
|
||||
private static final Reflection.Field<?> scoreAction = null;
|
||||
private static final Object scoreActionChange = null;
|
||||
|
||||
public void setScoreAction(Object packet) {
|
||||
scoreAction.set(packet, scoreActionChange);
|
||||
}
|
||||
|
||||
public Material getMaterial(String material) {
|
||||
try{
|
||||
return Material.valueOf(material);
|
||||
}catch(IllegalArgumentException e){
|
||||
return renamedLegacy.get(material);
|
||||
}
|
||||
}
|
||||
|
||||
public Material getDye(int colorCode) {
|
||||
switch(colorCode){
|
||||
case 1:
|
||||
return Material.RED_DYE;
|
||||
case 2:
|
||||
return Material.GREEN_DYE;
|
||||
case 3:
|
||||
return Material.BROWN_DYE;
|
||||
case 4:
|
||||
return Material.LAPIS_LAZULI;
|
||||
case 5:
|
||||
return Material.PURPLE_DYE;
|
||||
case 6:
|
||||
return Material.CYAN_DYE;
|
||||
case 7:
|
||||
return Material.LIGHT_GRAY_DYE;
|
||||
case 8:
|
||||
return Material.GRAY_DYE;
|
||||
case 9:
|
||||
return Material.PINK_DYE;
|
||||
case 10:
|
||||
return Material.LIME_DYE;
|
||||
case 11:
|
||||
return Material.YELLOW_DYE;
|
||||
case 12:
|
||||
return Material.LIGHT_BLUE_DYE;
|
||||
case 13:
|
||||
return Material.MAGENTA_DYE;
|
||||
case 14:
|
||||
return Material.ORANGE_DYE;
|
||||
case 15:
|
||||
return Material.WHITE_DYE;
|
||||
default:
|
||||
return Material.BLACK_DYE;
|
||||
}
|
||||
}
|
||||
|
||||
public ItemStack setSkullOwner(String player) {
|
||||
ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1);
|
||||
head.editMeta(SkullMeta.class, skullMeta -> {
|
||||
try {
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(player.startsWith(".") ? player.substring(1) : player);
|
||||
PlayerProfile playerProfile = offlinePlayer.getPlayerProfile();
|
||||
playerProfile.complete();
|
||||
skullMeta.setPlayerProfile(playerProfile);
|
||||
} catch (Exception e) {
|
||||
// Ignore
|
||||
}
|
||||
});
|
||||
return head;
|
||||
}
|
||||
|
||||
protected static final Class<?> entityPose = Pose.class;
|
||||
protected static final Object shooting = entityPose.getEnumConstants()[16];
|
||||
protected static final Object standing = entityPose.getEnumConstants()[0];
|
||||
protected static final Object swimming = entityPose.getEnumConstants()[3];
|
||||
protected static final Object sneaking = entityPose.getEnumConstants()[5];
|
||||
public Object getPose(FlatteningWrapper.EntityPose pose) {
|
||||
switch (pose) {
|
||||
case SHOOTING:
|
||||
return shooting;
|
||||
case SNEAKING:
|
||||
return sneaking;
|
||||
case SWIMMING:
|
||||
return swimming;
|
||||
case NORMAL:
|
||||
default:
|
||||
return standing;
|
||||
}
|
||||
}
|
||||
|
||||
public Object formatDisplayName(String displayName) {
|
||||
return displayName != null ? Optional.of(ChatWrapper.impl.stringToChatComponent(displayName)) : Optional.empty();
|
||||
}
|
||||
|
||||
private static final Reflection.Field<net.minecraft.world.entity.EntityType> spawnType = Reflection.getField(ProtocolWrapper.spawnPacket, net.minecraft.world.entity.EntityType.class, 0);
|
||||
public void setSpawnPacketType(Object packet, EntityType type) {
|
||||
ResourceLocation key = CraftNamespacedKey.toMinecraft(type.getKey());
|
||||
spawnType.set(packet, BuiltInRegistries.ENTITY_TYPE.get(key).get().value());
|
||||
}
|
||||
|
||||
public int getViewDistance(Player player) {
|
||||
return player.getClientViewDistance();
|
||||
}
|
||||
|
||||
public void syncSave(World world) {
|
||||
((CraftWorld) world).getHandle().save(null, true, false);
|
||||
}
|
||||
|
||||
public enum EntityPose {
|
||||
NORMAL,
|
||||
SNEAKING,
|
||||
SWIMMING,
|
||||
SHOOTING,
|
||||
;
|
||||
return displayName != null ? Optional.of(ChatWrapper.stringToChatComponent(displayName)) : Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ public class WorldEditRenderer implements Listener {
|
||||
|
||||
private static WorldEditRenderer INSTANCE;
|
||||
|
||||
private static final Material WAND = FlatteningWrapper.impl.getMaterial("WOOD_AXE");
|
||||
private static final Material WAND = Material.WOODEN_AXE;
|
||||
|
||||
private final WorldEditPlugin we;
|
||||
|
||||
|
||||
@@ -27,16 +27,19 @@ import de.steamwar.core.FlatteningWrapper;
|
||||
import de.steamwar.core.ProtocolWrapper;
|
||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.protocol.game.*;
|
||||
import net.minecraft.network.syncher.EntityDataAccessor;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.Pose;
|
||||
import net.minecraft.world.entity.PositionMoveRotation;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@@ -77,7 +80,7 @@ public class REntity {
|
||||
@Getter
|
||||
private boolean invisible;
|
||||
@Getter
|
||||
private FlatteningWrapper.EntityPose pose = FlatteningWrapper.EntityPose.NORMAL;
|
||||
private Pose pose = Pose.STANDING;
|
||||
@Getter
|
||||
private boolean bowDrawn;
|
||||
@Getter
|
||||
@@ -195,9 +198,9 @@ public class REntity {
|
||||
server.updateEntity(this, packet);
|
||||
}
|
||||
|
||||
public void setPose(FlatteningWrapper.EntityPose pose) {
|
||||
public void setPose(Pose pose) {
|
||||
this.pose = pose;
|
||||
server.updateEntity(this, getDataWatcherPacket(poseDataWatcher, FlatteningWrapper.impl.getPose(pose)));
|
||||
server.updateEntity(this, getDataWatcherPacket(poseDataWatcher, pose));
|
||||
}
|
||||
|
||||
public void setOnFire(boolean perma) {
|
||||
@@ -222,7 +225,7 @@ public class REntity {
|
||||
public void setDisplayName(String displayName) {
|
||||
this.displayName = displayName;
|
||||
server.updateEntity(this, getDataWatcherPacket(
|
||||
nameWatcher, FlatteningWrapper.impl.formatDisplayName(displayName),
|
||||
nameWatcher, FlatteningWrapper.formatDisplayName(displayName),
|
||||
nameVisibleWatcher, displayName != null
|
||||
));
|
||||
}
|
||||
@@ -260,14 +263,8 @@ public class REntity {
|
||||
// empty for regular entity
|
||||
}
|
||||
|
||||
private static final Function<REntity, Object> livingSpawnPacketGenerator = REntity::spawnPacketGenerator;
|
||||
void spawn(Consumer<Object> packetSink) {
|
||||
if(entityType.isAlive()) {
|
||||
packetSink.accept(livingSpawnPacketGenerator.apply(this));
|
||||
} else {
|
||||
packetSink.accept(spawnPacketGenerator());
|
||||
}
|
||||
|
||||
packetSink.accept(spawnPacketGenerator());
|
||||
postSpawn(packetSink);
|
||||
}
|
||||
|
||||
@@ -276,8 +273,8 @@ public class REntity {
|
||||
packetSink.accept(getHeadRotationPacket());
|
||||
}
|
||||
|
||||
if(pose != FlatteningWrapper.EntityPose.NORMAL) {
|
||||
packetSink.accept(getDataWatcherPacket(poseDataWatcher, FlatteningWrapper.impl.getPose(pose)));
|
||||
if(pose != Pose.STANDING) {
|
||||
packetSink.accept(getDataWatcherPacket(poseDataWatcher, pose));
|
||||
}
|
||||
|
||||
byte status = getEntityStatus();
|
||||
@@ -286,7 +283,7 @@ public class REntity {
|
||||
}
|
||||
|
||||
if(displayName != null) {
|
||||
packetSink.accept(getDataWatcherPacket(nameWatcher, FlatteningWrapper.impl.formatDisplayName(displayName), nameVisibleWatcher, true));
|
||||
packetSink.accept(getDataWatcherPacket(nameWatcher, FlatteningWrapper.formatDisplayName(displayName), nameVisibleWatcher, true));
|
||||
}
|
||||
|
||||
if(noGravity) {
|
||||
@@ -324,7 +321,7 @@ public class REntity {
|
||||
|
||||
if(fireTick != 0)
|
||||
status |= 1;
|
||||
if(pose == FlatteningWrapper.EntityPose.SNEAKING)
|
||||
if(pose == Pose.CROUCHING)
|
||||
status |= 2;
|
||||
if(invisible)
|
||||
status |= 0x20;
|
||||
@@ -335,7 +332,7 @@ public class REntity {
|
||||
}
|
||||
|
||||
protected Object getDataWatcherPacket(Object... dataWatcherKeyValues) {
|
||||
return ChatWrapper.impl.getDataWatcherPacket(entityId, dataWatcherKeyValues);
|
||||
return ChatWrapper.getDataWatcherPacket(entityId, dataWatcherKeyValues);
|
||||
}
|
||||
|
||||
private Object getTeleportPacket(){
|
||||
@@ -374,6 +371,7 @@ public class REntity {
|
||||
return new ClientboundSetEquipmentPacket(entityId, Collections.singletonList(Pair.of((EquipmentSlot) slot, CraftItemStack.asNMSCopy(stack))));
|
||||
}
|
||||
|
||||
private static final Reflection.Field<net.minecraft.world.entity.EntityType> spawnType = Reflection.getField(ProtocolWrapper.spawnPacket, net.minecraft.world.entity.EntityType.class, 0);
|
||||
private static Function<REntity, Object> entitySpawnPacketGenerator(Class<?> spawnPacket, int posOffset) {
|
||||
BountifulWrapper.UUIDSetter uuid = BountifulWrapper.impl.getUUIDSetter(spawnPacket);
|
||||
Function<REntity, Object> packetGenerator = spawnPacketGenerator(spawnPacket, posOffset);
|
||||
@@ -381,7 +379,8 @@ public class REntity {
|
||||
return entity -> {
|
||||
Object packet = packetGenerator.apply(entity);
|
||||
uuid.set(packet, entity.uuid);
|
||||
FlatteningWrapper.impl.setSpawnPacketType(packet, entity.entityType);
|
||||
ResourceLocation key = CraftNamespacedKey.toMinecraft(entity.entityType.getKey());
|
||||
spawnType.set(packet, BuiltInRegistries.ENTITY_TYPE.get(key).get().value());
|
||||
return packet;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ package de.steamwar.entity;
|
||||
|
||||
import com.comphenix.tinyprotocol.TinyProtocol;
|
||||
import de.steamwar.core.Core;
|
||||
import de.steamwar.core.FlatteningWrapper;
|
||||
import net.minecraft.network.protocol.game.ServerboundInteractPacket;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@@ -287,7 +286,7 @@ public class REntityServer implements Listener {
|
||||
}
|
||||
|
||||
private int viewRadius(Player player) {
|
||||
return FlatteningWrapper.impl.getViewDistance(player) / 2;
|
||||
return player.getClientViewDistance() / 2;
|
||||
}
|
||||
|
||||
private long entityToId(REntity entity) {
|
||||
|
||||
@@ -77,7 +77,7 @@ public class RTextDisplay extends RDisplay {
|
||||
private static final EntityDataAccessor<Component> textWatcher = new EntityDataAccessor<>(23, EntityDataSerializers.COMPONENT);
|
||||
private void getText(boolean ignoreDefault, BiConsumer<Object, Object> packetSink) {
|
||||
if (ignoreDefault || !text.isEmpty()) {
|
||||
packetSink.accept(textWatcher, ChatWrapper.impl.stringToChatComponent(text));
|
||||
packetSink.accept(textWatcher, ChatWrapper.stringToChatComponent(text));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,15 +19,17 @@
|
||||
|
||||
package de.steamwar.inventory;
|
||||
|
||||
import com.destroystokyo.paper.profile.PlayerProfile;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import de.steamwar.core.FlatteningWrapper;
|
||||
import de.steamwar.core.TrickyTrialsWrapper;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -47,27 +49,29 @@ public class SWItem {
|
||||
|
||||
public static SWItem getPlayerSkull(String playerName){
|
||||
SWItem p = new SWItem();
|
||||
ItemStack head = FlatteningWrapper.impl.setSkullOwner(playerName);
|
||||
ItemStack head = new ItemStack(Material.PLAYER_HEAD, 1);
|
||||
head.editMeta(SkullMeta.class, skullMeta -> {
|
||||
try {
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerName.startsWith(".") ? playerName.substring(1) : playerName);
|
||||
PlayerProfile playerProfile = offlinePlayer.getPlayerProfile();
|
||||
playerProfile.complete();
|
||||
skullMeta.setPlayerProfile(playerProfile);
|
||||
} catch (Exception e) {
|
||||
// Ignore
|
||||
}
|
||||
});
|
||||
p.setItemStack(head);
|
||||
return p;
|
||||
}
|
||||
|
||||
public static Material getMaterial(String material){
|
||||
try{
|
||||
Material m = FlatteningWrapper.impl.getMaterial(material);
|
||||
if(m == null)
|
||||
return Material.BARRIER;
|
||||
|
||||
return m;
|
||||
return Material.valueOf(material);
|
||||
}catch(IllegalArgumentException e){
|
||||
return Material.STONE;
|
||||
return Material.BARRIER;
|
||||
}
|
||||
}
|
||||
|
||||
public static Material getDye(int colorCode){
|
||||
return FlatteningWrapper.impl.getDye(colorCode);
|
||||
}
|
||||
|
||||
public SWItem() {
|
||||
itemStack = new ItemStack(Material.AIR);
|
||||
itemMeta = itemStack.getItemMeta();
|
||||
@@ -119,13 +123,7 @@ public class SWItem {
|
||||
public static SWItem getItemFromJson(JsonObject itemJson) {
|
||||
SWItem item = null;
|
||||
try {
|
||||
if(itemJson.has("color")) {
|
||||
item = new SWItem(SWItem.getDye(itemJson.get("color").getAsInt()),
|
||||
itemJson.has("color")?itemJson.get("color").getAsByte():0,
|
||||
itemJson.get("title").getAsString());
|
||||
}else {
|
||||
item = new SWItem(SWItem.getMaterial(itemJson.get("material").getAsString()), itemJson.get("title").getAsString());
|
||||
}
|
||||
item = new SWItem(SWItem.getMaterial(itemJson.get("material").getAsString()), itemJson.get("title").getAsString());
|
||||
}catch (IllegalArgumentException e) {
|
||||
item = new SWItem(Material.STONE, itemJson.get("title").getAsString());
|
||||
}
|
||||
|
||||
@@ -64,27 +64,27 @@ public class SWListInv<T> extends SWInventory {
|
||||
|
||||
if (sizeBiggerMax()) {
|
||||
if (page != 0) {
|
||||
setItem(45, new SWItem(SWItem.getDye(10), (byte) 10, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_ACTIVE", player), (ClickType click) -> {
|
||||
setItem(45, new SWItem(Material.LIME_DYE, (byte) 10, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_ACTIVE", player), (ClickType click) -> {
|
||||
page--;
|
||||
open();
|
||||
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
||||
} else {
|
||||
setItem(45, new SWItem(SWItem.getDye(8), (byte) 8, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||
setItem(45, new SWItem(Material.GRAY_DYE, (byte) 8, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
||||
}
|
||||
if (page < elements.size() / 45 - (elements.size() % 45 == 0 ? 1 : 0)) {
|
||||
setItem(53, new SWItem(SWItem.getDye(10), (byte) 10, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_ACTIVE", player), (ClickType click) -> {
|
||||
setItem(53, new SWItem(Material.LIME_DYE, (byte) 10, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_ACTIVE", player), (ClickType click) -> {
|
||||
page++;
|
||||
open();
|
||||
}).setCustomModelData(CMDs.NEXT_PAGE));
|
||||
} else {
|
||||
setItem(53, new SWItem(SWItem.getDye(8), (byte) 8, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||
setItem(53, new SWItem(Material.GRAY_DYE, (byte) 8, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||
}).setCustomModelData(CMDs.NEXT_PAGE));
|
||||
}
|
||||
} else if (!dynamicSize) {
|
||||
setItem(45, new SWItem(SWItem.getDye(8), (byte) 8, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||
setItem(45, new SWItem(Material.GRAY_DYE, (byte) 8, Core.MESSAGE.parse("SWLISINV_PREVIOUS_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||
}).setCustomModelData(CMDs.PREVIOUS_PAGE));
|
||||
setItem(53, new SWItem(SWItem.getDye(8), (byte) 8, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||
setItem(53, new SWItem(Material.GRAY_DYE, (byte) 8, Core.MESSAGE.parse("SWLISINV_NEXT_PAGE_INACTIVE", player), (ClickType click) -> {
|
||||
}).setCustomModelData(CMDs.NEXT_PAGE));
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ public class SWListInv<T> extends SWInventory {
|
||||
for(SchematicNode s : schems){
|
||||
Material m;
|
||||
if(s.getItem().isEmpty())
|
||||
m = SWItem.getMaterial("CAULDRON_ITEM");
|
||||
m = Material.CAULDRON;
|
||||
else
|
||||
m = SWItem.getMaterial(s.getItem());
|
||||
SWItem item = new SWItem(m,"§e" + s.getName());
|
||||
|
||||
@@ -137,7 +137,7 @@ public class SchematicSelector {
|
||||
}
|
||||
}
|
||||
if(target.target.dirs) {
|
||||
inv.setItem(49, SWItem.getDye(10), Core.MESSAGE.parse("SCHEM_SELECTOR_SEL_DIR", player), clickType -> {
|
||||
inv.setItem(49, Material.LIME_DYE, Core.MESSAGE.parse("SCHEM_SELECTOR_SEL_DIR", player), clickType -> {
|
||||
player.closeInventory();
|
||||
callback.accept(parent);
|
||||
});
|
||||
@@ -312,7 +312,7 @@ public class SchematicSelector {
|
||||
openFilter();
|
||||
} else {
|
||||
SWAnvilInv swAnvilInv = new SWAnvilInv(player, Core.MESSAGE.parse("SCHEM_SELECTOR_FILTER_ENTER_OWNER", player));
|
||||
swAnvilInv.setItem(SWItem.getMaterial("SKULL_ITEM"), (byte) 3, Collections.singletonList(Core.MESSAGE.parse("SCHEM_SELECTOR_CLICK_BACK", player)), false);
|
||||
swAnvilInv.setItem(Material.SKELETON_SKULL, (byte) 3, Collections.singletonList(Core.MESSAGE.parse("SCHEM_SELECTOR_CLICK_BACK", player)), false);
|
||||
swAnvilInv.setCallback(s -> {
|
||||
if(SteamwarUser.get(s) != null) {
|
||||
filter = filter.withOwner(SteamwarUser.get(s).getId());
|
||||
@@ -324,7 +324,7 @@ public class SchematicSelector {
|
||||
}
|
||||
};
|
||||
if(filter.getOwner() == null) {
|
||||
inv.setItem(1, SWItem.getMaterial("SKULL_ITEM"), (byte) 3, Core.MESSAGE.parse("SCHEM_SELECTOR_FILTER_OWNER", player), ownerCallback);
|
||||
inv.setItem(1, Material.SKELETON_SKULL, (byte) 3, Core.MESSAGE.parse("SCHEM_SELECTOR_FILTER_OWNER", player), ownerCallback);
|
||||
} else {
|
||||
SteamwarUser tUser = SteamwarUser.byId(filter.getOwner());
|
||||
SWItem item = SWItem.getPlayerSkull(tUser.getUserName());
|
||||
@@ -408,12 +408,12 @@ public class SchematicSelector {
|
||||
}
|
||||
}
|
||||
|
||||
inv.setItem(7, SWItem.getDye(1), Core.MESSAGE.parse("SCHEM_SELECTOR_CANCEL", player), clickType -> {
|
||||
inv.setItem(7, Material.RED_DYE, Core.MESSAGE.parse("SCHEM_SELECTOR_CANCEL", player), clickType -> {
|
||||
filter = null;
|
||||
depth = 0;
|
||||
openList(null);
|
||||
});
|
||||
inv.setItem(8, SWItem.getDye(10), Core.MESSAGE.parse("SCHEM_SELECTOR_GO", player), clickType -> {
|
||||
inv.setItem(8, Material.LIME_DYE, Core.MESSAGE.parse("SCHEM_SELECTOR_GO", player), clickType -> {
|
||||
if (!filter.equals(filters[0])) {
|
||||
for (int i = filters.length - 1; i > 0; i--) {
|
||||
filters[i] = filters[i-1];
|
||||
@@ -646,7 +646,7 @@ public class SchematicSelector {
|
||||
return o1.getSchemtype().name().compareTo(o2.getSchemtype().name());
|
||||
}
|
||||
}),
|
||||
LAST_UPDATED(SWItem.getMaterial("WATCH"), "SCHEM_SELECTOR_SORTING_UPDATE", Comparator.comparing(SchematicNode::getLastUpdate));
|
||||
LAST_UPDATED(Material.CLOCK, "SCHEM_SELECTOR_SORTING_UPDATE", Comparator.comparing(SchematicNode::getLastUpdate));
|
||||
|
||||
private final Material mat;
|
||||
private final String name;
|
||||
|
||||
Reference in New Issue
Block a user