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 net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class TransmutationKnowledgeRegistryProxy
|
public class TransmutationKnowledgeRegistryProxy
|
||||||
{
|
{
|
||||||
|
@ -21,6 +22,18 @@ public class TransmutationKnowledgeRegistryProxy
|
||||||
return false;
|
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)
|
public static boolean canPlayerLearn(EntityPlayer entityPlayer, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
@ -33,6 +46,18 @@ public class TransmutationKnowledgeRegistryProxy
|
||||||
return false;
|
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)
|
public static Set<ItemStack> getPlayerKnownTransmutations(EntityPlayer entityPlayer)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
@ -45,6 +70,18 @@ public class TransmutationKnowledgeRegistryProxy
|
||||||
return null;
|
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)
|
public static Set<ItemStack> getPlayerKnownTransmutationsFilteredStartsWith(EntityPlayer entityPlayer, String filterString)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
@ -57,6 +94,18 @@ public class TransmutationKnowledgeRegistryProxy
|
||||||
return null;
|
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)
|
public static Set<ItemStack> getPlayerKnownTransmutationsFilteredContains(EntityPlayer entityPlayer, String filterString)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
@ -69,6 +118,18 @@ public class TransmutationKnowledgeRegistryProxy
|
||||||
return null;
|
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)
|
public static void teachPlayer(EntityPlayer entityPlayer, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
init();
|
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)
|
public static void teachPlayerEverything(EntityPlayer entityPlayer)
|
||||||
{
|
{
|
||||||
init();
|
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)
|
public static void makePlayerForget(EntityPlayer entityPlayer, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
init();
|
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)
|
public static void makePlayerForgetEverything(EntityPlayer entityPlayer)
|
||||||
{
|
{
|
||||||
init();
|
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)
|
public static boolean doesTemplateKnow(ItemStack itemStack)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
|
|
@ -33,7 +33,19 @@ public class GuiResearchStation extends GuiContainer
|
||||||
int yStart = (height - ySize) / 2;
|
int yStart = (height - ySize) / 2;
|
||||||
this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize);
|
this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
int scaleAdjustment = this.tileEntityResearchStation.getLearnProgressScaled(42);
|
if (this.tileEntityResearchStation.isItemKnown)
|
||||||
this.drawTexturedModalRect(xStart + 107, yStart + 87, 0, 236, scaleAdjustment, 16);
|
{
|
||||||
|
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;
|
package com.pahimar.ee3.inventory;
|
||||||
|
|
||||||
|
import com.pahimar.ee3.item.ItemAlchemicalTome;
|
||||||
|
import com.pahimar.ee3.knowledge.AbilityRegistry;
|
||||||
import com.pahimar.ee3.tileentity.TileEntityResearchStation;
|
import com.pahimar.ee3.tileentity.TileEntityResearchStation;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
@ -13,21 +15,43 @@ public class ContainerResearchStation extends ContainerEE
|
||||||
{
|
{
|
||||||
private TileEntityResearchStation tileEntityResearchStation;
|
private TileEntityResearchStation tileEntityResearchStation;
|
||||||
private int lastItemLearnTime;
|
private int lastItemLearnTime;
|
||||||
|
private boolean isItemStackKnown;
|
||||||
|
|
||||||
public ContainerResearchStation(InventoryPlayer inventoryPlayer, TileEntityResearchStation tileEntityResearchStation)
|
public ContainerResearchStation(InventoryPlayer inventoryPlayer, TileEntityResearchStation tileEntityResearchStation)
|
||||||
{
|
{
|
||||||
this.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
|
@Override
|
||||||
public int getSlotStackLimit()
|
public int getSlotStackLimit()
|
||||||
{
|
{
|
||||||
return 1;
|
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 inventoryRowIndex = 0; inventoryRowIndex < PLAYER_INVENTORY_ROWS; ++inventoryRowIndex)
|
||||||
{
|
{
|
||||||
for (int inventoryColumnIndex = 0; inventoryColumnIndex < PLAYER_INVENTORY_COLUMNS; ++inventoryColumnIndex)
|
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)
|
for (int actionBarSlotIndex = 0; actionBarSlotIndex < PLAYER_INVENTORY_COLUMNS; ++actionBarSlotIndex)
|
||||||
{
|
{
|
||||||
this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 50 + actionBarSlotIndex * 18, 210));
|
this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 50 + actionBarSlotIndex * 18, 210));
|
||||||
|
@ -48,6 +72,14 @@ public class ContainerResearchStation extends ContainerEE
|
||||||
{
|
{
|
||||||
super.addCraftingToCrafters(iCrafting);
|
super.addCraftingToCrafters(iCrafting);
|
||||||
iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityResearchStation.itemLearnTime);
|
iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityResearchStation.itemLearnTime);
|
||||||
|
if (this.tileEntityResearchStation.isItemKnown)
|
||||||
|
{
|
||||||
|
iCrafting.sendProgressBarUpdate(this, 1, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iCrafting.sendProgressBarUpdate(this, 1, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -57,15 +89,28 @@ public class ContainerResearchStation extends ContainerEE
|
||||||
|
|
||||||
for (Object crafter : this.crafters)
|
for (Object crafter : this.crafters)
|
||||||
{
|
{
|
||||||
ICrafting icrafting = (ICrafting) crafter;
|
ICrafting iCrafting = (ICrafting) crafter;
|
||||||
|
|
||||||
if (this.lastItemLearnTime != this.tileEntityResearchStation.itemLearnTime)
|
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.lastItemLearnTime = this.tileEntityResearchStation.itemLearnTime;
|
||||||
|
this.isItemStackKnown = this.tileEntityResearchStation.isItemKnown;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -75,6 +120,17 @@ public class ContainerResearchStation extends ContainerEE
|
||||||
{
|
{
|
||||||
this.tileEntityResearchStation.itemLearnTime = updatedValue;
|
this.tileEntityResearchStation.itemLearnTime = updatedValue;
|
||||||
}
|
}
|
||||||
|
else if (valueType == 1)
|
||||||
|
{
|
||||||
|
if (updatedValue == 1)
|
||||||
|
{
|
||||||
|
this.tileEntityResearchStation.isItemKnown = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.tileEntityResearchStation.isItemKnown = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -90,7 +146,7 @@ public class ContainerResearchStation extends ContainerEE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If we are shift-clicking an item out of the Research Table's container,
|
* 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
|
* inventory
|
||||||
*/
|
*/
|
||||||
if (slotIndex < TileEntityResearchStation.INVENTORY_SIZE)
|
if (slotIndex < TileEntityResearchStation.INVENTORY_SIZE)
|
||||||
|
@ -102,9 +158,25 @@ public class ContainerResearchStation extends ContainerEE
|
||||||
}
|
}
|
||||||
else
|
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)
|
if (!world.isRemote)
|
||||||
{
|
{
|
||||||
// Set the owner
|
// Set the owner
|
||||||
ItemHelper.setOwner(itemStack, entityPlayer);
|
if (!ItemHelper.hasOwner(itemStack))
|
||||||
|
{
|
||||||
|
ItemHelper.setOwner(itemStack, entityPlayer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.pahimar.ee3.knowledge;
|
||||||
import com.google.gson.*;
|
import com.google.gson.*;
|
||||||
import com.google.gson.stream.JsonReader;
|
import com.google.gson.stream.JsonReader;
|
||||||
import com.google.gson.stream.JsonWriter;
|
import com.google.gson.stream.JsonWriter;
|
||||||
|
import com.pahimar.ee3.exchange.EnergyValueRegistry;
|
||||||
import com.pahimar.ee3.exchange.WrappedStack;
|
import com.pahimar.ee3.exchange.WrappedStack;
|
||||||
import com.pahimar.ee3.reference.Files;
|
import com.pahimar.ee3.reference.Files;
|
||||||
import com.pahimar.ee3.util.SerializationHelper;
|
import com.pahimar.ee3.util.SerializationHelper;
|
||||||
|
@ -25,9 +26,6 @@ public class AbilityRegistry implements JsonSerializer<AbilityRegistry>, JsonDes
|
||||||
|
|
||||||
private AbilityRegistry()
|
private AbilityRegistry()
|
||||||
{
|
{
|
||||||
// abilityDirectory = new File(SerializationHelper.getDataDirectory(), "abilities");
|
|
||||||
// abilityDirectory.mkdirs();
|
|
||||||
|
|
||||||
hasBeenModified = false;
|
hasBeenModified = false;
|
||||||
notLearnableSet = new TreeSet<WrappedStack>();
|
notLearnableSet = new TreeSet<WrappedStack>();
|
||||||
notRecoverableSet = new TreeSet<WrappedStack>();
|
notRecoverableSet = new TreeSet<WrappedStack>();
|
||||||
|
@ -60,7 +58,7 @@ public class AbilityRegistry implements JsonSerializer<AbilityRegistry>, JsonDes
|
||||||
if (WrappedStack.canBeWrapped(object))
|
if (WrappedStack.canBeWrapped(object))
|
||||||
{
|
{
|
||||||
WrappedStack wrappedObject = new WrappedStack(object);
|
WrappedStack wrappedObject = new WrappedStack(object);
|
||||||
return !notLearnableSet.contains(wrappedObject);
|
return !notLearnableSet.contains(wrappedObject) && EnergyValueRegistry.getInstance().hasEnergyValue(wrappedObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -91,7 +89,8 @@ public class AbilityRegistry implements JsonSerializer<AbilityRegistry>, JsonDes
|
||||||
{
|
{
|
||||||
if (WrappedStack.canBeWrapped(object))
|
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;
|
return false;
|
||||||
|
|
|
@ -169,11 +169,21 @@ public class TransmutationKnowledgeRegistry
|
||||||
{
|
{
|
||||||
if (entityPlayer != null)
|
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)
|
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)
|
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;
|
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)
|
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))
|
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)
|
public void teachPlayer(EntityPlayer entityPlayer, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
if (entityPlayer != null && itemStack != null && canPlayerLearn(entityPlayer, itemStack))
|
if (entityPlayer != null)
|
||||||
{
|
{
|
||||||
loadPlayerFromDiskIfNeeded(entityPlayer);
|
teachPlayer(entityPlayer.getUniqueID(), itemStack);
|
||||||
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
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)
|
if (entityPlayer != null)
|
||||||
{
|
{
|
||||||
loadPlayerFromDiskIfNeeded(entityPlayer);
|
setPlayerCanTransmuteEverything(entityPlayer.getUniqueID(), canTransmuteEverything);
|
||||||
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
public void makePlayerForget(EntityPlayer entityPlayer, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
if (entityPlayer != null && itemStack != null && doesPlayerKnow(entityPlayer, itemStack))
|
if (entityPlayer != null)
|
||||||
{
|
{
|
||||||
loadPlayerFromDiskIfNeeded(entityPlayer);
|
makePlayerForget(entityPlayer.getUniqueID(), itemStack);
|
||||||
if (playerKnowledgeMap.containsKey(entityPlayer.getUniqueID()))
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
if (entityPlayer != null)
|
||||||
{
|
{
|
||||||
loadPlayerFromDiskIfNeeded(entityPlayer);
|
makePlayerForgetEverything(entityPlayer.getUniqueID());
|
||||||
if (playerKnowledgeMap.containsKey(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)
|
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();
|
playerTransmutationKnowledge = SerializationHelper.readTransmutationKnowledgeFromFile(playerKnowledgeDirectory, playerUUID.toString() + ".json");
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
playerKnowledgeMap.put(playerUUID, playerTransmutationKnowledge);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unloadPlayer(EntityPlayer entityPlayer)
|
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);
|
savePlayerKnowledgeToDisk(playerUUID);
|
||||||
playerKnowledgeMap.remove(entityPlayer.getUniqueID());
|
playerKnowledgeMap.remove(playerUUID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void savePlayerKnowledgeToDisk(EntityPlayer entityPlayer)
|
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
|
else
|
||||||
{
|
{
|
||||||
loadPlayerFromDiskIfNeeded(entityPlayer);
|
loadPlayerFromDiskIfNeeded(playerUUID);
|
||||||
SerializationHelper.writeTransmutationKnowledgeToFile(playerKnowledgeDirectory, entityPlayer.getUniqueID().toString() + ".json", new TransmutationKnowledge());
|
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 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 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 = 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 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 PORTABLE_CRAFTING = new ResourceLocation("textures/gui/container/crafting_table.png");
|
||||||
public static final ResourceLocation ALCHEMICAL_TOME = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "alchemicalTome.png");
|
public static final ResourceLocation ALCHEMICAL_TOME = ResourceLocationHelper.getResourceLocation(GUI_SHEET_LOCATION + "alchemicalTome.png");
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package com.pahimar.ee3.tileentity;
|
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.reference.Names;
|
||||||
|
import com.pahimar.ee3.util.ItemHelper;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
@ -9,12 +12,16 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class TileEntityResearchStation extends TileEntityEE implements IInventory
|
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 ITEM_SLOT_INVENTORY_INDEX = 0;
|
||||||
|
public static final int TOME_SLOT_INVENTORY_INDEX = 1;
|
||||||
|
|
||||||
public int itemLearnTime;
|
public int itemLearnTime;
|
||||||
|
public boolean isItemKnown;
|
||||||
private ItemStack[] inventory;
|
private ItemStack[] inventory;
|
||||||
|
|
||||||
public TileEntityResearchStation()
|
public TileEntityResearchStation()
|
||||||
|
@ -117,7 +124,7 @@ public class TileEntityResearchStation extends TileEntityEE implements IInventor
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack)
|
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack)
|
||||||
{
|
{
|
||||||
return false;
|
return slotIndex == ITEM_SLOT_INVENTORY_INDEX && AbilityRegistry.getInstance().isLearnable(itemStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -187,12 +194,34 @@ public class TileEntityResearchStation extends TileEntityEE implements IInventor
|
||||||
{
|
{
|
||||||
this.itemLearnTime = 0;
|
this.itemLearnTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isItemKnown = isItemStackKnown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canLearnItemStack()
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,16 +229,14 @@ public class TileEntityResearchStation extends TileEntityEE implements IInventor
|
||||||
{
|
{
|
||||||
if (this.canLearnItemStack())
|
if (this.canLearnItemStack())
|
||||||
{
|
{
|
||||||
// PlayerKnowledge playerKnowledge = PlayerKnowledge.readPlayerKnowledgeFromNBT(this.inventory[TOME_SLOT_INVENTORY_INDEX].getTagCompound());
|
TransmutationKnowledgeRegistry.getInstance().teachPlayer(ItemHelper.getOwnerUUID(inventory[TOME_SLOT_INVENTORY_INDEX]), inventory[ITEM_SLOT_INVENTORY_INDEX]);
|
||||||
// playerKnowledge.learnTransmutation(this.inventory[ITEM_SLOT_INVENTORY_INDEX]);
|
|
||||||
// playerKnowledge.writeToNBT(this.inventory[TOME_SLOT_INVENTORY_INDEX].getTagCompound());
|
this.inventory[ITEM_SLOT_INVENTORY_INDEX].stackSize--;
|
||||||
//
|
|
||||||
// this.inventory[ITEM_SLOT_INVENTORY_INDEX].stackSize--;
|
if (this.inventory[ITEM_SLOT_INVENTORY_INDEX].stackSize <= 0)
|
||||||
//
|
{
|
||||||
// if (this.inventory[ITEM_SLOT_INVENTORY_INDEX].stackSize <= 0)
|
this.inventory[ITEM_SLOT_INVENTORY_INDEX] = null;
|
||||||
// {
|
}
|
||||||
// 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