From e056caee88131430adb50e2fd5eb5bf62d6d26e9 Mon Sep 17 00:00:00 2001 From: Pahimar Date: Wed, 1 Jun 2016 15:07:40 -0400 Subject: [PATCH] Added more TRACE level logging to PlayerKnowledgeRegistry Improved logic in BlacklistRegistry.isLearnable and BlacklistRegistry.isExchangeable to check it the itemstack is a member of an ore dictionary entry which is blacklisted. If it is, it's not learnable/exchange (cherry picked from commit 7ac01e09a6b37561c6bd2fc34fe1768f682cf0cd) --- .../ee3/blacklist/BlacklistRegistry.java | 36 +++++++++++++++++-- .../knowledge/PlayerKnowledgeRegistry.java | 12 +++++++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/pahimar/ee3/blacklist/BlacklistRegistry.java b/src/main/java/com/pahimar/ee3/blacklist/BlacklistRegistry.java index c82fa6c1..08271697 100644 --- a/src/main/java/com/pahimar/ee3/blacklist/BlacklistRegistry.java +++ b/src/main/java/com/pahimar/ee3/blacklist/BlacklistRegistry.java @@ -1,9 +1,11 @@ package com.pahimar.ee3.blacklist; import com.pahimar.ee3.api.exchange.EnergyValueRegistryProxy; +import com.pahimar.ee3.exchange.OreStack; import com.pahimar.ee3.exchange.WrappedStack; import com.pahimar.ee3.util.LoaderHelper; import com.pahimar.ee3.util.LogHelper; +import com.pahimar.ee3.util.OreDictionaryHelper; import com.pahimar.ee3.util.SerializationHelper; import cpw.mods.fml.common.Loader; import net.minecraft.item.ItemStack; @@ -12,6 +14,7 @@ import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.MarkerManager; import java.io.File; +import java.util.Collection; import java.util.Collections; import java.util.Set; import java.util.TreeSet; @@ -81,7 +84,20 @@ public class BlacklistRegistry { return false; } else { - return !knowledgeBlacklist.contains(wrappedObject) && EnergyValueRegistryProxy.hasEnergyValue(wrappedObject); + if (EnergyValueRegistryProxy.hasEnergyValue(wrappedObject)) { + if (knowledgeBlacklist.contains(wrappedObject)) { + return false; + } + else if (object instanceof ItemStack){ + Collection oreNames = OreDictionaryHelper.getOreNames((ItemStack) object); + for (String oreName : oreNames) { + boolean isNotLearnable = !isLearnable(new OreStack(oreName)); + if (isNotLearnable) { + return false; + } + } + } + } } } @@ -98,8 +114,22 @@ public class BlacklistRegistry { if (WrappedStack.canBeWrapped(object)) { - WrappedStack wrappedStack = WrappedStack.wrap(object, 1); - return !exchangeBlacklist.contains(wrappedStack) && EnergyValueRegistryProxy.hasEnergyValue(wrappedStack); + WrappedStack wrappedObject = WrappedStack.wrap(object, 1); + + if (EnergyValueRegistryProxy.hasEnergyValue(wrappedObject)) { + if (exchangeBlacklist.contains(wrappedObject)) { + return false; + } + else if (object instanceof ItemStack){ + Collection oreNames = OreDictionaryHelper.getOreNames((ItemStack) object); + for (String oreName : oreNames) { + boolean isNotLearnable = !isLearnable(new OreStack(oreName)); + if (isNotLearnable) { + return false; + } + } + } + } } return false; diff --git a/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledgeRegistry.java b/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledgeRegistry.java index 0ee52ceb..414d4704 100644 --- a/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledgeRegistry.java +++ b/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledgeRegistry.java @@ -11,6 +11,8 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.MarkerManager; import java.io.File; import java.io.FileNotFoundException; @@ -28,6 +30,11 @@ public class PlayerKnowledgeRegistry { public static File templatePlayerKnowledgeFile; + public static final Marker PLAYER_KNOWLEDGE_MARKER = MarkerManager.getMarker("EE3_PLAYER_KNOWLEDGE", LogHelper.MOD_MARKER); + public static final Marker PLAYER_LEARN_KNOWLEDGE = MarkerManager.getMarker("EE3_PLAYER_TEACH_KNOWLEDGE", PLAYER_KNOWLEDGE_MARKER); + public static final Marker PLAYER_FORGET_KNOWLEDGE_MARKER = MarkerManager.getMarker("EE3_PLAYER_FORGET_KNOWLEDGE", PLAYER_KNOWLEDGE_MARKER); + public static final Marker PLAYER_FORGET_ALL_KNOWLEDGE_MARKER = MarkerManager.getMarker("EE3_PLAYER_FORGET_ALL_KNOWLEDGE", PLAYER_FORGET_KNOWLEDGE_MARKER); + private PlayerKnowledgeRegistry() { playerKnowledgeMap = new TreeMap<>(Comparators.STRING_COMPARATOR); @@ -116,6 +123,7 @@ public class PlayerKnowledgeRegistry { if (getPlayerKnowledge(playerName) != null) { getPlayerKnowledge(playerName).learn(object); + LogHelper.trace(PLAYER_LEARN_KNOWLEDGE, "Player {} learned {}", playerName, object); save(playerName); } } @@ -148,6 +156,7 @@ public class PlayerKnowledgeRegistry { if (playerKnowledge != null) { for (Object object : objects){ getPlayerKnowledge(playerName).learn(object); + LogHelper.trace(PLAYER_LEARN_KNOWLEDGE, "Player {} learned {}", playerName, object); } save(playerName); } @@ -177,6 +186,7 @@ public class PlayerKnowledgeRegistry { if (getPlayerKnowledge(playerName) != null) { getPlayerKnowledge(playerName).forget(object); + LogHelper.trace(PLAYER_FORGET_KNOWLEDGE_MARKER, "Player {} forgot {}", playerName, object); save(playerName); } } @@ -209,6 +219,7 @@ public class PlayerKnowledgeRegistry { if (playerKnowledge != null) { for (Object object : objects) { getPlayerKnowledge(playerName).forget(object); + LogHelper.trace(PLAYER_FORGET_KNOWLEDGE_MARKER, "Player {} forgot {}", playerName, object); } save(playerName); } @@ -237,6 +248,7 @@ public class PlayerKnowledgeRegistry { if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { if (playerName != null && !playerName.isEmpty()) { playerKnowledgeMap.put(playerName, new PlayerKnowledge()); + LogHelper.trace(PLAYER_FORGET_ALL_KNOWLEDGE_MARKER, "Player {} forget everything", playerName); save(playerName); } }