mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-28 11:44:42 +02:00
Fixing like 10 memory leaks Fixes #4670
This commit is contained in:
@ -39,6 +39,19 @@ public final class BlockUtils {
|
||||
blockState.setMetadata(MetadataConstants.METADATA_KEY_BONUS_DROPS, new BonusDropMeta(1, mcMMO.p));
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleans up some block metadata when a block breaks and the metadata is no longer needed
|
||||
* This also sets the blocks coords to false in our chunk store
|
||||
* @param block target block
|
||||
*/
|
||||
public static void cleanupBlockMetadata(Block block) {
|
||||
if(block.hasMetadata(MetadataConstants.METADATA_KEY_REPLANT)) {
|
||||
block.removeMetadata(MetadataConstants.METADATA_KEY_REPLANT, mcMMO.p);
|
||||
}
|
||||
|
||||
mcMMO.getPlaceStore().setFalse(block);
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks a block to drop extra copies of items
|
||||
* @param blockState target blockstate
|
||||
|
@ -42,7 +42,7 @@ public class MetadataConstants {
|
||||
public static final @NotNull String METADATA_KEY_PLAYER_TAMED_MOB = "mcmmo_player_tamed_mob";
|
||||
public static final @NotNull String METADATA_KEY_VILLAGER_TRADE_ORIGIN_ITEM = "mcmmo_villager_trade_origin_item";
|
||||
public static final @NotNull String METADATA_KEY_EXPLOITED_ENDERMEN = "mcmmo_exploited_endermen";
|
||||
public static final @NotNull String METADATA_KEY_CUSTOM_NAME_KEY = "mcmmo_custom_name";
|
||||
public static final @NotNull String METADATA_KEY_CUSTOM_NAME = "mcmmo_custom_name";
|
||||
public static final @NotNull String METADATA_KEY_OLD_NAME_KEY = "mcmmo_old_name";
|
||||
public static final @NotNull String METADATA_KEY_RUPTURE = "mcmmo_rupture";
|
||||
|
||||
@ -61,10 +61,11 @@ public class MetadataConstants {
|
||||
temp.add(MetadataConstants.METADATA_KEY_PLAYER_BRED_MOB);
|
||||
temp.add(MetadataConstants.METADATA_KEY_PLAYER_TAMED_MOB);
|
||||
temp.add(MetadataConstants.METADATA_KEY_EXPLOITED_ENDERMEN);
|
||||
temp.add(MetadataConstants.METADATA_KEY_CUSTOM_NAME_KEY);
|
||||
temp.add(MetadataConstants.METADATA_KEY_CUSTOM_NAME);
|
||||
temp.add(MetadataConstants.METADATA_KEY_RUPTURE);
|
||||
temp.add(MetadataConstants.METADATA_KEY_EXPLOSION_FROM_RUPTURE);
|
||||
temp.add(MetadataConstants.METADATA_KEY_OLD_NAME_KEY);
|
||||
temp.add(MetadataConstants.METADATA_KEY_DODGE_TRACKER);
|
||||
|
||||
MOB_METADATA_KEYS = ImmutableSet.copyOf(temp);
|
||||
}
|
||||
|
@ -73,11 +73,11 @@ public final class MobHealthbarUtils {
|
||||
boolean updateName = !ChatColor.stripColor(oldName).equalsIgnoreCase(ChatColor.stripColor(newName));
|
||||
|
||||
if (updateName) {
|
||||
target.setMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME_KEY, new FixedMetadataValue(mcMMO.p, oldName));
|
||||
target.setMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME, new FixedMetadataValue(mcMMO.p, oldName));
|
||||
target.setMetadata(MetadataConstants.METADATA_KEY_NAME_VISIBILITY, new FixedMetadataValue(mcMMO.p, oldNameVisible));
|
||||
}
|
||||
else if (!target.hasMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME_KEY)) {
|
||||
target.setMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME_KEY, new FixedMetadataValue(mcMMO.p, ""));
|
||||
else if (!target.hasMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME)) {
|
||||
target.setMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME, new FixedMetadataValue(mcMMO.p, ""));
|
||||
target.setMetadata(MetadataConstants.METADATA_KEY_NAME_VISIBILITY, new FixedMetadataValue(mcMMO.p, false));
|
||||
}
|
||||
|
||||
|
@ -13,9 +13,9 @@ public class TransientMetadataTools {
|
||||
|
||||
public void cleanLivingEntityMetadata(@NotNull LivingEntity entity) {
|
||||
//Since it's not written anywhere, apparently the GC won't touch objects with metadata still present on them
|
||||
if (entity.hasMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME_KEY)) {
|
||||
entity.setCustomName(entity.getMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME_KEY).get(0).asString());
|
||||
entity.removeMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME_KEY, pluginRef);
|
||||
if (entity.hasMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME)) {
|
||||
entity.setCustomName(entity.getMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME).get(0).asString());
|
||||
entity.removeMetadata(MetadataConstants.METADATA_KEY_CUSTOM_NAME, pluginRef);
|
||||
}
|
||||
|
||||
// if(entity.hasMetadata(MetadataConstants.METADATA_KEY_OLD_NAME_KEY)) {
|
||||
|
Reference in New Issue
Block a user