9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-29 20:09:13 +00:00

refactor images

This commit is contained in:
XiaoMoMi
2025-04-04 00:45:44 +08:00
parent 419d3a262b
commit 6cadf524e4
26 changed files with 397 additions and 281 deletions

View File

@@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.util.Reflections;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
@@ -14,7 +13,6 @@ import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.context.ContextHolder;
import net.momirealms.craftengine.core.world.Vec3d;

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.util.*;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.PushReaction;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.item.Item;
@@ -29,7 +28,10 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.*;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockExplodeEvent;
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.world.GenericGameEvent;
import org.bukkit.inventory.ItemStack;

View File

@@ -13,14 +13,13 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.loot.LootContext;
import net.momirealms.craftengine.core.loot.number.NumberProvider;
import net.momirealms.craftengine.core.loot.number.NumberProviders;
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.RandomUtils;
import net.momirealms.craftengine.core.util.Tuple;
import net.momirealms.craftengine.core.loot.number.NumberProvider;
import net.momirealms.craftengine.core.loot.number.NumberProviders;
import net.momirealms.craftengine.core.util.context.ContextHolder;
import net.momirealms.craftengine.core.util.context.ContextKey;
import net.momirealms.craftengine.core.world.Vec3d;
import net.momirealms.craftengine.core.world.Vec3i;
import net.momirealms.craftengine.shared.block.BlockBehavior;
@@ -29,7 +28,6 @@ import org.bukkit.World;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ThreadLocalRandom;

View File

@@ -4,8 +4,8 @@ import io.papermc.paper.event.player.AsyncChatCommandDecorateEvent;
import io.papermc.paper.event.player.AsyncChatDecorateEvent;
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.util.Reflections;
import net.momirealms.craftengine.core.font.AbstractImageManager;
import net.momirealms.craftengine.core.font.ImageManager;
import net.momirealms.craftengine.core.font.AbstractFontManager;
import net.momirealms.craftengine.core.font.FontManager;
import net.momirealms.craftengine.core.plugin.config.ConfigManager;
import net.momirealms.craftengine.core.util.CharacterUtils;
import org.bukkit.Bukkit;
@@ -19,11 +19,11 @@ import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import java.lang.reflect.InvocationTargetException;
import java.util.function.Consumer;
public class BukkitImageManager extends AbstractImageManager implements Listener {
public class BukkitFontManager extends AbstractFontManager implements Listener {
private final BukkitCraftEngine plugin;
private final Object serializer;
public BukkitImageManager(BukkitCraftEngine plugin) {
public BukkitFontManager(BukkitCraftEngine plugin) {
super(plugin);
this.plugin = plugin;
try {
@@ -63,7 +63,7 @@ public class BukkitImageManager extends AbstractImageManager implements Listener
public void onCommand(PlayerCommandPreprocessEvent event) {
if (!ConfigManager.filterCommand()) return;
if (!this.isDefaultFontInUse()) return;
if (event.getPlayer().hasPermission(ImageManager.BYPASS_COMMAND)) {
if (event.getPlayer().hasPermission(FontManager.BYPASS_COMMAND)) {
return;
}
runIfContainsIllegalCharacter(event.getMessage(), event::setMessage);
@@ -74,7 +74,7 @@ public class BukkitImageManager extends AbstractImageManager implements Listener
Player player = event.player();
if (player == null) return;
if (!this.isDefaultFontInUse()) return;
if (player.hasPermission(ImageManager.BYPASS_CHAT)) {
if (player.hasPermission(FontManager.BYPASS_CHAT)) {
return;
}
try {
@@ -101,7 +101,7 @@ public class BukkitImageManager extends AbstractImageManager implements Listener
boolean hasIllegal = false;
for (int i = 0; i < codepoints.length; i++) {
int codepoint = codepoints[i];
if (!isIllegalCharacter(codepoint)) {
if (!isIllegalCodepoint(codepoint)) {
newCodepoints[i] = codepoint;
} else {
newCodepoints[i] = '*';

View File

@@ -7,7 +7,7 @@ import net.momirealms.craftengine.bukkit.block.behavior.BukkitBlockBehaviors;
import net.momirealms.craftengine.bukkit.compatibility.papi.PlaceholderAPIUtils;
import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurnitureManager;
import net.momirealms.craftengine.bukkit.entity.furniture.hitbox.BukkitHitBoxTypes;
import net.momirealms.craftengine.bukkit.font.BukkitImageManager;
import net.momirealms.craftengine.bukkit.font.BukkitFontManager;
import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
import net.momirealms.craftengine.bukkit.item.behavior.BukkitItemBehaviors;
import net.momirealms.craftengine.bukkit.item.recipe.BukkitRecipeManager;
@@ -154,7 +154,7 @@ public class BukkitCraftEngine extends CraftEngine {
super.worldManager = new BukkitWorldManager(this);
super.soundManager = new BukkitSoundManager(this);
super.vanillaLootManager = new BukkitVanillaLootManager(this);
this.imageManager = new BukkitImageManager(this);
this.fontManager = new BukkitFontManager(this);
super.enable();
// tick task
if (VersionHelper.isFolia()) {
@@ -216,7 +216,7 @@ public class BukkitCraftEngine extends CraftEngine {
// register template parser
this.packManager.registerConfigSectionParser(this.templateManager);
// register font parser
this.packManager.registerConfigSectionParser(this.imageManager);
this.packManager.registerConfigSectionParsers(this.fontManager.parsers());
// register item parser
this.packManager.registerConfigSectionParser(this.itemManager);
// register furniture parser

View File

@@ -7,6 +7,7 @@ import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.core.plugin.command.sender.Sender;
import net.momirealms.craftengine.core.plugin.command.sender.SenderFactory;
import net.momirealms.craftengine.core.util.Tristate;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.command.RemoteConsoleCommandSender;
@@ -79,6 +80,12 @@ public class BukkitSenderFactory extends SenderFactory<BukkitCraftEngine, Comman
return sender instanceof ConsoleCommandSender || sender instanceof RemoteConsoleCommandSender;
}
@SuppressWarnings("unchecked")
@Override
protected <C extends CommandSender> C consoleCommandSender() {
return (C) Bukkit.getConsoleSender();
}
@Override
public void close() {
super.close();

View File

@@ -18,7 +18,7 @@ import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.util.*;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.font.ImageManager;
import net.momirealms.craftengine.core.font.FontManager;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.config.ConfigManager;
import net.momirealms.craftengine.core.plugin.network.ConnectionState;
@@ -777,10 +777,10 @@ public class PacketConsumers {
if (!ConfigManager.filterAnvil()) return;
String message = (String) Reflections.field$ServerboundRenameItemPacket$name.get(packet);
if (message != null && !message.isEmpty()) {
ImageManager manager = CraftEngine.instance().imageManager();
FontManager manager = CraftEngine.instance().imageManager();
if (!manager.isDefaultFontInUse()) return;
// check bypass
if (((BukkitServerPlayer) user).hasPermission(ImageManager.BYPASS_ANVIL)) {
if (((BukkitServerPlayer) user).hasPermission(FontManager.BYPASS_ANVIL)) {
return;
}
runIfContainsIllegalCharacter(message, manager, (s) -> {
@@ -801,10 +801,10 @@ public class PacketConsumers {
try {
if (!ConfigManager.filterSign()) return;
String[] lines = (String[]) Reflections.field$ServerboundSignUpdatePacket$lines.get(packet);
ImageManager manager = CraftEngine.instance().imageManager();
FontManager manager = CraftEngine.instance().imageManager();
if (!manager.isDefaultFontInUse()) return;
// check bypass
if (((BukkitServerPlayer) user).hasPermission(ImageManager.BYPASS_SIGN)) {
if (((BukkitServerPlayer) user).hasPermission(FontManager.BYPASS_SIGN)) {
return;
}
for (int i = 0; i < lines.length; i++) {
@@ -827,10 +827,10 @@ public class PacketConsumers {
public static final TriConsumer<NetWorkUser, NMSPacketEvent, Object> EDIT_BOOK = (user, event, packet) -> {
try {
if (!ConfigManager.filterBook()) return;
ImageManager manager = CraftEngine.instance().imageManager();
FontManager manager = CraftEngine.instance().imageManager();
if (!manager.isDefaultFontInUse()) return;
// check bypass
if (((BukkitServerPlayer) user).hasPermission(ImageManager.BYPASS_BOOK)) {
if (((BukkitServerPlayer) user).hasPermission(FontManager.BYPASS_BOOK)) {
return;
}
@@ -879,7 +879,7 @@ public class PacketConsumers {
}
};
private static Pair<Boolean, String> processClientString(String original, ImageManager manager) {
private static Pair<Boolean, String> processClientString(String original, FontManager manager) {
if (original.isEmpty()) {
return Pair.of(false, original);
}
@@ -888,7 +888,7 @@ public class PacketConsumers {
boolean hasIllegal = false;
for (int i = 0; i < codepoints.length; i++) {
int codepoint = codepoints[i];
if (manager.isIllegalCharacter(codepoint)) {
if (manager.isIllegalCodepoint(codepoint)) {
newCodepoints[i] = '*';
hasIllegal = true;
} else {
@@ -898,14 +898,14 @@ public class PacketConsumers {
return hasIllegal ? Pair.of(true, new String(newCodepoints, 0, newCodepoints.length)) : Pair.of(false, original);
}
private static void runIfContainsIllegalCharacter(String string, ImageManager manager, Consumer<String> callback) {
private static void runIfContainsIllegalCharacter(String string, FontManager manager, Consumer<String> callback) {
if (string.isEmpty()) return;
int[] codepoints = CharacterUtils.charsToCodePoints(string.toCharArray());
int[] newCodepoints = new int[codepoints.length];
boolean hasIllegal = false;
for (int i = 0; i < codepoints.length; i++) {
int codepoint = codepoints[i];
if (!manager.isIllegalCharacter(codepoint)) {
if (!manager.isIllegalCodepoint(codepoint)) {
newCodepoints[i] = codepoint;
} else {
newCodepoints[i] = '*';