Get the Research Station learning things for players again

This commit is contained in:
pahimar 2015-02-16 13:09:03 -05:00
parent f174d1d6e7
commit 7c07144237
14 changed files with 420 additions and 80 deletions

View file

@ -6,6 +6,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import java.util.Set;
import java.util.UUID;
public class TransmutationKnowledgeRegistryProxy
{
@ -21,6 +22,18 @@ public class TransmutationKnowledgeRegistryProxy
return false;
}
public static boolean doesPlayerKnow(UUID playerUUID, ItemStack itemStack)
{
init();
if (ee3Mod != null)
{
return EE3Wrapper.ee3mod.getTransmutationKnowledgeRegistry().doesPlayerKnow(playerUUID, itemStack);
}
return false;
}
public static boolean canPlayerLearn(EntityPlayer entityPlayer, ItemStack itemStack)
{
init();
@ -33,6 +46,18 @@ public class TransmutationKnowledgeRegistryProxy
return false;
}
public static boolean canPlayerLearn(UUID playerUUID, ItemStack itemStack)
{
init();
if (ee3Mod != null)
{
return EE3Wrapper.ee3mod.getTransmutationKnowledgeRegistry().canPlayerLearn(playerUUID, itemStack);
}
return false;
}
public static Set<ItemStack> getPlayerKnownTransmutations(EntityPlayer entityPlayer)
{
init();
@ -45,6 +70,18 @@ public class TransmutationKnowledgeRegistryProxy
return null;
}
public static Set<ItemStack> getPlayerKnownTransmutations(UUID playerUUID)
{
init();
if (ee3Mod != null)
{
return EE3Wrapper.ee3mod.getTransmutationKnowledgeRegistry().getPlayersKnownTransmutations(playerUUID);
}
return null;
}
public static Set<ItemStack> getPlayerKnownTransmutationsFilteredStartsWith(EntityPlayer entityPlayer, String filterString)
{
init();
@ -57,6 +94,18 @@ public class TransmutationKnowledgeRegistryProxy
return null;
}
public static Set<ItemStack> getPlayerKnownTransmutationsFilteredStartsWith(UUID playerUUID, String filterString)
{
init();
if (ee3Mod != null)
{
return EE3Wrapper.ee3mod.getTransmutationKnowledgeRegistry().getPlayersKnownTransmutationsFilteredStartsWith(playerUUID, filterString);
}
return null;
}
public static Set<ItemStack> getPlayerKnownTransmutationsFilteredContains(EntityPlayer entityPlayer, String filterString)
{
init();
@ -69,6 +118,18 @@ public class TransmutationKnowledgeRegistryProxy
return null;
}
public static Set<ItemStack> getPlayerKnownTransmutationsFilteredContains(UUID playerUUID, String filterString)
{
init();
if (ee3Mod != null)
{
return EE3Wrapper.ee3mod.getTransmutationKnowledgeRegistry().getPlayersKnownTransmutationsFilteredContains(playerUUID, filterString);
}
return null;
}
public static void teachPlayer(EntityPlayer entityPlayer, ItemStack itemStack)
{
init();
@ -79,6 +140,16 @@ public class TransmutationKnowledgeRegistryProxy
}
}
public static void teachPlayer(UUID playerUUID, ItemStack itemStack)
{
init();
if (ee3Mod != null)
{
EE3Wrapper.ee3mod.getTransmutationKnowledgeRegistry().teachPlayer(playerUUID, itemStack);
}
}
public static void teachPlayerEverything(EntityPlayer entityPlayer)
{
init();
@ -89,6 +160,16 @@ public class TransmutationKnowledgeRegistryProxy
}
}
public static void teachPlayerEverything(UUID playerUUID)
{
init();
if (ee3Mod != null)
{
EE3Wrapper.ee3mod.getTransmutationKnowledgeRegistry().teachPlayerEverything(playerUUID);
}
}
public static void makePlayerForget(EntityPlayer entityPlayer, ItemStack itemStack)
{
init();
@ -99,6 +180,16 @@ public class TransmutationKnowledgeRegistryProxy
}
}
public static void makePlayerForget(UUID playerUUID, ItemStack itemStack)
{
init();
if (ee3Mod != null)
{
EE3Wrapper.ee3mod.getTransmutationKnowledgeRegistry().makePlayerForget(playerUUID, itemStack);
}
}
public static void makePlayerForgetEverything(EntityPlayer entityPlayer)
{
init();
@ -109,6 +200,16 @@ public class TransmutationKnowledgeRegistryProxy
}
}
public static void makePlayerForgetEverything(UUID playerUUID)
{
init();
if (ee3Mod != null)
{
EE3Wrapper.ee3mod.getTransmutationKnowledgeRegistry().makePlayerForgetEverything(playerUUID);
}
}
public static boolean doesTemplateKnow(ItemStack itemStack)
{
init();

View file

@ -33,7 +33,19 @@ public class GuiResearchStation extends GuiContainer
int yStart = (height - ySize) / 2;
this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize);
int scaleAdjustment = this.tileEntityResearchStation.getLearnProgressScaled(42);
this.drawTexturedModalRect(xStart + 107, yStart + 87, 0, 236, scaleAdjustment, 16);
if (this.tileEntityResearchStation.isItemKnown)
{
this.mc.getTextureManager().bindTexture(Textures.Gui.RESEARCH_STATION_GYLPH_1);
this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize);
}
else
{
int arrowScaleAdjustment = this.tileEntityResearchStation.getLearnProgressScaled(42);
this.drawTexturedModalRect(xStart + 107, yStart + 87, 0, 236, arrowScaleAdjustment, 16);
int scaleAdjustment = this.tileEntityResearchStation.getLearnProgressScaled(80);
this.mc.getTextureManager().bindTexture(Textures.Gui.RESEARCH_STATION_GYLPH_1);
this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, (ySize * scaleAdjustment) / 100);
}
}
}

View file

@ -1,5 +1,7 @@
package com.pahimar.ee3.inventory;
import com.pahimar.ee3.item.ItemAlchemicalTome;
import com.pahimar.ee3.knowledge.AbilityRegistry;
import com.pahimar.ee3.tileentity.TileEntityResearchStation;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -13,21 +15,43 @@ public class ContainerResearchStation extends ContainerEE
{
private TileEntityResearchStation tileEntityResearchStation;
private int lastItemLearnTime;
private boolean isItemStackKnown;
public ContainerResearchStation(InventoryPlayer inventoryPlayer, TileEntityResearchStation tileEntityResearchStation)
{
this.tileEntityResearchStation = tileEntityResearchStation;
this.addSlotToContainer(new Slot(tileEntityResearchStation, TileEntityResearchStation.ITEM_SLOT_INVENTORY_INDEX, 122, 84)
this.addSlotToContainer(new Slot(tileEntityResearchStation, TileEntityResearchStation.ITEM_SLOT_INVENTORY_INDEX, 79, 84)
{
@Override
public int getSlotStackLimit()
{
return 1;
}
@Override
public boolean isItemValid(ItemStack itemStack)
{
return AbilityRegistry.getInstance().isLearnable(itemStack);
}
});
// Add the player's inventory slots to the container
this.addSlotToContainer(new Slot(tileEntityResearchStation, TileEntityResearchStation.TOME_SLOT_INVENTORY_INDEX, 161, 84)
{
@Override
public int getSlotStackLimit()
{
return 1;
}
@Override
public boolean isItemValid(ItemStack itemStack)
{
return itemStack.getItem() instanceof ItemAlchemicalTome;
}
});
// Add the entityPlayer's inventory slots to the container
for (int inventoryRowIndex = 0; inventoryRowIndex < PLAYER_INVENTORY_ROWS; ++inventoryRowIndex)
{
for (int inventoryColumnIndex = 0; inventoryColumnIndex < PLAYER_INVENTORY_COLUMNS; ++inventoryColumnIndex)
@ -36,7 +60,7 @@ public class ContainerResearchStation extends ContainerEE
}
}
// Add the player's action bar slots to the container
// Add the entityPlayer's action bar slots to the container
for (int actionBarSlotIndex = 0; actionBarSlotIndex < PLAYER_INVENTORY_COLUMNS; ++actionBarSlotIndex)
{
this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 50 + actionBarSlotIndex * 18, 210));
@ -48,6 +72,14 @@ public class ContainerResearchStation extends ContainerEE
{
super.addCraftingToCrafters(iCrafting);
iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityResearchStation.itemLearnTime);
if (this.tileEntityResearchStation.isItemKnown)
{
iCrafting.sendProgressBarUpdate(this, 1, 1);
}
else
{
iCrafting.sendProgressBarUpdate(this, 1, 0);
}
}
@Override
@ -57,15 +89,28 @@ public class ContainerResearchStation extends ContainerEE
for (Object crafter : this.crafters)
{
ICrafting icrafting = (ICrafting) crafter;
ICrafting iCrafting = (ICrafting) crafter;
if (this.lastItemLearnTime != this.tileEntityResearchStation.itemLearnTime)
{
icrafting.sendProgressBarUpdate(this, 0, this.tileEntityResearchStation.itemLearnTime);
iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityResearchStation.itemLearnTime);
}
if (this.isItemStackKnown != this.tileEntityResearchStation.isItemKnown)
{
if (this.tileEntityResearchStation.isItemKnown)
{
iCrafting.sendProgressBarUpdate(this, 1, 1);
}
else
{
iCrafting.sendProgressBarUpdate(this, 1, 0);
}
}
}
this.lastItemLearnTime = this.tileEntityResearchStation.itemLearnTime;
this.isItemStackKnown = this.tileEntityResearchStation.isItemKnown;
}
@SideOnly(Side.CLIENT)
@ -75,6 +120,17 @@ public class ContainerResearchStation extends ContainerEE
{
this.tileEntityResearchStation.itemLearnTime = updatedValue;
}
else if (valueType == 1)
{
if (updatedValue == 1)
{
this.tileEntityResearchStation.isItemKnown = true;
}
else
{
this.tileEntityResearchStation.isItemKnown = false;
}
}
}
@Override
@ -90,7 +146,7 @@ public class ContainerResearchStation extends ContainerEE
/**
* If we are shift-clicking an item out of the Research Table's container,
* attempt to put it in the first available slot in the player's
* attempt to put it in the first available slot in the entityPlayer's
* inventory
*/
if (slotIndex < TileEntityResearchStation.INVENTORY_SIZE)
@ -102,9 +158,25 @@ public class ContainerResearchStation extends ContainerEE
}
else
{
if (!this.mergeItemStack(slotItemStack, TileEntityResearchStation.ITEM_SLOT_INVENTORY_INDEX, TileEntityResearchStation.INVENTORY_SIZE, false))
/**
* If the stack being shift-clicked into the Research Table's container
* is a fuel, first try to put it in the fuel slot. If it cannot
* be merged into the fuel slot, try to put it in the input
* slot.
*/
if (slotItemStack.getItem() instanceof ItemAlchemicalTome)
{
return null;
if (!this.mergeItemStack(slotItemStack, TileEntityResearchStation.TOME_SLOT_INVENTORY_INDEX, TileEntityResearchStation.INVENTORY_SIZE, false))
{
return null;
}
}
else
{
if (!this.mergeItemStack(slotItemStack, TileEntityResearchStation.ITEM_SLOT_INVENTORY_INDEX, TileEntityResearchStation.TOME_SLOT_INVENTORY_INDEX, false))
{
return null;
}
}
}

View file

@ -29,7 +29,10 @@ public class ItemAlchemicalTome extends ItemEE implements IOwnable
if (!world.isRemote)
{
// Set the owner
ItemHelper.setOwner(itemStack, entityPlayer);
if (!ItemHelper.hasOwner(itemStack))
{
ItemHelper.setOwner(itemStack, entityPlayer);
}
}
else
{

View file

@ -3,6 +3,7 @@ package com.pahimar.ee3.knowledge;
import com.google.gson.*;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.pahimar.ee3.exchange.EnergyValueRegistry;
import com.pahimar.ee3.exchange.WrappedStack;
import com.pahimar.ee3.reference.Files;
import com.pahimar.ee3.util.SerializationHelper;
@ -25,9 +26,6 @@ public class AbilityRegistry implements JsonSerializer<AbilityRegistry>, JsonDes
private AbilityRegistry()
{
// abilityDirectory = new File(SerializationHelper.getDataDirectory(), "abilities");
// abilityDirectory.mkdirs();
hasBeenModified = false;
notLearnableSet = new TreeSet<WrappedStack>();
notRecoverableSet = new TreeSet<WrappedStack>();
@ -60,7 +58,7 @@ public class AbilityRegistry implements JsonSerializer<AbilityRegistry>, JsonDes
if (WrappedStack.canBeWrapped(object))
{
WrappedStack wrappedObject = new WrappedStack(object);
return !notLearnableSet.contains(wrappedObject);
return !notLearnableSet.contains(wrappedObject) && EnergyValueRegistry.getInstance().hasEnergyValue(wrappedObject);
}
return false;
@ -91,7 +89,8 @@ public class AbilityRegistry implements JsonSerializer<AbilityRegistry>, JsonDes
{
if (WrappedStack.canBeWrapped(object))
{
return !notRecoverableSet.contains(new WrappedStack(object));
WrappedStack wrappedObject = new WrappedStack(object);
return !notRecoverableSet.contains(wrappedObject) && EnergyValueRegistry.getInstance().hasEnergyValue(wrappedObject);
}
return false;

View file

@ -169,11 +169,21 @@ public class TransmutationKnowledgeRegistry
{
if (entityPlayer != null)
{
loadPlayerFromDiskIfNeeded(entityPlayer);
return getPlayersKnownTransmutations(entityPlayer.getUniqueID());
}
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
return null;
}
public Set<ItemStack> getPlayersKnownTransmutations(UUID playerUUID)
{
if (playerUUID != null)
{
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(playerUUID))
{
return playerKnowledgeMap.get(entityPlayer.getUniqueID()).getKnownTransmutations();
return playerKnowledgeMap.get(playerUUID).getKnownTransmutations();
}
}
@ -184,11 +194,21 @@ public class TransmutationKnowledgeRegistry
{
if (entityPlayer != null)
{
loadPlayerFromDiskIfNeeded(entityPlayer);
return getPlayersKnownTransmutationsFilteredStartsWith(entityPlayer.getUniqueID(), startsWith);
}
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
return null;
}
public Set<ItemStack> getPlayersKnownTransmutationsFilteredStartsWith(UUID playerUUID, String startsWith)
{
if (playerUUID != null)
{
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(playerUUID))
{
return playerKnowledgeMap.get(entityPlayer.getUniqueID()).filterByNameStartsWith(startsWith);
return playerKnowledgeMap.get(playerUUID).filterByNameStartsWith(startsWith);
}
}
@ -199,11 +219,21 @@ public class TransmutationKnowledgeRegistry
{
if (entityPlayer != null)
{
loadPlayerFromDiskIfNeeded(entityPlayer);
return getPlayersKnownTransmutationsFilteredContains(entityPlayer.getUniqueID(), contains);
}
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
return null;
}
public Set<ItemStack> getPlayersKnownTransmutationsFilteredContains(UUID playerUUID, String contains)
{
if (playerUUID != null)
{
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(playerUUID))
{
return playerKnowledgeMap.get(entityPlayer.getUniqueID()).filterByNameContains(contains);
return playerKnowledgeMap.get(playerUUID).filterByNameContains(contains);
}
}
@ -225,17 +255,42 @@ public class TransmutationKnowledgeRegistry
return false;
}
public boolean doesPlayerKnow(UUID playerUUID, ItemStack itemStack)
{
if (playerUUID != null && itemStack != null)
{
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(playerUUID))
{
return playerKnowledgeMap.get(playerUUID).isKnown(itemStack);
}
}
return false;
}
public boolean canPlayerLearn(EntityPlayer entityPlayer, ItemStack itemStack)
{
if (entityPlayer != null && itemStack != null)
if (entityPlayer != null)
{
return canPlayerLearn(entityPlayer.getUniqueID(), itemStack);
}
return false;
}
public boolean canPlayerLearn(UUID playerUUID, ItemStack itemStack)
{
if (playerUUID != null && itemStack != null)
{
if (AbilityRegistry.getInstance().isLearnable(itemStack))
{
loadPlayerFromDiskIfNeeded(entityPlayer);
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
if (playerKnowledgeMap.containsKey(playerUUID))
{
return !playerKnowledgeMap.get(entityPlayer.getUniqueID()).isKnown(itemStack);
return !playerKnowledgeMap.get(playerUUID).isKnown(itemStack);
}
}
}
@ -245,12 +300,21 @@ public class TransmutationKnowledgeRegistry
public void teachPlayer(EntityPlayer entityPlayer, ItemStack itemStack)
{
if (entityPlayer != null && itemStack != null && canPlayerLearn(entityPlayer, itemStack))
if (entityPlayer != null)
{
loadPlayerFromDiskIfNeeded(entityPlayer);
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
teachPlayer(entityPlayer.getUniqueID(), itemStack);
}
}
public void teachPlayer(UUID playerUUID, ItemStack itemStack)
{
if (playerUUID != null && itemStack != null && canPlayerLearn(playerUUID, itemStack))
{
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(playerUUID))
{
playerKnowledgeMap.get(entityPlayer.getUniqueID()).learnTransmutation(itemStack);
playerKnowledgeMap.get(playerUUID).learnTransmutation(itemStack);
savePlayerKnowledgeToDisk(playerUUID);
}
}
}
@ -259,11 +323,20 @@ public class TransmutationKnowledgeRegistry
{
if (entityPlayer != null)
{
loadPlayerFromDiskIfNeeded(entityPlayer);
teachPlayerEverything(entityPlayer.getUniqueID());
}
}
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
public void teachPlayerEverything(UUID playerUUID)
{
if (playerUUID != null)
{
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(playerUUID))
{
playerKnowledgeMap.get(entityPlayer.getUniqueID()).setCanTransmuteEverything(true);
playerKnowledgeMap.get(playerUUID).setCanTransmuteEverything(true);
savePlayerKnowledgeToDisk(playerUUID);
}
}
}
@ -272,22 +345,40 @@ public class TransmutationKnowledgeRegistry
{
if (entityPlayer != null)
{
loadPlayerFromDiskIfNeeded(entityPlayer);
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
setPlayerCanTransmuteEverything(entityPlayer.getUniqueID(), canTransmuteEverything);
}
}
public void setPlayerCanTransmuteEverything(UUID playerUUID, boolean canTransmuteEverything)
{
if (playerUUID != null)
{
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(playerUUID))
{
playerKnowledgeMap.get(entityPlayer.getUniqueID()).setCanTransmuteEverything(canTransmuteEverything);
playerKnowledgeMap.get(playerUUID).setCanTransmuteEverything(canTransmuteEverything);
savePlayerKnowledgeToDisk(playerUUID);
}
}
}
public void makePlayerForget(EntityPlayer entityPlayer, ItemStack itemStack)
{
if (entityPlayer != null && itemStack != null && doesPlayerKnow(entityPlayer, itemStack))
if (entityPlayer != null)
{
loadPlayerFromDiskIfNeeded(entityPlayer);
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
makePlayerForget(entityPlayer.getUniqueID(), itemStack);
}
}
public void makePlayerForget(UUID playerUUID, ItemStack itemStack)
{
if (playerUUID != null && itemStack != null && doesPlayerKnow(playerUUID, itemStack))
{
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(playerUUID))
{
playerKnowledgeMap.get(entityPlayer.getUniqueID()).forgetTransmutation(itemStack);
playerKnowledgeMap.get(playerUUID).forgetTransmutation(itemStack);
savePlayerKnowledgeToDisk(playerUUID);
}
}
}
@ -296,10 +387,19 @@ public class TransmutationKnowledgeRegistry
{
if (entityPlayer != null)
{
loadPlayerFromDiskIfNeeded(entityPlayer);
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
makePlayerForgetEverything(entityPlayer.getUniqueID());
}
}
public void makePlayerForgetEverything(UUID playerUUID)
{
if (playerUUID != null)
{
loadPlayerFromDiskIfNeeded(playerUUID);
if (playerKnowledgeMap.containsKey(playerUUID))
{
playerKnowledgeMap.get(entityPlayer.getUniqueID()).forgetAllTransmutations();
playerKnowledgeMap.get(playerUUID).forgetAllTransmutations();
savePlayerKnowledgeToDisk(playerUUID);
}
}
}
@ -349,48 +449,72 @@ public class TransmutationKnowledgeRegistry
public void loadPlayerFromDiskIfNeeded(EntityPlayer entityPlayer)
{
if (entityPlayer != null && entityPlayer.getUniqueID() != null && playerKnowledgeDirectory != null)
if (entityPlayer != null && entityPlayer.getUniqueID() != null)
{
if (!playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
loadPlayerFromDiskIfNeeded(entityPlayer.getUniqueID());
}
}
public void loadPlayerFromDiskIfNeeded(UUID playerUUID)
{
if (playerUUID != null && playerKnowledgeDirectory != null && !playerKnowledgeMap.containsKey(playerUUID))
{
TransmutationKnowledge playerTransmutationKnowledge = new TransmutationKnowledge();
File playerKnowledgeFile = new File(playerKnowledgeDirectory, playerUUID.toString() + ".json");
if (playerKnowledgeFile.exists() && playerKnowledgeFile.isFile())
{
TransmutationKnowledge playerTransmutationKnowledge = new TransmutationKnowledge();
File playerKnowledgeFile = new File(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json");
if (playerKnowledgeFile.exists() && playerKnowledgeFile.isFile())
{
playerTransmutationKnowledge = SerializationHelper.readTransmutationKnowledgeFromFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json");
}
playerKnowledgeMap.put(entityPlayer.getUniqueID(), playerTransmutationKnowledge);
playerTransmutationKnowledge = SerializationHelper.readTransmutationKnowledgeFromFile(playerKnowledgeDirectory, playerUUID.toString() + ".json");
}
playerKnowledgeMap.put(playerUUID, playerTransmutationKnowledge);
}
}
public void unloadPlayer(EntityPlayer entityPlayer)
{
if (entityPlayer != null && entityPlayer.getUniqueID() != null)
if (entityPlayer != null)
{
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
unloadPlayer(entityPlayer.getUniqueID());
}
}
public void unloadPlayer(UUID playerUUID)
{
if (playerUUID != null)
{
if (playerKnowledgeMap.containsKey(playerUUID))
{
savePlayerKnowledgeToDisk(entityPlayer);
playerKnowledgeMap.remove(entityPlayer.getUniqueID());
savePlayerKnowledgeToDisk(playerUUID);
playerKnowledgeMap.remove(playerUUID);
}
}
}
public void savePlayerKnowledgeToDisk(EntityPlayer entityPlayer)
{
if (entityPlayer != null && entityPlayer.getUniqueID() != null && playerKnowledgeDirectory != null)
if (entityPlayer != null && entityPlayer.getUniqueID() != null)
{
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()) && playerKnowledgeMap.get(entityPlayer.getUniqueID()) != null && playerKnowledgeMap.get(entityPlayer.getUniqueID()).hasBeenModified())
savePlayerKnowledgeToDisk(entityPlayer.getUniqueID());
}
}
public void savePlayerKnowledgeToDisk(UUID playerUUID)
{
if (playerUUID != null && playerKnowledgeDirectory != null)
{
if (playerKnowledgeMap.containsKey(playerUUID) && playerKnowledgeMap.get(playerUUID) != null)
{
SerializationHelper.writeTransmutationKnowledgeToFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json", playerKnowledgeMap.get(entityPlayer.getUniqueID()));
if (playerKnowledgeMap.get(playerUUID).hasBeenModified())
{
SerializationHelper.writeTransmutationKnowledgeToFile(playerKnowledgeDirectory, playerUUID.toString() + ".json", playerKnowledgeMap.get(playerUUID));
}
}
else
{
loadPlayerFromDiskIfNeeded(entityPlayer);
SerializationHelper.writeTransmutationKnowledgeToFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json", new TransmutationKnowledge());
loadPlayerFromDiskIfNeeded(playerUUID);
SerializationHelper.writeTransmutationKnowledgeToFile(playerKnowledgeDirectory, playerUUID.toString() + ".json", new TransmutationKnowledge());
}
}
}

View file

@ -39,6 +39,8 @@ public final class Textures
public static final ResourceLocation ALCHEMICAL_CHEST_LARGE = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "alchemicalChest_large.png");
public static final ResourceLocation GLASS_BELL = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "glassBell.png");
public static final ResourceLocation RESEARCH_STATION = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "researchStation.png");
public static final ResourceLocation RESEARCH_STATION_GYLPH_1 = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "researchStation_Glyph1.png");
public static final ResourceLocation RESEARCH_STATION_GYLPH_2 = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "researchStation_Glyph2.png");
public static final ResourceLocation AUGMENTATION_TABLE = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "augmentationTable.png");
public static final ResourceLocation PORTABLE_CRAFTING = new ResourceLocation("textures/gui/container/crafting_table.png");
public static final ResourceLocation ALCHEMICAL_TOME = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "alchemicalTome.png");

View file

@ -1,6 +1,9 @@
package com.pahimar.ee3.tileentity;
import com.pahimar.ee3.knowledge.AbilityRegistry;
import com.pahimar.ee3.knowledge.TransmutationKnowledgeRegistry;
import com.pahimar.ee3.reference.Names;
import com.pahimar.ee3.util.ItemHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
@ -9,12 +12,16 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import java.util.UUID;
public class TileEntityResearchStation extends TileEntityEE implements IInventory
{
public static final int INVENTORY_SIZE = 1;
public static final int INVENTORY_SIZE = 2;
public static final int ITEM_SLOT_INVENTORY_INDEX = 0;
public static final int TOME_SLOT_INVENTORY_INDEX = 1;
public int itemLearnTime;
public boolean isItemKnown;
private ItemStack[] inventory;
public TileEntityResearchStation()
@ -117,7 +124,7 @@ public class TileEntityResearchStation extends TileEntityEE implements IInventor
@Override
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack)
{
return false;
return slotIndex == ITEM_SLOT_INVENTORY_INDEX && AbilityRegistry.getInstance().isLearnable(itemStack);
}
@Override
@ -187,12 +194,34 @@ public class TileEntityResearchStation extends TileEntityEE implements IInventor
{
this.itemLearnTime = 0;
}
isItemKnown = isItemStackKnown();
}
}
private boolean canLearnItemStack()
{
// return ItemTransmutationKnowledgeHelper.canLearnItemStack(inventory[ITEM_SLOT_INVENTORY_INDEX], inventory[TOME_SLOT_INVENTORY_INDEX]);
ItemStack alchemicalTome = inventory[TOME_SLOT_INVENTORY_INDEX];
UUID playerUUID = ItemHelper.getOwnerUUID(alchemicalTome);
if (alchemicalTome != null && playerUUID != null)
{
return TransmutationKnowledgeRegistry.getInstance().canPlayerLearn(playerUUID, inventory[ITEM_SLOT_INVENTORY_INDEX]);
}
return false;
}
private boolean isItemStackKnown()
{
ItemStack alchemicalTome = inventory[TOME_SLOT_INVENTORY_INDEX];
UUID playerUUID = ItemHelper.getOwnerUUID(alchemicalTome);
if (alchemicalTome != null && playerUUID != null)
{
return TransmutationKnowledgeRegistry.getInstance().doesPlayerKnow(playerUUID, inventory[ITEM_SLOT_INVENTORY_INDEX]);
}
return false;
}
@ -200,16 +229,14 @@ public class TileEntityResearchStation extends TileEntityEE implements IInventor
{
if (this.canLearnItemStack())
{
// PlayerKnowledge playerKnowledge = PlayerKnowledge.readPlayerKnowledgeFromNBT(this.inventory[TOME_SLOT_INVENTORY_INDEX].getTagCompound());
// playerKnowledge.learnTransmutation(this.inventory[ITEM_SLOT_INVENTORY_INDEX]);
// playerKnowledge.writeToNBT(this.inventory[TOME_SLOT_INVENTORY_INDEX].getTagCompound());
//
// this.inventory[ITEM_SLOT_INVENTORY_INDEX].stackSize--;
//
// if (this.inventory[ITEM_SLOT_INVENTORY_INDEX].stackSize <= 0)
// {
// this.inventory[ITEM_SLOT_INVENTORY_INDEX] = null;
// }
TransmutationKnowledgeRegistry.getInstance().teachPlayer(ItemHelper.getOwnerUUID(inventory[TOME_SLOT_INVENTORY_INDEX]), inventory[ITEM_SLOT_INVENTORY_INDEX]);
this.inventory[ITEM_SLOT_INVENTORY_INDEX].stackSize--;
if (this.inventory[ITEM_SLOT_INVENTORY_INDEX].stackSize <= 0)
{
this.inventory[ITEM_SLOT_INVENTORY_INDEX] = null;
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB