Revamp altar to only use EnumAltarComponent
- Removes internal references in API - Makes full use of the idea of the API - No more special checks
This commit is contained in:
parent
6db9b51350
commit
96d94721c4
9 changed files with 104 additions and 140 deletions
|
@ -1,9 +1,6 @@
|
|||
package WayofTime.bloodmagic.api.altar;
|
||||
|
||||
import WayofTime.bloodmagic.api.BlockStack;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.BlockPos;
|
||||
|
||||
/**
|
||||
|
@ -13,24 +10,19 @@ import net.minecraft.util.BlockPos;
|
|||
public class AltarComponent {
|
||||
|
||||
private BlockPos offset;
|
||||
private BlockStack blockStack;
|
||||
private boolean bloodRune;
|
||||
private boolean upgradeSlot;
|
||||
|
||||
/**
|
||||
* @param offset - The position in the world relative to the MasterRitualStone
|
||||
* @param blockStack - The block and meta combination expected
|
||||
*/
|
||||
public AltarComponent(BlockPos offset, BlockStack blockStack) {
|
||||
this.offset = offset;
|
||||
this.blockStack = blockStack;
|
||||
}
|
||||
private EnumAltarComponent component;
|
||||
|
||||
/**
|
||||
* Non-meta based variant for ease of use.
|
||||
* Sets a component location for the altar.
|
||||
*
|
||||
* @param offset - Where the block should be in relation to the Altar
|
||||
* @param component - The type of Component the location should contain
|
||||
*/
|
||||
public AltarComponent(BlockPos offset, Block block) {
|
||||
this(offset, new BlockStack(block));
|
||||
public AltarComponent(BlockPos offset, EnumAltarComponent component) {
|
||||
this.offset = offset;
|
||||
this.component = component;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -38,18 +30,7 @@ public class AltarComponent {
|
|||
* of block does not matter.
|
||||
*/
|
||||
public AltarComponent(BlockPos offset) {
|
||||
this(offset, new BlockStack(Blocks.air));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the location to a Blood Rune. This does not mean that the location
|
||||
* can be used as an upgrade.
|
||||
*
|
||||
* @return the current instance for further use.
|
||||
*/
|
||||
public AltarComponent setBloodRune() {
|
||||
this.bloodRune = true;
|
||||
return this;
|
||||
this(offset, EnumAltarComponent.NOTAIR);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -6,5 +6,6 @@ public enum EnumAltarComponent {
|
|||
BLOODSTONE,
|
||||
BEACON,
|
||||
BLOODRUNE,
|
||||
CRYSTAL
|
||||
CRYSTAL,
|
||||
NOTAIR
|
||||
}
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
package WayofTime.bloodmagic.api.altar;
|
||||
|
||||
import WayofTime.bloodmagic.api.BlockStack;
|
||||
import WayofTime.bloodmagic.registry.ModBlocks;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.BlockPos;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -14,28 +11,28 @@ public enum EnumAltarTier {
|
|||
TWO() {
|
||||
@Override
|
||||
public void buildComponents() {
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, -1), ModBlocks.bloodRune).setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, -1), ModBlocks.bloodRune).setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 1), ModBlocks.bloodRune).setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), ModBlocks.bloodRune).setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, -1), EnumAltarComponent.BLOODRUNE));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, -1), EnumAltarComponent.BLOODRUNE));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 1), EnumAltarComponent.BLOODRUNE));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), EnumAltarComponent.BLOODRUNE));
|
||||
}
|
||||
},
|
||||
THREE() {
|
||||
@Override
|
||||
public void buildComponents() {
|
||||
altarComponents.addAll(TWO.getAltarComponents());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, -1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, -1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-3, -1, -3)));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-3, 0, -3)));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(3, -1, -3)));
|
||||
|
@ -44,16 +41,16 @@ public enum EnumAltarTier {
|
|||
altarComponents.add(new AltarComponent(new BlockPos(-3, 0, 3)));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(3, -1, 3)));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(3, 0, 3)));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-3, 1, -3), Blocks.glowstone));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(3, 1, -3), Blocks.glowstone));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-3, 1, 3), Blocks.glowstone));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(3, 1, 3), Blocks.glowstone));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-3, 1, -3), EnumAltarComponent.GLOWSTONE));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(3, 1, -3), EnumAltarComponent.GLOWSTONE));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-3, 1, 3), EnumAltarComponent.GLOWSTONE));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(3, 1, 3), EnumAltarComponent.GLOWSTONE));
|
||||
|
||||
for (int i = -2; i <= 2; i++) {
|
||||
altarComponents.add(new AltarComponent(new BlockPos(3, -2, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-3, -2, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -2, 3), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -2, -3), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(3, -2, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-3, -2, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -2, 3), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -2, -3), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -63,10 +60,10 @@ public enum EnumAltarTier {
|
|||
altarComponents.addAll(THREE.getAltarComponents());
|
||||
|
||||
for (int i = -3; i <= 3; i++) {
|
||||
altarComponents.add(new AltarComponent(new BlockPos(5, -3, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-5, -3, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -3, 5), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -3, -5), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(5, -3, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-5, -3, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -3, 5), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -3, -5), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
}
|
||||
|
||||
for (int i = -2; i <= 1; i++) {
|
||||
|
@ -76,26 +73,26 @@ public enum EnumAltarTier {
|
|||
altarComponents.add(new AltarComponent(new BlockPos(-5, i, 5)));
|
||||
}
|
||||
|
||||
altarComponents.add(new AltarComponent(new BlockPos(5, 2, 5), new BlockStack(ModBlocks.bloodStoneBrick, 1)));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(5, 2, -5), new BlockStack(ModBlocks.bloodStoneBrick, 1)));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-5, 2, -5), new BlockStack(ModBlocks.bloodStoneBrick, 1)));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-5, 2, 5), new BlockStack(ModBlocks.bloodStoneBrick, 1)));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(5, 2, 5), EnumAltarComponent.BLOODSTONE));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(5, 2, -5), EnumAltarComponent.BLOODSTONE));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-5, 2, -5), EnumAltarComponent.BLOODSTONE));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-5, 2, 5), EnumAltarComponent.BLOODSTONE));
|
||||
}
|
||||
},
|
||||
FIVE() {
|
||||
@Override
|
||||
public void buildComponents() {
|
||||
altarComponents.addAll(FOUR.getAltarComponents());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-8, -3, 8), Blocks.beacon));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-8, -3, -8), Blocks.beacon));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(8, -3, -8), Blocks.beacon));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(8, -3, 8), Blocks.beacon));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-8, -3, 8), EnumAltarComponent.BEACON));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-8, -3, -8), EnumAltarComponent.BEACON));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(8, -3, -8), EnumAltarComponent.BEACON));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(8, -3, 8), EnumAltarComponent.BEACON));
|
||||
|
||||
for (int i = -6; i <= 6; i++) {
|
||||
altarComponents.add(new AltarComponent(new BlockPos(8, -4, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-8, -4, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -4, 8), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -4, -8), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(8, -4, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-8, -4, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -4, 8), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -4, -8), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -111,16 +108,16 @@ public enum EnumAltarTier {
|
|||
altarComponents.add(new AltarComponent(new BlockPos(-11, i, 11)));
|
||||
}
|
||||
|
||||
altarComponents.add(new AltarComponent(new BlockPos(11, 3, 11), ModBlocks.crystal));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-11, 3, -11), ModBlocks.crystal));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(11, 3, -11), ModBlocks.crystal));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-11, 3, 11), ModBlocks.crystal));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(11, 3, 11), EnumAltarComponent.CRYSTAL));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-11, 3, -11), EnumAltarComponent.CRYSTAL));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(11, 3, -11), EnumAltarComponent.CRYSTAL));
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-11, 3, 11), EnumAltarComponent.CRYSTAL));
|
||||
|
||||
for (int i = -9; i <= 9; i++) {
|
||||
altarComponents.add(new AltarComponent(new BlockPos(11, -5, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-11, -5, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -5, 11), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -5, -11), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(11, -5, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(-11, -5, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -5, 11), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
altarComponents.add(new AltarComponent(new BlockPos(i, -5, -11), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -24,6 +24,8 @@ public interface IBloodAltar {
|
|||
|
||||
void startCycle();
|
||||
|
||||
void checkTier();
|
||||
|
||||
/**
|
||||
* Will set the altar to initiate a cooldown cycle after it crafts before starting to craft again, giving the user time to interact with the altar.
|
||||
* This can only be set while the altar is not active.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue