aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMaxim <maxim235@gmx.de>2023-03-04 14:56:54 +0100
committerGitHub <noreply@github.com>2023-03-04 14:56:54 +0100
commit3baa08c9f4363303fd8ad35e3f7a210d9bffb11a (patch)
tree00c474b6bb333d7d73b27bd46edb1510d583a09f /src/main
parent0c32f2b4a5c0a2a11fd8f2a0044fd28ebabc2b19 (diff)
downloadGT5-Unofficial-3baa08c9f4363303fd8ad35e3f7a210d9bffb11a.tar.gz
GT5-Unofficial-3baa08c9f4363303fd8ad35e3f7a210d9bffb11a.tar.bz2
GT5-Unofficial-3baa08c9f4363303fd8ad35e3f7a210d9bffb11a.zip
Fix space project upgrades not working (#1783)
* Fix upgrade requirements being always wrong/causing NPE * Fix unlock command only unlocking unstarted projects * Fixed upgrades never finishing * Fixed upgrades not loading * Delete upgrade being build if finished * Fix built upgrades not being loaded * Address review * Addressed new reviews
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java9
-rw-r--r--src/main/java/gregtech/common/misc/spaceprojects/base/SP_Upgrade.java6
-rw-r--r--src/main/java/gregtech/common/misc/spaceprojects/base/SpaceProject.java4
-rw-r--r--src/main/java/gregtech/common/misc/spaceprojects/commands/SPM_Command.java6
4 files changed, 18 insertions, 7 deletions
diff --git a/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java b/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java
index 6dc80db3ec..d24ead8f88 100644
--- a/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java
+++ b/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectWorldSavedData.java
@@ -43,7 +43,7 @@ import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject.ISP_Upgrade;
/**
* This class is used so that I can write and read to a json file before the world is opened. On server starting is too
* late for this as the data stored in the files is needed before entities load their nbt data
- *
+ *
* @author BlueWeabo
*/
public class SpaceProjectWorldSavedData extends WorldSavedData {
@@ -185,15 +185,16 @@ public class SpaceProjectWorldSavedData extends WorldSavedData {
String projectName = obj.get(PROJECT_NAME).getAsString();
ISpaceProject project = SpaceProjectManager.getProject(projectName);
int projectCurrentStage = obj.get(PROJECT_CURRENT_STAGE).getAsInt();
- ISP_Upgrade[] projectUpgradesBuilt = context
- .deserialize(obj.get(PROJECT_UPGRADES_BUILT), ISP_Upgrade.class);
+ ISP_Upgrade[] projectUpgradesBuilt = new ISP_Upgrade[0];
+ projectUpgradesBuilt = context
+ .deserialize(obj.get(PROJECT_UPGRADES_BUILT), projectUpgradesBuilt.getClass());
ISP_Upgrade projectCurrentUpgrade = context
.deserialize(obj.get(PROJECT_CURRENT_UPGRADE), ISP_Upgrade.class);
ISpaceBody projectLocation = SpaceProjectManager.getLocation(obj.get(PROJECT_LOCATION).getAsString());
project.setBuiltUpgrade(projectUpgradesBuilt);
- project.setCurrentUpgradeBeingBuilt(projectCurrentUpgrade);
project.setProjectLocation(projectLocation);
project.setProjectCurrentStage(projectCurrentStage);
+ project.setCurrentUpgradeBeingBuilt(projectCurrentUpgrade);
return project;
}
}
diff --git a/src/main/java/gregtech/common/misc/spaceprojects/base/SP_Upgrade.java b/src/main/java/gregtech/common/misc/spaceprojects/base/SP_Upgrade.java
index 6a1fe82791..18540c429a 100644
--- a/src/main/java/gregtech/common/misc/spaceprojects/base/SP_Upgrade.java
+++ b/src/main/java/gregtech/common/misc/spaceprojects/base/SP_Upgrade.java
@@ -7,6 +7,7 @@ import net.minecraft.util.StatCollector;
import net.minecraftforge.fluids.FluidStack;
import gregtech.common.misc.spaceprojects.SpaceProjectManager;
+import gregtech.common.misc.spaceprojects.enums.SpaceBodyType;
import gregtech.common.misc.spaceprojects.enums.UpgradeStatus;
import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject;
import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject.ISP_Upgrade;
@@ -293,7 +294,7 @@ public class SP_Upgrade implements ISP_Upgrade {
return true;
}
- if (requirements.getBodyType() != null) {
+ if (requirements.getBodyType() != null && !requirements.getBodyType().equals(SpaceBodyType.NONE)) {
if (!requirements.getBodyType().equals(projectBelongingTo.getProjectLocation().getType())) {
return false;
}
@@ -335,6 +336,9 @@ public class SP_Upgrade implements ISP_Upgrade {
@Override
public void goToNextStage() {
currentStage++;
+ if (isFinished()) {
+ projectBelongingTo.setBuiltUpgrade(this);
+ }
}
@Override
diff --git a/src/main/java/gregtech/common/misc/spaceprojects/base/SpaceProject.java b/src/main/java/gregtech/common/misc/spaceprojects/base/SpaceProject.java
index 57625f083e..0095ece5b1 100644
--- a/src/main/java/gregtech/common/misc/spaceprojects/base/SpaceProject.java
+++ b/src/main/java/gregtech/common/misc/spaceprojects/base/SpaceProject.java
@@ -310,6 +310,7 @@ public class SpaceProject implements ISpaceProject {
public SpaceProject setProjectUpgrades(ISP_Upgrade... spaceProjectUpgrades) {
for (ISP_Upgrade upgrade : spaceProjectUpgrades) {
+ upgrade.setUpgradeProject(this);
upgradesAvailable.put(upgrade.getUpgradeName(), upgrade);
}
return this;
@@ -354,6 +355,9 @@ public class SpaceProject implements ISpaceProject {
}
for (ISP_Upgrade upgrade : upgrades) {
+ if (upgrade.equals(currentUpgrade)) {
+ currentUpgrade = null;
+ }
upgradesInstalled.put(upgrade.getUpgradeName(), upgrade);
}
}
diff --git a/src/main/java/gregtech/common/misc/spaceprojects/commands/SPM_Command.java b/src/main/java/gregtech/common/misc/spaceprojects/commands/SPM_Command.java
index c7346319a9..59f7a2dd13 100644
--- a/src/main/java/gregtech/common/misc/spaceprojects/commands/SPM_Command.java
+++ b/src/main/java/gregtech/common/misc/spaceprojects/commands/SPM_Command.java
@@ -190,10 +190,12 @@ public class SPM_Command extends CommandBase {
private void processUnlock(ICommandSender sender, String projectName, String location, String playerName) {
UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName);
- ISpaceProject tProject = SpaceProjectManager.getProject(projectName);
+ ISpaceProject tProject = SpaceProjectManager.getTeamProjectOrCopy(tID, projectName, getLocation(location));
if (tProject != null) {
tProject.setProjectCurrentStage(tProject.getTotalStages());
- SpaceProjectManager.addTeamProject(tID, getLocation(location), projectName, tProject);
+ if (!SpaceProjectManager.teamHasProject(tID, tProject)) {
+ SpaceProjectManager.addTeamProject(tID, getLocation(location), projectName, tProject);
+ }
sender.addChatMessage(new ChatComponentText("Project unlocked"));
} else {
sender.addChatMessage(new ChatComponentText("Incorrect internal project name. Try again"));