Skip to content

Commit

Permalink
Fixed Issues with RoseStacker (#545)
Browse files Browse the repository at this point in the history
  • Loading branch information
PeachesMLG authored Dec 31, 2021
1 parent f49b2ad commit 8b87c14
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ public final class IslandBlocks extends IslandData {
@DatabaseField(columnName = "amount", canBeNull = false)
private int amount;

@DatabaseField(columnName = "extra_amount", canBeNull = false)
private int extraAmount;

/**
* The default constructor.
*
Expand All @@ -46,4 +49,9 @@ public void setAmount(int amount) {
this.amount = amount;
setChanged(true);
}

public void setExtraAmount(int extraAmount) {
this.extraAmount = extraAmount;
setChanged(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ public final class IslandSpawners extends IslandData {
@DatabaseField(columnName = "amount", canBeNull = false)
private int amount;

@DatabaseField(columnName = "extra_amount", canBeNull = false)
private int extraAmount;

/**
* The default constructor.
*
Expand All @@ -41,4 +44,9 @@ public void setAmount(int amount) {
this.amount = amount;
setChanged(true);
}

public void setExtraAmount(int extraAmount) {
this.extraAmount = extraAmount;
setChanged(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
@Getter
public class DatabaseManager {

private final int version = 3;
private final int version = 4;
private IslandTableManager islandTableManager;
private UserTableManager userTableManager;
private ForeignIslandTableManager<IslandBan, Integer> islandBanTableManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -818,11 +818,13 @@ public synchronized Map<String, Mission> getDailyIslandMissions(@NotNull Island
}

public int getIslandBlockAmount(Island island, XMaterial material) {
return getIslandBlock(island, material).getAmount() + IridiumSkyblock.getInstance().getStackerSupport().getExtraBlocks(island, material);
int extraAmount = getPlayersOnIsland(island).size() == 0 ? getIslandBlock(island, material).getExtraAmount() : IridiumSkyblock.getInstance().getStackerSupport().getExtraBlocks(island, material);
return getIslandBlock(island, material).getAmount() + extraAmount;
}

public int getIslandSpawnerAmount(Island island, EntityType entityType) {
return getIslandSpawners(island, entityType).getAmount() + IridiumSkyblock.getInstance().getStackerSupport().getExtraSpawners(island, entityType);
int extraAmount = getPlayersOnIsland(island).size() == 0 ? getIslandSpawners(island, entityType).getExtraAmount() : IridiumSkyblock.getInstance().getStackerSupport().getExtraSpawners(island, entityType);
return getIslandSpawners(island, entityType).getAmount() + extraAmount;
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.iridium.iridiumskyblock.support;

import com.iridium.iridiumcore.dependencies.xseries.XMaterial;
import com.iridium.iridiumskyblock.IridiumSkyblock;
import com.iridium.iridiumskyblock.database.Island;
import com.iridium.iridiumskyblock.database.IslandBlocks;
import com.iridium.iridiumskyblock.database.IslandSpawners;
import dev.rosewood.rosestacker.api.RoseStackerAPI;
import dev.rosewood.rosestacker.stack.StackedBlock;
import dev.rosewood.rosestacker.stack.StackedSpawner;
Expand All @@ -11,23 +14,27 @@ public class RoseStackerSupport implements StackerSupport {

@Override
public int getExtraBlocks(Island island, XMaterial material) {
IslandBlocks islandBlocks = IridiumSkyblock.getInstance().getIslandManager().getIslandBlock(island, material);
int stackedBlocks = 0;
for (StackedBlock stackedBlock : RoseStackerAPI.getInstance().getStackedBlocks().values()) {
if (!island.isInIsland(stackedBlock.getLocation())) continue;
if (material != XMaterial.matchXMaterial(stackedBlock.getBlock().getType())) continue;
stackedBlocks += (stackedBlock.getStackSize() - 1);
}
islandBlocks.setExtraAmount(stackedBlocks);
return stackedBlocks;
}

@Override
public int getExtraSpawners(Island island, EntityType entityType) {
IslandSpawners islandSpawners = IridiumSkyblock.getInstance().getIslandManager().getIslandSpawners(island, entityType);
int stackedSpawners = 0;
for (StackedSpawner stackedSpawner : RoseStackerAPI.getInstance().getStackedSpawners().values()) {
if (!island.isInIsland(stackedSpawner.getLocation())) continue;
if (stackedSpawner.getSpawnerTile().getSpawnedType() != entityType) continue;
stackedSpawners += (stackedSpawner.getStackSize() - 1);
}
islandSpawners.setExtraAmount(stackedSpawners);
return stackedSpawners;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@
import com.bgsoftware.wildstacker.api.objects.StackedBarrel;
import com.bgsoftware.wildstacker.api.objects.StackedSpawner;
import com.iridium.iridiumcore.dependencies.xseries.XMaterial;
import com.iridium.iridiumskyblock.IridiumSkyblock;
import com.iridium.iridiumskyblock.database.Island;
import com.iridium.iridiumskyblock.database.IslandBlocks;
import com.iridium.iridiumskyblock.database.IslandSpawners;
import org.bukkit.entity.EntityType;

public class WildStackerSupport implements StackerSupport {

@Override
public int getExtraBlocks(Island island, XMaterial material) {
IslandBlocks islandBlocks = IridiumSkyblock.getInstance().getIslandManager().getIslandBlock(island, material);
int stackedBlocks = 0;
for (StackedBarrel stackedBarrel : WildStackerAPI.getWildStacker().getSystemManager().getStackedBarrels()) {
if (!island.isInIsland(stackedBarrel.getLocation())) continue;
Expand All @@ -22,17 +26,20 @@ public int getExtraBlocks(Island island, XMaterial material) {
stackedBlocks += stackedBarrel.getStackAmount();
}
}
islandBlocks.setExtraAmount(stackedBlocks);
return stackedBlocks;
}

@Override
public int getExtraSpawners(Island island, EntityType entityType) {
IslandSpawners islandSpawners = IridiumSkyblock.getInstance().getIslandManager().getIslandSpawners(island, entityType);
int stackedSpawners = 0;
for (StackedSpawner stackedSpawner : WildStackerAPI.getWildStacker().getSystemManager().getStackedSpawners()) {
if (!island.isInIsland(stackedSpawner.getLocation())) continue;
if (stackedSpawner.getSpawnedType() != entityType) continue;
stackedSpawners += stackedSpawner.getStackAmount();
}
islandSpawners.setExtraAmount(stackedSpawners);
return stackedSpawners;
}
}
2 changes: 2 additions & 0 deletions src/main/resources/patch_4.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER TABLE island_blocks ADD COLUMN extra_amount INTEGER PRECISION DEFAULT 0.00;
ALTER TABLE island_spawners ADD COLUMN extra_amount INTEGER PRECISION DEFAULT 0.00;

0 comments on commit 8b87c14

Please sign in to comment.