Don't use the cached knowledge provider for ProjectE

This commit is contained in:
raoulvdberge
2017-09-01 11:56:27 +02:00
parent faa8aa717c
commit 4be5ac51d2
2 changed files with 26 additions and 19 deletions

View File

@@ -34,7 +34,7 @@ public interface ISoldererRecipe {
int getDuration(); int getDuration();
/** /**
* @return whether this recipe can be used to calculate the EMC value of the resulting item in the Project E mod * @return whether this recipe can be used to calculate the EMC value of the resulting item in the ProjectE mod
*/ */
default boolean isProjectERecipe() { default boolean isProjectERecipe() {
return true; return true;

View File

@@ -35,8 +35,11 @@ public class StorageItemTransmutationTable extends StorageItemExternal {
if (externalStorage.getOwner() != null) { if (externalStorage.getOwner() != null) {
IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(externalStorage.getOwner()); IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(externalStorage.getOwner());
for (ItemStack knowledge : provider.getKnowledge()) { // @todo: https://github.com/sinkillerj/ProjectE/issues/1591
stored.add(ItemHandlerHelper.copyStackWithSize(knowledge, (int) Math.floor(provider.getEmc() / (double) ProjectEAPI.getEMCProxy().getValue(knowledge)))); if (!provider.getClass().getName().equals("moze_intel.projecte.impl.TransmutationOffline$1")) {
for (ItemStack knowledge : provider.getKnowledge()) {
stored.add(ItemHandlerHelper.copyStackWithSize(knowledge, (int) Math.floor(provider.getEmc() / (double) ProjectEAPI.getEMCProxy().getValue(knowledge))));
}
} }
} }
@@ -51,27 +54,30 @@ public class StorageItemTransmutationTable extends StorageItemExternal {
if (externalStorage.getOwner() != null) { if (externalStorage.getOwner() != null) {
IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(externalStorage.getOwner()); IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(externalStorage.getOwner());
int emc = ProjectEAPI.getEMCProxy().getValue(actualStack) * size; // @todo: https://github.com/sinkillerj/ProjectE/issues/1591
if (!provider.getClass().getName().equals("moze_intel.projecte.impl.TransmutationOffline$1")) {
int emc = ProjectEAPI.getEMCProxy().getValue(actualStack) * size;
if (emc == 0) { if (emc == 0) {
return actualStack; return actualStack;
}
if (!simulate) {
provider.setEmc(provider.getEmc() + emc);
if (!provider.hasKnowledge(stack)) {
provider.addKnowledge(stack);
} }
EntityPlayer player = externalStorage.getWorld().getPlayerEntityByUUID(externalStorage.getOwner()); if (!simulate) {
provider.setEmc(provider.getEmc() + emc);
if (player != null) { if (!provider.hasKnowledge(stack)) {
provider.sync((EntityPlayerMP) player); provider.addKnowledge(stack);
}
EntityPlayer player = externalStorage.getWorld().getPlayerEntityByUUID(externalStorage.getOwner());
if (player != null) {
provider.sync((EntityPlayerMP) player);
}
} }
}
return null; return null;
}
} }
return actualStack; return actualStack;
@@ -83,7 +89,8 @@ public class StorageItemTransmutationTable extends StorageItemExternal {
if (externalStorage.getOwner() != null) { if (externalStorage.getOwner() != null) {
IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(externalStorage.getOwner()); IKnowledgeProvider provider = ProjectEAPI.getTransmutationProxy().getKnowledgeProviderFor(externalStorage.getOwner());
if (provider.hasKnowledge(stack)) { // @todo: https://github.com/sinkillerj/ProjectE/issues/1591
if (!provider.getClass().getName().equals("moze_intel.projecte.impl.TransmutationOffline$1") && provider.hasKnowledge(stack)) {
double singleEmc = ProjectEAPI.getEMCProxy().getValue(stack); double singleEmc = ProjectEAPI.getEMCProxy().getValue(stack);
int maxExtract = (int) Math.floor(provider.getEmc() / singleEmc); int maxExtract = (int) Math.floor(provider.getEmc() / singleEmc);