Get the Research Station learning things for players again
This commit is contained in:
parent
f174d1d6e7
commit
7c07144237
14 changed files with 420 additions and 80 deletions
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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 |
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue