9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-25 01:49:30 +00:00

Merge pull request #93 from jhqwqmc/dev

fix(network): 修复内存泄漏
This commit is contained in:
XiaoMoMi
2025-04-08 15:42:29 +08:00
committed by GitHub
4 changed files with 41 additions and 3 deletions

View File

@@ -8,6 +8,7 @@ repositories {
maven("https://repo.infernalsuite.com/repository/maven-snapshots/") // slime world
maven("https://repo.momirealms.net/releases/")
maven("https://mvn.lumine.io/repository/maven-public/") // model engine
maven("https://nexus.phoenixdevt.fr/repository/maven-public/") // mmoitems
}
dependencies {
@@ -28,6 +29,9 @@ dependencies {
compileOnly("com.ticxo.modelengine:ModelEngine:R4.0.8")
// BetterModels
compileOnly("io.github.toxicity188:BetterModel:1.4.2")
// MMOItems
compileOnly("net.Indyuce:MMOItems-API:6.10-SNAPSHOT")
compileOnly("io.lumine:MythicLib-dist:1.6.2-SNAPSHOT")
}
java {

View File

@@ -0,0 +1,28 @@
package net.momirealms.craftengine.bukkit.compatibility.item;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.Type;
import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem;
import net.momirealms.craftengine.core.item.ExternalItemProvider;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
import java.util.Locale;
import static java.util.Objects.requireNonNull;
public class MMOItemsProvider implements ExternalItemProvider<ItemStack> {
@Override
public String plugin() {
return "MMOItems";
}
@Override
public @Nullable ItemStack build(String id, ItemBuildContext context) {
String[] split = id.split(":", 2);
MMOItem mmoItem = MMOItems.plugin.getMMOItem(Type.get(split[0]), split[1].toUpperCase(Locale.ENGLISH));
return mmoItem == null ? new ItemStack(Material.AIR) : requireNonNull(mmoItem.newBuilder().build());
}
}

View File

@@ -1,5 +1,6 @@
package net.momirealms.craftengine.bukkit.item;
import net.momirealms.craftengine.bukkit.compatibility.item.MMOItemsProvider;
import net.momirealms.craftengine.bukkit.compatibility.item.NeigeItemsProvider;
import net.momirealms.craftengine.bukkit.item.behavior.AxeItemBehavior;
import net.momirealms.craftengine.bukkit.item.behavior.BoneMealItemBehavior;
@@ -89,6 +90,9 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
if (this.plugin.isPluginEnabled("NeigeItems")) {
registerExternalItemProvider(new NeigeItemsProvider());
}
if (this.plugin.isPluginEnabled("MMOItems")) {
registerExternalItemProvider(new MMOItemsProvider());
}
}
@Override

View File

@@ -1100,10 +1100,12 @@ public class PacketConsumers {
try {
IntList intList = FastNMS.INSTANCE.field$ClientboundRemoveEntitiesPacket$entityIds(packet);
for (int i = 0, size = intList.size(); i < size; i++) {
List<Integer> entities = user.furnitureView().remove(intList.getInt(i));
int entityId = intList.getInt(i);
user.entityView().remove(entityId);
List<Integer> entities = user.furnitureView().remove(entityId);
if (entities == null) continue;
for (int entityId : entities) {
intList.add(entityId);
for (int subEntityId : entities) {
intList.add(subEntityId);
}
}
} catch (Exception e) {