From 1b820de08a05070909a267e17f033fcf58ac8710 Mon Sep 17 00:00:00 2001 From: NotAPenguin Date: Mon, 2 Sep 2024 23:17:17 +0200 Subject: The Great Renaming (#3014) * move kekztech to a single root dir * move detrav to a single root dir * move gtnh-lanthanides to a single root dir * move tectech and delete some gross reflection in gt++ * remove more reflection inside gt5u * delete more reflection in gt++ * fix imports * move bartworks and bwcrossmod * fix proxies * move galactigreg and ggfab * move gtneioreplugin * try to fix gt++ bee loader * apply the rename rules to BW * apply rename rules to bwcrossmod * apply rename rules to detrav scanner mod * apply rename rules to galacticgreg * apply rename rules to ggfab * apply rename rules to goodgenerator * apply rename rules to gtnh-lanthanides * apply rename rules to gt++ * apply rename rules to kekztech * apply rename rules to kubatech * apply rename rules to tectech * apply rename rules to gt apply the rename rules to gt * fix tt import * fix mui hopefully * fix coremod except intergalactic * rename assline recipe class * fix a class name i stumbled on * rename StructureUtility to GTStructureUtility to prevent conflict with structurelib * temporary rename of GTTooltipDataCache to old name * fix gt client/server proxy names --- .../misc/spaceprojects/SpaceProjectManager.java | 4 +- .../misc/spaceprojects/base/SPRequirements.java | 74 +++++ .../common/misc/spaceprojects/base/SPUpgrade.java | 362 +++++++++++++++++++++ .../misc/spaceprojects/base/SP_Requirements.java | 74 ----- .../common/misc/spaceprojects/base/SP_Upgrade.java | 362 --------------------- .../misc/spaceprojects/base/SpaceProject.java | 2 +- .../misc/spaceprojects/commands/SPCommand.java | 166 ++++++++++ .../misc/spaceprojects/commands/SPMCommand.java | 288 ++++++++++++++++ .../misc/spaceprojects/commands/SPM_Command.java | 288 ---------------- .../misc/spaceprojects/commands/SP_Command.java | 166 ---------- .../commands/SpaceProjectCommand.java | 9 + .../commands/SpaceProject_Command.java | 9 - 12 files changed, 902 insertions(+), 902 deletions(-) create mode 100644 src/main/java/gregtech/common/misc/spaceprojects/base/SPRequirements.java create mode 100644 src/main/java/gregtech/common/misc/spaceprojects/base/SPUpgrade.java delete mode 100644 src/main/java/gregtech/common/misc/spaceprojects/base/SP_Requirements.java delete mode 100644 src/main/java/gregtech/common/misc/spaceprojects/base/SP_Upgrade.java create mode 100644 src/main/java/gregtech/common/misc/spaceprojects/commands/SPCommand.java create mode 100644 src/main/java/gregtech/common/misc/spaceprojects/commands/SPMCommand.java delete mode 100644 src/main/java/gregtech/common/misc/spaceprojects/commands/SPM_Command.java delete mode 100644 src/main/java/gregtech/common/misc/spaceprojects/commands/SP_Command.java create mode 100644 src/main/java/gregtech/common/misc/spaceprojects/commands/SpaceProjectCommand.java delete mode 100644 src/main/java/gregtech/common/misc/spaceprojects/commands/SpaceProject_Command.java (limited to 'src/main/java/gregtech/common/misc/spaceprojects') diff --git a/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectManager.java b/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectManager.java index 323b22e20a..a076a05c9a 100644 --- a/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectManager.java +++ b/src/main/java/gregtech/common/misc/spaceprojects/SpaceProjectManager.java @@ -12,7 +12,7 @@ import net.minecraftforge.fluids.FluidStack; import org.apache.commons.lang3.tuple.Pair; import gregtech.api.recipe.RecipeMaps; -import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GTRecipe; import gregtech.common.misc.spaceprojects.interfaces.ISpaceBody; import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject; @@ -187,7 +187,7 @@ public class SpaceProjectManager { // #region Project Helper methods - public static class FakeSpaceProjectRecipe extends GT_Recipe { + public static class FakeSpaceProjectRecipe extends GTRecipe { public final String projectName; diff --git a/src/main/java/gregtech/common/misc/spaceprojects/base/SPRequirements.java b/src/main/java/gregtech/common/misc/spaceprojects/base/SPRequirements.java new file mode 100644 index 0000000000..dc92d8bebf --- /dev/null +++ b/src/main/java/gregtech/common/misc/spaceprojects/base/SPRequirements.java @@ -0,0 +1,74 @@ +package gregtech.common.misc.spaceprojects.base; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import gregtech.common.misc.spaceprojects.enums.SpaceBodyType; +import gregtech.common.misc.spaceprojects.enums.StarType; +import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject; +import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject.ISP_Requirements; +import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject.ISP_Upgrade; + +/** + * @author BlueWeabo + */ +public class SPRequirements implements ISP_Requirements { + + // #region Variables + + protected SpaceBodyType spaceBody = SpaceBodyType.NONE; + protected StarType star = StarType.NotAStar; + protected List spaceProjects = new ArrayList<>(); + protected List upgrades = new ArrayList<>(); + + // #endregion + + // #region Getters + + @Override + public SpaceBodyType getBodyType() { + return spaceBody; + } + + @Override + public StarType getStarType() { + return star; + } + + @Override + public List getProjects() { + return spaceProjects; + } + + @Override + public List getUpgrades() { + return upgrades; + } + + // #endregion + + // #region Setters/Builder + + public SPRequirements setSpaceBodyType(SpaceBodyType spaceBodyType) { + spaceBody = spaceBodyType; + return this; + } + + public SPRequirements setStarType(StarType starType) { + star = starType; + return this; + } + + public SPRequirements setUpgrades(ISP_Upgrade... requirementUpgrades) { + upgrades.addAll(Arrays.asList(requirementUpgrades)); + return this; + } + + public SPRequirements setSpaceProjects(ISpaceProject... requirementProjects) { + spaceProjects.addAll(Arrays.asList(requirementProjects)); + return this; + } + + // #endregion +} diff --git a/src/main/java/gregtech/common/misc/spaceprojects/base/SPUpgrade.java b/src/main/java/gregtech/common/misc/spaceprojects/base/SPUpgrade.java new file mode 100644 index 0000000000..b07ff7905a --- /dev/null +++ b/src/main/java/gregtech/common/misc/spaceprojects/base/SPUpgrade.java @@ -0,0 +1,362 @@ +package gregtech.common.misc.spaceprojects.base; + +import java.util.UUID; + +import net.minecraft.item.ItemStack; +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; + +/** + * @author BlueWeabo + */ +public class SPUpgrade implements ISP_Upgrade { + + // #region Variables + + protected String name; + protected String unlocalizedName; + protected ItemStack[] itemsCost; + protected FluidStack[] fluidsCost; + protected int totalStages; + protected int currentStage; + protected int buildTime; + protected long voltage; + protected SPRequirements requirements; + protected ISpaceProject projectBelongingTo; + + // #endregion + + // #region Getters + + @Override + public String getUpgradeName() { + return name; + } + + @Override + public String getUnlocalizedName() { + return unlocalizedName; + } + + @Override + public String getLocalizedName() { + return StatCollector.translateToLocal(unlocalizedName); + } + + @Override + public ItemStack[] getItemsCostPerStage() { + return itemsCost; + } + + @Override + public ItemStack getItemCostPerStage(int index) { + if (itemsCost == null || index < 0 || index >= itemsCost.length) { + return null; + } + + return itemsCost[index]; + } + + @Override + public ItemStack[] getCurrentItemsProgress() { + ItemStack[] currentItemsProgress = new ItemStack[itemsCost.length]; + int index = 0; + for (ItemStack item : itemsCost) { + ItemStack copy = item.copy(); + copy.stackSize *= getCurrentStage(); + currentItemsProgress[index++] = copy; + } + + return currentItemsProgress; + } + + @Override + public ItemStack getCurrentItemProgress(int index) { + if (itemsCost == null || index < 0 || index >= itemsCost.length || itemsCost[index] == null) { + return null; + } + + ItemStack item = itemsCost[index].copy(); + item.stackSize *= getCurrentStage(); + return item; + } + + @Override + public ItemStack[] getTotalItemsCost() { + ItemStack[] totalItemsCost = new ItemStack[itemsCost.length]; + int index = 0; + for (ItemStack item : itemsCost) { + ItemStack copy = item.copy(); + copy.stackSize *= getTotalStages(); + totalItemsCost[index++] = copy; + } + + return totalItemsCost; + } + + @Override + public ItemStack getTotalItemCost(int index) { + if (itemsCost == null || index < 0 || index >= itemsCost.length || itemsCost[index] == null) { + return null; + } + + ItemStack item = itemsCost[index].copy(); + item.stackSize *= getTotalStages(); + return item; + } + + @Override + public FluidStack[] getFluidsCostPerStage() { + return fluidsCost; + } + + @Override + public FluidStack getFluidCostPerStage(int index) { + if (fluidsCost == null || index < 0 || index >= fluidsCost.length) { + return null; + } + + return fluidsCost[index]; + } + + @Override + public FluidStack[] getCurrentFluidsProgress() { + if (fluidsCost == null) { + return null; + } + + FluidStack[] currentFluidsProgress = new FluidStack[fluidsCost.length]; + int index = 0; + for (FluidStack fluid : fluidsCost) { + FluidStack copy = fluid.copy(); + copy.amount *= getCurrentStage(); + currentFluidsProgress[index++] = copy; + } + + return currentFluidsProgress; + } + + @Override + public FluidStack getCurrentFluidProgress(int index) { + if (fluidsCost == null || index < 0 || index >= fluidsCost.length || fluidsCost[index] == null) { + return null; + } + + FluidStack fluid = fluidsCost[index].copy(); + fluid.amount *= getCurrentStage(); + return fluid; + } + + @Override + public FluidStack[] getTotalFluidsCost() { + if (fluidsCost == null) { + return null; + } + + FluidStack[] totalFluidsCost = new FluidStack[fluidsCost.length]; + int index = 0; + for (FluidStack fluid : fluidsCost) { + FluidStack copy = fluid.copy(); + copy.amount *= getTotalStages(); + totalFluidsCost[index++] = copy; + } + + return totalFluidsCost; + } + + @Override + public FluidStack getTotalFluidCost(int index) { + if (fluidsCost == null || index < 0 || index >= fluidsCost.length || fluidsCost[index] == null) { + return null; + } + + FluidStack fluid = fluidsCost[index].copy(); + fluid.amount *= getTotalStages(); + return fluid; + } + + @Override + public int getTotalStages() { + return totalStages; + } + + @Override + public int getUpgradeBuildTime() { + return buildTime; + } + + @Override + public int getCurrentStage() { + return currentStage; + } + + @Override + public float getCurrentProgress() { + return currentStage / totalStages * 100.0f; + } + + @Override + public long getVoltage() { + return voltage; + } + + @Override + public UpgradeStatus getStatus() { + if (requirements == null) { + return UpgradeStatus.Unlocked; + } + + if (isFinished()) { + return UpgradeStatus.Finished; + } + return UpgradeStatus.Locked; + } + + @Override + public SPRequirements getUpgradeRequirements() { + return requirements; + } + + @Override + public ISpaceProject getParentProject() { + return projectBelongingTo; + } + + // #endregion + + // #region Setter/Builder + + public SPUpgrade() {} + + public SPUpgrade setUpgradeName(String upgradeName) { + name = upgradeName; + return this; + } + + public SPUpgrade setUpgradeUnlocalizedName(String upgradeUnlocalizedName) { + unlocalizedName = upgradeUnlocalizedName; + return this; + } + + public SPUpgrade setUpgradeItemsCost(ItemStack... upgradeItemsCost) { + itemsCost = upgradeItemsCost; + return this; + } + + public SPUpgrade setUpgradeFluidsCost(FluidStack... upgradeFluidsCost) { + fluidsCost = upgradeFluidsCost; + return this; + } + + public SPUpgrade setUpgradeRequirements(SPRequirements upgradeRequirements) { + requirements = upgradeRequirements; + return this; + } + + public SPUpgrade setUpgradeTotalStages(int upgradeTotalStages) { + totalStages = upgradeTotalStages; + return this; + } + + public SPUpgrade setUpgradeBuildTime(int upgradeBuildTime) { + buildTime = upgradeBuildTime; + return this; + } + + public SPUpgrade setUpgradeVoltage(long upgradeVoltage) { + voltage = upgradeVoltage; + return this; + } + + @Override + public void setUpgradeProject(ISpaceProject project) { + projectBelongingTo = project; + } + + @Override + public void setUpgradeCurrentStage(int stage) { + currentStage = stage; + } + + // #endregion + + // #region Other + + @Override + public boolean meetsRequirements(UUID aTeam) { + if (requirements == null) { + return true; + } + + if (requirements.getBodyType() != null && !requirements.getBodyType() + .equals(SpaceBodyType.NONE)) { + if (!requirements.getBodyType() + .equals( + projectBelongingTo.getProjectLocation() + .getType())) { + return false; + } + } + + if (requirements.getStarType() != null) { + if (!requirements.getStarType() + .equals( + projectBelongingTo.getProjectLocation() + .getStarType())) { + return false; + } + } + + if (requirements.getProjects() != null) { + for (ISpaceProject tProject : requirements.getProjects()) { + if (!SpaceProjectManager.teamHasProject(aTeam, tProject)) { + return false; + } + } + } + + if (requirements.getUpgrades() != null) { + for (ISP_Upgrade upgrade : requirements.getUpgrades()) { + if (!projectBelongingTo.hasUpgrade(upgrade.getUpgradeName())) { + return false; + } + } + } + + return true; + } + + @Override + public SPUpgrade copy() { + return new SPUpgrade().setUpgradeName(name) + .setUpgradeUnlocalizedName(unlocalizedName) + .setUpgradeBuildTime(buildTime) + .setUpgradeFluidsCost(fluidsCost) + .setUpgradeItemsCost(itemsCost) + .setUpgradeRequirements(requirements) + .setUpgradeTotalStages(totalStages) + .setUpgradeVoltage(voltage); + } + + @Override + public void goToNextStage() { + currentStage++; + if (isFinished()) { + projectBelongingTo.setBuiltUpgrade(this); + } + } + + @Override + public boolean isFinished() { + return currentStage == totalStages; + } + + // #endregion + +} diff --git a/src/main/java/gregtech/common/misc/spaceprojects/base/SP_Requirements.java b/src/main/java/gregtech/common/misc/spaceprojects/base/SP_Requirements.java deleted file mode 100644 index b910b5e344..0000000000 --- a/src/main/java/gregtech/common/misc/spaceprojects/base/SP_Requirements.java +++ /dev/null @@ -1,74 +0,0 @@ -package gregtech.common.misc.spaceprojects.base; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import gregtech.common.misc.spaceprojects.enums.SpaceBodyType; -import gregtech.common.misc.spaceprojects.enums.StarType; -import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject; -import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject.ISP_Requirements; -import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject.ISP_Upgrade; - -/** - * @author BlueWeabo - */ -public class SP_Requirements implements ISP_Requirements { - - // #region Variables - - protected SpaceBodyType spaceBody = SpaceBodyType.NONE; - protected StarType star = StarType.NotAStar; - protected List spaceProjects = new ArrayList<>(); - protected List upgrades = new ArrayList<>(); - - // #endregion - - // #region Getters - - @Override - public SpaceBodyType getBodyType() { - return spaceBody; - } - - @Override - public StarType getStarType() { - return star; - } - - @Override - public List getProjects() { - return spaceProjects; - } - - @Override - public List getUpgrades() { - return upgrades; - } - - // #endregion - - // #region Setters/Builder - - public SP_Requirements setSpaceBodyType(SpaceBodyType spaceBodyType) { - spaceBody = spaceBodyType; - return this; - } - - public SP_Requirements setStarType(StarType starType) { - star = starType; - return this; - } - - public SP_Requirements setUpgrades(ISP_Upgrade... requirementUpgrades) { - upgrades.addAll(Arrays.asList(requirementUpgrades)); - return this; - } - - public SP_Requirements setSpaceProjects(ISpaceProject... requirementProjects) { - spaceProjects.addAll(Arrays.asList(requirementProjects)); - return this; - } - - // #endregion -} 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 deleted file mode 100644 index 835a57f277..0000000000 --- a/src/main/java/gregtech/common/misc/spaceprojects/base/SP_Upgrade.java +++ /dev/null @@ -1,362 +0,0 @@ -package gregtech.common.misc.spaceprojects.base; - -import java.util.UUID; - -import net.minecraft.item.ItemStack; -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; - -/** - * @author BlueWeabo - */ -public class SP_Upgrade implements ISP_Upgrade { - - // #region Variables - - protected String name; - protected String unlocalizedName; - protected ItemStack[] itemsCost; - protected FluidStack[] fluidsCost; - protected int totalStages; - protected int currentStage; - protected int buildTime; - protected long voltage; - protected SP_Requirements requirements; - protected ISpaceProject projectBelongingTo; - - // #endregion - - // #region Getters - - @Override - public String getUpgradeName() { - return name; - } - - @Override - public String getUnlocalizedName() { - return unlocalizedName; - } - - @Override - public String getLocalizedName() { - return StatCollector.translateToLocal(unlocalizedName); - } - - @Override - public ItemStack[] getItemsCostPerStage() { - return itemsCost; - } - - @Override - public ItemStack getItemCostPerStage(int index) { - if (itemsCost == null || index < 0 || index >= itemsCost.length) { - return null; - } - - return itemsCost[index]; - } - - @Override - public ItemStack[] getCurrentItemsProgress() { - ItemStack[] currentItemsProgress = new ItemStack[itemsCost.length]; - int index = 0; - for (ItemStack item : itemsCost) { - ItemStack copy = item.copy(); - copy.stackSize *= getCurrentStage(); - currentItemsProgress[index++] = copy; - } - - return currentItemsProgress; - } - - @Override - public ItemStack getCurrentItemProgress(int index) { - if (itemsCost == null || index < 0 || index >= itemsCost.length || itemsCost[index] == null) { - return null; - } - - ItemStack item = itemsCost[index].copy(); - item.stackSize *= getCurrentStage(); - return item; - } - - @Override - public ItemStack[] getTotalItemsCost() { - ItemStack[] totalItemsCost = new ItemStack[itemsCost.length]; - int index = 0; - for (ItemStack item : itemsCost) { - ItemStack copy = item.copy(); - copy.stackSize *= getTotalStages(); - totalItemsCost[index++] = copy; - } - - return totalItemsCost; - } - - @Override - public ItemStack getTotalItemCost(int index) { - if (itemsCost == null || index < 0 || index >= itemsCost.length || itemsCost[index] == null) { - return null; - } - - ItemStack item = itemsCost[index].copy(); - item.stackSize *= getTotalStages(); - return item; - } - - @Override - public FluidStack[] getFluidsCostPerStage() { - return fluidsCost; - } - - @Override - public FluidStack getFluidCostPerStage(int index) { - if (fluidsCost == null || index < 0 || index >= fluidsCost.length) { - return null; - } - - return fluidsCost[index]; - } - - @Override - public FluidStack[] getCurrentFluidsProgress() { - if (fluidsCost == null) { - return null; - } - - FluidStack[] currentFluidsProgress = new FluidStack[fluidsCost.length]; - int index = 0; - for (FluidStack fluid : fluidsCost) { - FluidStack copy = fluid.copy(); - copy.amount *= getCurrentStage(); - currentFluidsProgress[index++] = copy; - } - - return currentFluidsProgress; - } - - @Override - public FluidStack getCurrentFluidProgress(int index) { - if (fluidsCost == null || index < 0 || index >= fluidsCost.length || fluidsCost[index] == null) { - return null; - } - - FluidStack fluid = fluidsCost[index].copy(); - fluid.amount *= getCurrentStage(); - return fluid; - } - - @Override - public FluidStack[] getTotalFluidsCost() { - if (fluidsCost == null) { - return null; - } - - FluidStack[] totalFluidsCost = new FluidStack[fluidsCost.length]; - int index = 0; - for (FluidStack fluid : fluidsCost) { - FluidStack copy = fluid.copy(); - copy.amount *= getTotalStages(); - totalFluidsCost[index++] = copy; - } - - return totalFluidsCost; - } - - @Override - public FluidStack getTotalFluidCost(int index) { - if (fluidsCost == null || index < 0 || index >= fluidsCost.length || fluidsCost[index] == null) { - return null; - } - - FluidStack fluid = fluidsCost[index].copy(); - fluid.amount *= getTotalStages(); - return fluid; - } - - @Override - public int getTotalStages() { - return totalStages; - } - - @Override - public int getUpgradeBuildTime() { - return buildTime; - } - - @Override - public int getCurrentStage() { - return currentStage; - } - - @Override - public float getCurrentProgress() { - return currentStage / totalStages * 100.0f; - } - - @Override - public long getVoltage() { - return voltage; - } - - @Override - public UpgradeStatus getStatus() { - if (requirements == null) { - return UpgradeStatus.Unlocked; - } - - if (isFinished()) { - return UpgradeStatus.Finished; - } - return UpgradeStatus.Locked; - } - - @Override - public SP_Requirements getUpgradeRequirements() { - return requirements; - } - - @Override - public ISpaceProject getParentProject() { - return projectBelongingTo; - } - - // #endregion - - // #region Setter/Builder - - public SP_Upgrade() {} - - public SP_Upgrade setUpgradeName(String upgradeName) { - name = upgradeName; - return this; - } - - public SP_Upgrade setUpgradeUnlocalizedName(String upgradeUnlocalizedName) { - unlocalizedName = upgradeUnlocalizedName; - return this; - } - - public SP_Upgrade setUpgradeItemsCost(ItemStack... upgradeItemsCost) { - itemsCost = upgradeItemsCost; - return this; - } - - public SP_Upgrade setUpgradeFluidsCost(FluidStack... upgradeFluidsCost) { - fluidsCost = upgradeFluidsCost; - return this; - } - - public SP_Upgrade setUpgradeRequirements(SP_Requirements upgradeRequirements) { - requirements = upgradeRequirements; - return this; - } - - public SP_Upgrade setUpgradeTotalStages(int upgradeTotalStages) { - totalStages = upgradeTotalStages; - return this; - } - - public SP_Upgrade setUpgradeBuildTime(int upgradeBuildTime) { - buildTime = upgradeBuildTime; - return this; - } - - public SP_Upgrade setUpgradeVoltage(long upgradeVoltage) { - voltage = upgradeVoltage; - return this; - } - - @Override - public void setUpgradeProject(ISpaceProject project) { - projectBelongingTo = project; - } - - @Override - public void setUpgradeCurrentStage(int stage) { - currentStage = stage; - } - - // #endregion - - // #region Other - - @Override - public boolean meetsRequirements(UUID aTeam) { - if (requirements == null) { - return true; - } - - if (requirements.getBodyType() != null && !requirements.getBodyType() - .equals(SpaceBodyType.NONE)) { - if (!requirements.getBodyType() - .equals( - projectBelongingTo.getProjectLocation() - .getType())) { - return false; - } - } - - if (requirements.getStarType() != null) { - if (!requirements.getStarType() - .equals( - projectBelongingTo.getProjectLocation() - .getStarType())) { - return false; - } - } - - if (requirements.getProjects() != null) { - for (ISpaceProject tProject : requirements.getProjects()) { - if (!SpaceProjectManager.teamHasProject(aTeam, tProject)) { - return false; - } - } - } - - if (requirements.getUpgrades() != null) { - for (ISP_Upgrade upgrade : requirements.getUpgrades()) { - if (!projectBelongingTo.hasUpgrade(upgrade.getUpgradeName())) { - return false; - } - } - } - - return true; - } - - @Override - public SP_Upgrade copy() { - return new SP_Upgrade().setUpgradeName(name) - .setUpgradeUnlocalizedName(unlocalizedName) - .setUpgradeBuildTime(buildTime) - .setUpgradeFluidsCost(fluidsCost) - .setUpgradeItemsCost(itemsCost) - .setUpgradeRequirements(requirements) - .setUpgradeTotalStages(totalStages) - .setUpgradeVoltage(voltage); - } - - @Override - public void goToNextStage() { - currentStage++; - if (isFinished()) { - projectBelongingTo.setBuiltUpgrade(this); - } - } - - @Override - public boolean isFinished() { - return currentStage == totalStages; - } - - // #endregion - -} 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 201b7c27a9..d682dd6c01 100644 --- a/src/main/java/gregtech/common/misc/spaceprojects/base/SpaceProject.java +++ b/src/main/java/gregtech/common/misc/spaceprojects/base/SpaceProject.java @@ -378,7 +378,7 @@ public class SpaceProject implements ISpaceProject { .setProjectTexture(texture) .setProjectRequirements(requirements); if (upgradesAvailable != null) { - ISP_Upgrade[] upgrades = new SP_Upgrade[upgradesAvailable.size()]; + ISP_Upgrade[] upgrades = new SPUpgrade[upgradesAvailable.size()]; int index = 0; for (ISP_Upgrade upgrade : upgradesAvailable.values()) { upgrades[index++] = upgrade.copy(); diff --git a/src/main/java/gregtech/common/misc/spaceprojects/commands/SPCommand.java b/src/main/java/gregtech/common/misc/spaceprojects/commands/SPCommand.java new file mode 100644 index 0000000000..39332818fe --- /dev/null +++ b/src/main/java/gregtech/common/misc/spaceprojects/commands/SPCommand.java @@ -0,0 +1,166 @@ +package gregtech.common.misc.spaceprojects.commands; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.WeakHashMap; +import java.util.stream.Collectors; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.EnumChatFormatting; + +import org.apache.commons.lang3.tuple.Pair; + +import gregtech.api.util.GTUtility; +import gregtech.common.misc.spaceprojects.SpaceProjectManager; + +/** + * @author BlueWeabo + */ +public class SPCommand extends CommandBase { + + private static final Set> invite = Collections + .newSetFromMap(new WeakHashMap<>()); + private static final Set confirm = Collections.newSetFromMap(new WeakHashMap<>()); + + private static final String INVITE = "invite"; + private static final String ACCEPT = "accept"; + private static final String LEAVE = "leave"; + private static final String CONFIRM = "confirm"; + + @Override + public String getCommandName() { + return "sp"; + } + + @Override + public int getRequiredPermissionLevel() { + return 0; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName() + " [PlayerName]"; + } + + @Override + public void processCommand(ICommandSender sender, String[] arguments) { + if (arguments.length < 1) { + return; + } + switch (arguments[0]) { + case INVITE -> { + if (arguments.length < 2) { + return; + } + processInvite(sender, arguments[1]); + } + case ACCEPT -> { + if (arguments.length < 2) { + return; + } + processAccept(sender, arguments[1]); + } + case LEAVE -> processLeave(sender); + case CONFIRM -> processConfirm(sender); + } + } + + private void processInvite(ICommandSender sender, String playerInvited) { + EntityPlayerMP teamLeader = getCommandSenderAsPlayer(sender); + EntityPlayerMP teamMember = getPlayer(sender, playerInvited); + invite.add(Pair.of(teamMember, teamLeader)); + String message = EnumChatFormatting.GOLD + teamLeader.getCommandSenderName() + + EnumChatFormatting.RESET + + " has sent you an invite to join their team. Accept it with" + + EnumChatFormatting.GOLD + + " /sp accept " + + teamLeader.getCommandSenderName(); + GTUtility.sendChatToPlayer(teamMember, message); + } + + private void processAccept(ICommandSender sender, String playerInviter) { + EntityPlayerMP teamMember = getCommandSenderAsPlayer(sender); + EntityPlayerMP teamLeader = getPlayer(sender, playerInviter); + if (invite.contains(Pair.of(teamMember, teamLeader))) { + String message = EnumChatFormatting.GOLD + teamMember.getCommandSenderName() + + EnumChatFormatting.RESET + + " has accepted the invite."; + SpaceProjectManager.putInTeam(teamMember.getUniqueID(), teamLeader.getUniqueID()); + GTUtility.sendChatToPlayer(teamLeader, message); + invite.remove(Pair.of(teamMember, teamLeader)); + } + } + + private void processLeave(ICommandSender sender) { + EntityPlayerMP player = getCommandSenderAsPlayer(sender); + String message = "Are you sure you want to leave the team. You will lose all progress. Use " + + EnumChatFormatting.GOLD + + "/sp confirm" + + EnumChatFormatting.RESET + + " to confirm this. This does nothing if you are the team leader."; + GTUtility.sendChatToPlayer(player, message); + confirm.add(player); + } + + private void processConfirm(ICommandSender sender) { + EntityPlayerMP player = getCommandSenderAsPlayer(sender); + if (confirm.contains(player)) { + String message = "Successfully left the team."; + SpaceProjectManager.putInTeam(player.getUniqueID(), player.getUniqueID()); + GTUtility.sendChatToPlayer(player, message); + confirm.remove(player); + } + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] arguments) { + List autoComplete = new ArrayList<>(); + String filter = arguments.length == 0 ? "" : arguments[0].trim(); + switch (arguments.length) { + case 1 -> autoComplete.addAll(Arrays.asList(getSubCommands())); + case 2 -> { + filter = arguments[1].trim(); + if (arguments[0].equals(INVITE)) { + autoComplete.addAll(Arrays.asList(getPlayers())); + break; + } + + if (arguments[0].equals(CONFIRM)) { + Optional> pairOpt = invite.stream() + .filter( + (e) -> e.getKey() + .getUniqueID() == getCommandSenderAsPlayer(sender).getUniqueID()) + .findFirst(); + if (pairOpt.isPresent()) { + autoComplete.add( + SpaceProjectManager.getPlayerNameFromUUID( + pairOpt.get() + .getRight() + .getUniqueID())); + } + } + } + } + String finalFilter = filter; + return autoComplete.stream() + .filter(s -> finalFilter.isEmpty() || s.startsWith(finalFilter)) + .collect(Collectors.toList()); + } + + private String[] getPlayers() { + return MinecraftServer.getServer() + .getAllUsernames(); + } + + private String[] getSubCommands() { + return new String[] { INVITE, ACCEPT, LEAVE, CONFIRM }; + } + +} diff --git a/src/main/java/gregtech/common/misc/spaceprojects/commands/SPMCommand.java b/src/main/java/gregtech/common/misc/spaceprojects/commands/SPMCommand.java new file mode 100644 index 0000000000..8379162f84 --- /dev/null +++ b/src/main/java/gregtech/common/misc/spaceprojects/commands/SPMCommand.java @@ -0,0 +1,288 @@ +package gregtech.common.misc.spaceprojects.commands; + +import static gregtech.common.misc.spaceprojects.SpaceProjectManager.getLocation; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentText; + +import gregtech.common.misc.spaceprojects.SpaceProjectManager; +import gregtech.common.misc.spaceprojects.SpaceProjectWorldSavedData; +import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject; + +/** + * @author BlueWeabo + */ +public class SPMCommand extends CommandBase { + + private static final String RESET = "reset"; + private static final String UNLOCK = "unlock"; + private static final String UNLOCK_UPGRADE = "unlock_upgrade"; + private static final String LOCK = "lock"; + private static final String LIST = "list"; + private static final String ALL = "-all"; + private static final String AVAILABLE = "-available"; + private static final String UNLOCKED = "-unlocked"; + private static final String COPY = "copy"; + + @Override + public String getCommandName() { + return "spm"; + } + + @Override + public int getRequiredPermissionLevel() { + return 0; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + this.getCommandName() + " . Available subCommands: reset, unlock, lock, list, copy"; + } + + @Override + public void processCommand(ICommandSender sender, String[] arguments) { + if (arguments.length < 1) { + printHelp(sender); + return; + } + switch (arguments[0]) { + case RESET: + if (!sender.canCommandSenderUseCommand(4, getCommandName())) { + sender.addChatMessage( + new ChatComponentText("You don't have the permissions to execute this command")); + return; + } + processReset(sender, arguments.length >= 2 ? arguments[1] : sender.getCommandSenderName()); + break; + case UNLOCK: + if (!sender.canCommandSenderUseCommand(4, getCommandName())) { + sender.addChatMessage( + new ChatComponentText("You don't have the permissions to execute this command")); + return; + } + if (arguments.length < 3) { + sender.addChatMessage( + new ChatComponentText("Not enough arguments. Needs to mention a project and a location")); + return; + } + processUnlock( + sender, + arguments[1], + arguments[2], + arguments.length >= 4 ? arguments[3] : sender.getCommandSenderName()); + break; + case UNLOCK_UPGRADE: + if (!sender.canCommandSenderUseCommand(4, getCommandName())) { + sender.addChatMessage( + new ChatComponentText("You don't have the permissions to execute this command")); + return; + } + if (arguments.length < 4) { + sender.addChatMessage( + new ChatComponentText( + "Not enough arguments. Needs to mention a project a location and an upgrade name")); + return; + } + processUnlock( + sender, + arguments[1], + arguments[2], + arguments[3], + arguments.length >= 5 ? arguments[4] : sender.getCommandSenderName()); + break; + case LOCK: + if (!sender.canCommandSenderUseCommand(4, getCommandName())) { + sender.addChatMessage( + new ChatComponentText("You don't have the permissions to execute this command")); + return; + } + if (arguments.length < 3) { + sender.addChatMessage( + new ChatComponentText("Not enough arguments. Needs to mention a project and a location")); + return; + } + processLock( + sender, + arguments[1], + arguments[2], + arguments.length >= 4 ? arguments[3] : sender.getCommandSenderName()); + case LIST: + if (arguments.length < 2) { + sender.addChatMessage( + new ChatComponentText( + "No Argument for list subCommand. Usage /spm list -all, -available or -unlocked")); + return; + } + processList(sender, arguments[1], arguments.length >= 3 ? arguments[2] : sender.getCommandSenderName()); + break; + case COPY: + if (!sender.canCommandSenderUseCommand(4, getCommandName())) { + sender.addChatMessage( + new ChatComponentText("You don't have the permissions to execute this command")); + return; + } + if (arguments.length < 3) { + sender.addChatMessage(new ChatComponentText("Not enough arguments. Needs to mention 2 players")); + return; + } + processCopy(sender, arguments[1], arguments[2]); + break; + } + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] arguments) { + List autoComplete = new ArrayList<>(); + String filter = arguments.length == 0 ? "" : arguments[0].trim(); + switch (arguments.length) { + case 1 -> autoComplete.addAll(Arrays.asList(getSubCommands())); + case 2 -> { + filter = arguments[1].trim(); + if (arguments[0].equals(LIST)) { + autoComplete.addAll(Arrays.asList(getListArguments())); + } else if (arguments[0].equals(COPY) || arguments[0].equals(RESET)) { + autoComplete.addAll(Arrays.asList(getPlayers())); + } else { + autoComplete.addAll(Arrays.asList(getProjects())); + } + } + case 3 -> { + filter = arguments[2].trim(); + if (arguments[1].equals(ALL)) {} else if (arguments[0].equals(LIST)) { + autoComplete.addAll(Arrays.asList(getPlayers())); + } else { + autoComplete.addAll(Arrays.asList(getLocations())); + } + } + case 4 -> { + filter = arguments[3].trim(); + if (arguments[0].equals(UNLOCK_UPGRADE)) { + ISpaceProject project = SpaceProjectManager.getProject(arguments[2]); + if (project != null) { + autoComplete.addAll( + project.getAllUpgrades() + .stream() + .map(ISpaceProject.ISP_Upgrade::getUnlocalizedName) + .collect(Collectors.toList())); + } + } else { + autoComplete.addAll(Arrays.asList(getPlayers())); + } + } + } + String finalFilter = filter; + return autoComplete.stream() + .filter(s -> finalFilter.isEmpty() || s.startsWith(finalFilter)) + .collect(Collectors.toList()); + } + + private String[] getPlayers() { + return MinecraftServer.getServer() + .getAllUsernames(); + } + + private String[] getLocations() { + return SpaceProjectManager.getLocationNames() + .toArray(new String[0]); + } + + private String[] getProjects() { + return SpaceProjectManager.getProjectsMap() + .keySet() + .toArray(new String[0]); + } + + private String[] getSubCommands() { + return new String[] { RESET, COPY, UNLOCK, UNLOCK_UPGRADE, LOCK, LIST }; + } + + private String[] getListArguments() { + return new String[] { ALL, AVAILABLE, UNLOCKED }; + } + + private void processReset(ICommandSender sender, String playerName) { + UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); + SpaceProjectManager.spaceTeamProjects.put(tID, null); + SpaceProjectWorldSavedData.INSTANCE.markDirty(); + sender.addChatMessage(new ChatComponentText("Cleared away map")); + } + + private void processLock(ICommandSender sender, String projectName, String location, String playerName) { + UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); + SpaceProjectManager.addTeamProject(tID, getLocation(location), projectName, null); + sender.addChatMessage(new ChatComponentText("Project locked")); + } + + private void processUnlock(ICommandSender sender, String projectName, String location, String playerName) { + UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); + ISpaceProject tProject = SpaceProjectManager.getTeamProjectOrCopy(tID, projectName, getLocation(location)); + if (tProject != null) { + tProject.setProjectCurrentStage(tProject.getTotalStages()); + SpaceProjectManager.addTeamProject(tID, getLocation(location), projectName, tProject); + sender.addChatMessage(new ChatComponentText("Project unlocked")); + } else { + sender.addChatMessage(new ChatComponentText("Incorrect internal project name. Try again")); + } + } + + private void processUnlock(ICommandSender sender, String projectName, String location, String upgradeName, + String playerName) { + UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); + ISpaceProject tProject = SpaceProjectManager.getTeamProjectOrCopy(tID, projectName, getLocation(location)); + if (tProject != null) { + ISpaceProject.ISP_Upgrade upgrade = tProject.getUpgrade(upgradeName); + if (upgrade == null) { + sender.addChatMessage(new ChatComponentText("Incorrect internal project upgrade name. Try again")); + return; + } + if (!tProject.isFinished()) { + tProject.setProjectCurrentStage(tProject.getTotalStages()); + SpaceProjectManager.addTeamProject(tID, getLocation(location), projectName, tProject); + } + tProject.setBuiltUpgrade(upgrade); + sender.addChatMessage(new ChatComponentText("Project Upgrade unlocked")); + } else { + sender.addChatMessage(new ChatComponentText("Incorrect internal project name. Try again")); + } + } + + private void processList(ICommandSender sender, String argument, String playerName) { + UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); + switch (argument) { + case ALL -> { + for (String project : SpaceProjectManager.getProjectsMap() + .keySet()) { + sender.addChatMessage(new ChatComponentText(project)); + } + } + case AVAILABLE -> { + for (ISpaceProject project : SpaceProjectManager.getAllProjects()) { + if (project.meetsRequirements(tID, false)) { + sender.addChatMessage(new ChatComponentText(project.getProjectName())); + } + } + } + case UNLOCKED -> { + for (ISpaceProject project : SpaceProjectManager.getTeamSpaceProjects(tID)) { + sender.addChatMessage(new ChatComponentText(project.getProjectName())); + } + } + } + } + + private void processCopy(ICommandSender sender, String playerToCopyFrom, String playerCopyingTo) { + // This will take a while + } + + private void printHelp(ICommandSender sender) { + + } +} 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 deleted file mode 100644 index 896c7e1052..0000000000 --- a/src/main/java/gregtech/common/misc/spaceprojects/commands/SPM_Command.java +++ /dev/null @@ -1,288 +0,0 @@ -package gregtech.common.misc.spaceprojects.commands; - -import static gregtech.common.misc.spaceprojects.SpaceProjectManager.getLocation; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; - -import net.minecraft.command.CommandBase; -import net.minecraft.command.ICommandSender; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentText; - -import gregtech.common.misc.spaceprojects.SpaceProjectManager; -import gregtech.common.misc.spaceprojects.SpaceProjectWorldSavedData; -import gregtech.common.misc.spaceprojects.interfaces.ISpaceProject; - -/** - * @author BlueWeabo - */ -public class SPM_Command extends CommandBase { - - private static final String RESET = "reset"; - private static final String UNLOCK = "unlock"; - private static final String UNLOCK_UPGRADE = "unlock_upgrade"; - private static final String LOCK = "lock"; - private static final String LIST = "list"; - private static final String ALL = "-all"; - private static final String AVAILABLE = "-available"; - private static final String UNLOCKED = "-unlocked"; - private static final String COPY = "copy"; - - @Override - public String getCommandName() { - return "spm"; - } - - @Override - public int getRequiredPermissionLevel() { - return 0; - } - - @Override - public String getCommandUsage(ICommandSender sender) { - return "/" + this.getCommandName() + " . Available subCommands: reset, unlock, lock, list, copy"; - } - - @Override - public void processCommand(ICommandSender sender, String[] arguments) { - if (arguments.length < 1) { - printHelp(sender); - return; - } - switch (arguments[0]) { - case RESET: - if (!sender.canCommandSenderUseCommand(4, getCommandName())) { - sender.addChatMessage( - new ChatComponentText("You don't have the permissions to execute this command")); - return; - } - processReset(sender, arguments.length >= 2 ? arguments[1] : sender.getCommandSenderName()); - break; - case UNLOCK: - if (!sender.canCommandSenderUseCommand(4, getCommandName())) { - sender.addChatMessage( - new ChatComponentText("You don't have the permissions to execute this command")); - return; - } - if (arguments.length < 3) { - sender.addChatMessage( - new ChatComponentText("Not enough arguments. Needs to mention a project and a location")); - return; - } - processUnlock( - sender, - arguments[1], - arguments[2], - arguments.length >= 4 ? arguments[3] : sender.getCommandSenderName()); - break; - case UNLOCK_UPGRADE: - if (!sender.canCommandSenderUseCommand(4, getCommandName())) { - sender.addChatMessage( - new ChatComponentText("You don't have the permissions to execute this command")); - return; - } - if (arguments.length < 4) { - sender.addChatMessage( - new ChatComponentText( - "Not enough arguments. Needs to mention a project a location and an upgrade name")); - return; - } - processUnlock( - sender, - arguments[1], - arguments[2], - arguments[3], - arguments.length >= 5 ? arguments[4] : sender.getCommandSenderName()); - break; - case LOCK: - if (!sender.canCommandSenderUseCommand(4, getCommandName())) { - sender.addChatMessage( - new ChatComponentText("You don't have the permissions to execute this command")); - return; - } - if (arguments.length < 3) { - sender.addChatMessage( - new ChatComponentText("Not enough arguments. Needs to mention a project and a location")); - return; - } - processLock( - sender, - arguments[1], - arguments[2], - arguments.length >= 4 ? arguments[3] : sender.getCommandSenderName()); - case LIST: - if (arguments.length < 2) { - sender.addChatMessage( - new ChatComponentText( - "No Argument for list subCommand. Usage /spm list -all, -available or -unlocked")); - return; - } - processList(sender, arguments[1], arguments.length >= 3 ? arguments[2] : sender.getCommandSenderName()); - break; - case COPY: - if (!sender.canCommandSenderUseCommand(4, getCommandName())) { - sender.addChatMessage( - new ChatComponentText("You don't have the permissions to execute this command")); - return; - } - if (arguments.length < 3) { - sender.addChatMessage(new ChatComponentText("Not enough arguments. Needs to mention 2 players")); - return; - } - processCopy(sender, arguments[1], arguments[2]); - break; - } - } - - @Override - public List addTabCompletionOptions(ICommandSender sender, String[] arguments) { - List autoComplete = new ArrayList<>(); - String filter = arguments.length == 0 ? "" : arguments[0].trim(); - switch (arguments.length) { - case 1 -> autoComplete.addAll(Arrays.asList(getSubCommands())); - case 2 -> { - filter = arguments[1].trim(); - if (arguments[0].equals(LIST)) { - autoComplete.addAll(Arrays.asList(getListArguments())); - } else if (arguments[0].equals(COPY) || arguments[0].equals(RESET)) { - autoComplete.addAll(Arrays.asList(getPlayers())); - } else { - autoComplete.addAll(Arrays.asList(getProjects())); - } - } - case 3 -> { - filter = arguments[2].trim(); - if (arguments[1].equals(ALL)) {} else if (arguments[0].equals(LIST)) { - autoComplete.addAll(Arrays.asList(getPlayers())); - } else { - autoComplete.addAll(Arrays.asList(getLocations())); - } - } - case 4 -> { - filter = arguments[3].trim(); - if (arguments[0].equals(UNLOCK_UPGRADE)) { - ISpaceProject project = SpaceProjectManager.getProject(arguments[2]); - if (project != null) { - autoComplete.addAll( - project.getAllUpgrades() - .stream() - .map(ISpaceProject.ISP_Upgrade::getUnlocalizedName) - .collect(Collectors.toList())); - } - } else { - autoComplete.addAll(Arrays.asList(getPlayers())); - } - } - } - String finalFilter = filter; - return autoComplete.stream() - .filter(s -> finalFilter.isEmpty() || s.startsWith(finalFilter)) - .collect(Collectors.toList()); - } - - private String[] getPlayers() { - return MinecraftServer.getServer() - .getAllUsernames(); - } - - private String[] getLocations() { - return SpaceProjectManager.getLocationNames() - .toArray(new String[0]); - } - - private String[] getProjects() { - return SpaceProjectManager.getProjectsMap() - .keySet() - .toArray(new String[0]); - } - - private String[] getSubCommands() { - return new String[] { RESET, COPY, UNLOCK, UNLOCK_UPGRADE, LOCK, LIST }; - } - - private String[] getListArguments() { - return new String[] { ALL, AVAILABLE, UNLOCKED }; - } - - private void processReset(ICommandSender sender, String playerName) { - UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); - SpaceProjectManager.spaceTeamProjects.put(tID, null); - SpaceProjectWorldSavedData.INSTANCE.markDirty(); - sender.addChatMessage(new ChatComponentText("Cleared away map")); - } - - private void processLock(ICommandSender sender, String projectName, String location, String playerName) { - UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); - SpaceProjectManager.addTeamProject(tID, getLocation(location), projectName, null); - sender.addChatMessage(new ChatComponentText("Project locked")); - } - - private void processUnlock(ICommandSender sender, String projectName, String location, String playerName) { - UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); - ISpaceProject tProject = SpaceProjectManager.getTeamProjectOrCopy(tID, projectName, getLocation(location)); - if (tProject != null) { - tProject.setProjectCurrentStage(tProject.getTotalStages()); - SpaceProjectManager.addTeamProject(tID, getLocation(location), projectName, tProject); - sender.addChatMessage(new ChatComponentText("Project unlocked")); - } else { - sender.addChatMessage(new ChatComponentText("Incorrect internal project name. Try again")); - } - } - - private void processUnlock(ICommandSender sender, String projectName, String location, String upgradeName, - String playerName) { - UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); - ISpaceProject tProject = SpaceProjectManager.getTeamProjectOrCopy(tID, projectName, getLocation(location)); - if (tProject != null) { - ISpaceProject.ISP_Upgrade upgrade = tProject.getUpgrade(upgradeName); - if (upgrade == null) { - sender.addChatMessage(new ChatComponentText("Incorrect internal project upgrade name. Try again")); - return; - } - if (!tProject.isFinished()) { - tProject.setProjectCurrentStage(tProject.getTotalStages()); - SpaceProjectManager.addTeamProject(tID, getLocation(location), projectName, tProject); - } - tProject.setBuiltUpgrade(upgrade); - sender.addChatMessage(new ChatComponentText("Project Upgrade unlocked")); - } else { - sender.addChatMessage(new ChatComponentText("Incorrect internal project name. Try again")); - } - } - - private void processList(ICommandSender sender, String argument, String playerName) { - UUID tID = SpaceProjectManager.getPlayerUUIDFromName(playerName); - switch (argument) { - case ALL -> { - for (String project : SpaceProjectManager.getProjectsMap() - .keySet()) { - sender.addChatMessage(new ChatComponentText(project)); - } - } - case AVAILABLE -> { - for (ISpaceProject project : SpaceProjectManager.getAllProjects()) { - if (project.meetsRequirements(tID, false)) { - sender.addChatMessage(new ChatComponentText(project.getProjectName())); - } - } - } - case UNLOCKED -> { - for (ISpaceProject project : SpaceProjectManager.getTeamSpaceProjects(tID)) { - sender.addChatMessage(new ChatComponentText(project.getProjectName())); - } - } - } - } - - private void processCopy(ICommandSender sender, String playerToCopyFrom, String playerCopyingTo) { - // This will take a while - } - - private void printHelp(ICommandSender sender) { - - } -} diff --git a/src/main/java/gregtech/common/misc/spaceprojects/commands/SP_Command.java b/src/main/java/gregtech/common/misc/spaceprojects/commands/SP_Command.java deleted file mode 100644 index 3c4ad00932..0000000000 --- a/src/main/java/gregtech/common/misc/spaceprojects/commands/SP_Command.java +++ /dev/null @@ -1,166 +0,0 @@ -package gregtech.common.misc.spaceprojects.commands; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.WeakHashMap; -import java.util.stream.Collectors; - -import net.minecraft.command.CommandBase; -import net.minecraft.command.ICommandSender; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.EnumChatFormatting; - -import org.apache.commons.lang3.tuple.Pair; - -import gregtech.api.util.GT_Utility; -import gregtech.common.misc.spaceprojects.SpaceProjectManager; - -/** - * @author BlueWeabo - */ -public class SP_Command extends CommandBase { - - private static final Set> invite = Collections - .newSetFromMap(new WeakHashMap<>()); - private static final Set confirm = Collections.newSetFromMap(new WeakHashMap<>()); - - private static final String INVITE = "invite"; - private static final String ACCEPT = "accept"; - private static final String LEAVE = "leave"; - private static final String CONFIRM = "confirm"; - - @Override - public String getCommandName() { - return "sp"; - } - - @Override - public int getRequiredPermissionLevel() { - return 0; - } - - @Override - public String getCommandUsage(ICommandSender sender) { - return "/" + getCommandName() + " [PlayerName]"; - } - - @Override - public void processCommand(ICommandSender sender, String[] arguments) { - if (arguments.length < 1) { - return; - } - switch (arguments[0]) { - case INVITE -> { - if (arguments.length < 2) { - return; - } - processInvite(sender, arguments[1]); - } - case ACCEPT -> { - if (arguments.length < 2) { - return; - } - processAccept(sender, arguments[1]); - } - case LEAVE -> processLeave(sender); - case CONFIRM -> processConfirm(sender); - } - } - - private void processInvite(ICommandSender sender, String playerInvited) { - EntityPlayerMP teamLeader = getCommandSenderAsPlayer(sender); - EntityPlayerMP teamMember = getPlayer(sender, playerInvited); - invite.add(Pair.of(teamMember, teamLeader)); - String message = EnumChatFormatting.GOLD + teamLeader.getCommandSenderName() - + EnumChatFormatting.RESET - + " has sent you an invite to join their team. Accept it with" - + EnumChatFormatting.GOLD - + " /sp accept " - + teamLeader.getCommandSenderName(); - GT_Utility.sendChatToPlayer(teamMember, message); - } - - private void processAccept(ICommandSender sender, String playerInviter) { - EntityPlayerMP teamMember = getCommandSenderAsPlayer(sender); - EntityPlayerMP teamLeader = getPlayer(sender, playerInviter); - if (invite.contains(Pair.of(teamMember, teamLeader))) { - String message = EnumChatFormatting.GOLD + teamMember.getCommandSenderName() - + EnumChatFormatting.RESET - + " has accepted the invite."; - SpaceProjectManager.putInTeam(teamMember.getUniqueID(), teamLeader.getUniqueID()); - GT_Utility.sendChatToPlayer(teamLeader, message); - invite.remove(Pair.of(teamMember, teamLeader)); - } - } - - private void processLeave(ICommandSender sender) { - EntityPlayerMP player = getCommandSenderAsPlayer(sender); - String message = "Are you sure you want to leave the team. You will lose all progress. Use " - + EnumChatFormatting.GOLD - + "/sp confirm" - + EnumChatFormatting.RESET - + " to confirm this. This does nothing if you are the team leader."; - GT_Utility.sendChatToPlayer(player, message); - confirm.add(player); - } - - private void processConfirm(ICommandSender sender) { - EntityPlayerMP player = getCommandSenderAsPlayer(sender); - if (confirm.contains(player)) { - String message = "Successfully left the team."; - SpaceProjectManager.putInTeam(player.getUniqueID(), player.getUniqueID()); - GT_Utility.sendChatToPlayer(player, message); - confirm.remove(player); - } - } - - @Override - public List addTabCompletionOptions(ICommandSender sender, String[] arguments) { - List autoComplete = new ArrayList<>(); - String filter = arguments.length == 0 ? "" : arguments[0].trim(); - switch (arguments.length) { - case 1 -> autoComplete.addAll(Arrays.asList(getSubCommands())); - case 2 -> { - filter = arguments[1].trim(); - if (arguments[0].equals(INVITE)) { - autoComplete.addAll(Arrays.asList(getPlayers())); - break; - } - - if (arguments[0].equals(CONFIRM)) { - Optional> pairOpt = invite.stream() - .filter( - (e) -> e.getKey() - .getUniqueID() == getCommandSenderAsPlayer(sender).getUniqueID()) - .findFirst(); - if (pairOpt.isPresent()) { - autoComplete.add( - SpaceProjectManager.getPlayerNameFromUUID( - pairOpt.get() - .getRight() - .getUniqueID())); - } - } - } - } - String finalFilter = filter; - return autoComplete.stream() - .filter(s -> finalFilter.isEmpty() || s.startsWith(finalFilter)) - .collect(Collectors.toList()); - } - - private String[] getPlayers() { - return MinecraftServer.getServer() - .getAllUsernames(); - } - - private String[] getSubCommands() { - return new String[] { INVITE, ACCEPT, LEAVE, CONFIRM }; - } - -} diff --git a/src/main/java/gregtech/common/misc/spaceprojects/commands/SpaceProjectCommand.java b/src/main/java/gregtech/common/misc/spaceprojects/commands/SpaceProjectCommand.java new file mode 100644 index 0000000000..bd1408d80e --- /dev/null +++ b/src/main/java/gregtech/common/misc/spaceprojects/commands/SpaceProjectCommand.java @@ -0,0 +1,9 @@ +package gregtech.common.misc.spaceprojects.commands; + +public class SpaceProjectCommand extends SPCommand { + + @Override + public String getCommandName() { + return "spaceproject"; + } +} diff --git a/src/main/java/gregtech/common/misc/spaceprojects/commands/SpaceProject_Command.java b/src/main/java/gregtech/common/misc/spaceprojects/commands/SpaceProject_Command.java deleted file mode 100644 index 2f36175069..0000000000 --- a/src/main/java/gregtech/common/misc/spaceprojects/commands/SpaceProject_Command.java +++ /dev/null @@ -1,9 +0,0 @@ -package gregtech.common.misc.spaceprojects.commands; - -public class SpaceProject_Command extends SP_Command { - - @Override - public String getCommandName() { - return "spaceproject"; - } -} -- cgit