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
|
@ -3,12 +3,7 @@ package WayofTime.bloodmagic.altar;
|
||||||
import WayofTime.bloodmagic.api.BlockStack;
|
import WayofTime.bloodmagic.api.BlockStack;
|
||||||
import WayofTime.bloodmagic.api.altar.*;
|
import WayofTime.bloodmagic.api.altar.*;
|
||||||
import WayofTime.bloodmagic.block.BlockBloodRune;
|
import WayofTime.bloodmagic.block.BlockBloodRune;
|
||||||
import WayofTime.bloodmagic.block.BlockBloodStoneBrick;
|
import WayofTime.bloodmagic.util.Utils;
|
||||||
import WayofTime.bloodmagic.block.BlockCrystal;
|
|
||||||
import WayofTime.bloodmagic.registry.ModBlocks;
|
|
||||||
import net.minecraft.block.BlockBeacon;
|
|
||||||
import net.minecraft.block.BlockGlowstone;
|
|
||||||
import net.minecraft.init.Blocks;
|
|
||||||
import net.minecraft.util.BlockPos;
|
import net.minecraft.util.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
@ -42,17 +37,17 @@ public class BloodAltar {
|
||||||
BlockPos componentPos = worldPos.add(altarComponent.getOffset());
|
BlockPos componentPos = worldPos.add(altarComponent.getOffset());
|
||||||
BlockStack worldBlock = new BlockStack(world.getBlockState(componentPos).getBlock(), world.getBlockState(componentPos).getBlock().getMetaFromState(world.getBlockState(componentPos)));
|
BlockStack worldBlock = new BlockStack(world.getBlockState(componentPos).getBlock(), world.getBlockState(componentPos).getBlock().getMetaFromState(world.getBlockState(componentPos)));
|
||||||
|
|
||||||
if (altarComponent.isBloodRune()) {
|
if (altarComponent.getComponent() != EnumAltarComponent.NOTAIR) {
|
||||||
if (!checkRune(altarComponent, worldBlock)) {
|
if (worldBlock.getBlock() instanceof IAltarComponent) {
|
||||||
|
EnumAltarComponent component = ((IAltarComponent) worldBlock.getBlock()).getType(worldBlock.getMeta());
|
||||||
|
if (component != altarComponent.getComponent())
|
||||||
|
return false;
|
||||||
|
} else if (worldBlock.getBlock() != Utils.getBlockForComponent(altarComponent.getComponent())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (!altarComponent.isBloodRune()) {
|
} else {
|
||||||
if (world.isAirBlock(componentPos)) return false;
|
if (world.isAirBlock(componentPos))
|
||||||
if (((altarComponent.getBlockStack().getBlock() != worldBlock.getBlock()) || (altarComponent.getBlockStack().getMeta() != worldBlock.getMeta()))) {
|
return false;
|
||||||
if (!checkSpecials(altarComponent, worldBlock)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,37 +112,4 @@ public class BloodAltar {
|
||||||
|
|
||||||
return upgrades;
|
return upgrades;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean checkRune(AltarComponent altarComponent, BlockStack blockStack) {
|
|
||||||
if (altarComponent.getBlockStack().getBlock() == ModBlocks.bloodRune) {
|
|
||||||
if (blockStack.getBlock() instanceof BlockBloodRune || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.BLOODRUNE))) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean checkSpecials(AltarComponent altarComponent, BlockStack blockStack) {
|
|
||||||
if (altarComponent.getBlockStack().getBlock() == ModBlocks.bloodStoneBrick)
|
|
||||||
if (blockStack.getBlock() instanceof BlockBloodStoneBrick || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.BLOODSTONE)))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (altarComponent.getBlockStack().getBlock() == ModBlocks.crystal)
|
|
||||||
if (blockStack.getBlock() instanceof BlockCrystal || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.CRYSTAL)))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (altarComponent.getBlockStack().getBlock() == Blocks.glowstone)
|
|
||||||
if (blockStack.getBlock() instanceof BlockGlowstone || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.GLOWSTONE)))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (altarComponent.getBlockStack().getBlock() == Blocks.beacon)
|
|
||||||
if (blockStack.getBlock() instanceof BlockBeacon || (blockStack.getBlock() instanceof IAltarComponent && (((IAltarComponent) blockStack.getBlock()).getType(blockStack.getMeta()) == EnumAltarComponent.BEACON)))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (altarComponent.getBlockStack().getBlock() == Blocks.air)
|
|
||||||
if (blockStack.getBlock() != Blocks.air)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
package WayofTime.bloodmagic.api.altar;
|
package WayofTime.bloodmagic.api.altar;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.BlockStack;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.init.Blocks;
|
|
||||||
import net.minecraft.util.BlockPos;
|
import net.minecraft.util.BlockPos;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,24 +10,19 @@ import net.minecraft.util.BlockPos;
|
||||||
public class AltarComponent {
|
public class AltarComponent {
|
||||||
|
|
||||||
private BlockPos offset;
|
private BlockPos offset;
|
||||||
private BlockStack blockStack;
|
|
||||||
private boolean bloodRune;
|
|
||||||
private boolean upgradeSlot;
|
private boolean upgradeSlot;
|
||||||
|
|
||||||
/**
|
private EnumAltarComponent component;
|
||||||
* @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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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) {
|
public AltarComponent(BlockPos offset, EnumAltarComponent component) {
|
||||||
this(offset, new BlockStack(block));
|
this.offset = offset;
|
||||||
|
this.component = component;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -38,18 +30,7 @@ public class AltarComponent {
|
||||||
* of block does not matter.
|
* of block does not matter.
|
||||||
*/
|
*/
|
||||||
public AltarComponent(BlockPos offset) {
|
public AltarComponent(BlockPos offset) {
|
||||||
this(offset, new BlockStack(Blocks.air));
|
this(offset, EnumAltarComponent.NOTAIR);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6,5 +6,6 @@ public enum EnumAltarComponent {
|
||||||
BLOODSTONE,
|
BLOODSTONE,
|
||||||
BEACON,
|
BEACON,
|
||||||
BLOODRUNE,
|
BLOODRUNE,
|
||||||
CRYSTAL
|
CRYSTAL,
|
||||||
|
NOTAIR
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
package WayofTime.bloodmagic.api.altar;
|
package WayofTime.bloodmagic.api.altar;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.BlockStack;
|
|
||||||
import WayofTime.bloodmagic.registry.ModBlocks;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.init.Blocks;
|
|
||||||
import net.minecraft.util.BlockPos;
|
import net.minecraft.util.BlockPos;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -14,28 +11,28 @@ public enum EnumAltarTier {
|
||||||
TWO() {
|
TWO() {
|
||||||
@Override
|
@Override
|
||||||
public void buildComponents() {
|
public void buildComponents() {
|
||||||
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), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
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(-1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
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), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), ModBlocks.bloodRune).setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 1), EnumAltarComponent.BLOODRUNE));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
THREE() {
|
THREE() {
|
||||||
@Override
|
@Override
|
||||||
public void buildComponents() {
|
public void buildComponents() {
|
||||||
altarComponents.addAll(TWO.getAltarComponents());
|
altarComponents.addAll(TWO.getAltarComponents());
|
||||||
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), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(0, -1, -1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
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(-1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(-1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(1, -1, 0), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
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), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(0, -1, 1), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
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(-3, -1, -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, 0, -3)));
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(3, -1, -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, 0, 3)));
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(3, -1, 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, 0, 3)));
|
||||||
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), Blocks.glowstone));
|
altarComponents.add(new AltarComponent(new BlockPos(3, 1, -3), EnumAltarComponent.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), Blocks.glowstone));
|
altarComponents.add(new AltarComponent(new BlockPos(3, 1, 3), EnumAltarComponent.GLOWSTONE));
|
||||||
|
|
||||||
for (int i = -2; i <= 2; i++) {
|
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), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(-3, -2, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(-3, -2, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(i, -2, 3), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(i, -2, 3), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(i, -2, -3), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(i, -2, -3), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -63,10 +60,10 @@ public enum EnumAltarTier {
|
||||||
altarComponents.addAll(THREE.getAltarComponents());
|
altarComponents.addAll(THREE.getAltarComponents());
|
||||||
|
|
||||||
for (int i = -3; i <= 3; i++) {
|
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), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(-5, -3, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(-5, -3, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(i, -3, 5), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(i, -3, 5), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(i, -3, -5), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(i, -3, -5), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = -2; i <= 1; i++) {
|
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, 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), EnumAltarComponent.BLOODSTONE));
|
||||||
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), 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), new BlockStack(ModBlocks.bloodStoneBrick, 1)));
|
altarComponents.add(new AltarComponent(new BlockPos(-5, 2, 5), EnumAltarComponent.BLOODSTONE));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
FIVE() {
|
FIVE() {
|
||||||
@Override
|
@Override
|
||||||
public void buildComponents() {
|
public void buildComponents() {
|
||||||
altarComponents.addAll(FOUR.getAltarComponents());
|
altarComponents.addAll(FOUR.getAltarComponents());
|
||||||
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), Blocks.beacon));
|
altarComponents.add(new AltarComponent(new BlockPos(-8, -3, -8), EnumAltarComponent.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), Blocks.beacon));
|
altarComponents.add(new AltarComponent(new BlockPos(8, -3, 8), EnumAltarComponent.BEACON));
|
||||||
|
|
||||||
for (int i = -6; i <= 6; i++) {
|
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), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(-8, -4, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(-8, -4, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(i, -4, 8), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(i, -4, 8), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(i, -4, -8), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
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, i, 11)));
|
||||||
}
|
}
|
||||||
|
|
||||||
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), ModBlocks.crystal));
|
altarComponents.add(new AltarComponent(new BlockPos(-11, 3, -11), EnumAltarComponent.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), ModBlocks.crystal));
|
altarComponents.add(new AltarComponent(new BlockPos(-11, 3, 11), EnumAltarComponent.CRYSTAL));
|
||||||
|
|
||||||
for (int i = -9; i <= 9; i++) {
|
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), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(-11, -5, i), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(-11, -5, i), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(i, -5, 11), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(i, -5, 11), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
altarComponents.add(new AltarComponent(new BlockPos(i, -5, -11), ModBlocks.bloodRune).setUpgradeSlot().setBloodRune());
|
altarComponents.add(new AltarComponent(new BlockPos(i, -5, -11), EnumAltarComponent.BLOODRUNE).setUpgradeSlot());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,6 +24,8 @@ public interface IBloodAltar {
|
||||||
|
|
||||||
void startCycle();
|
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.
|
* 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.
|
* This can only be set while the altar is not active.
|
||||||
|
|
|
@ -6,13 +6,14 @@ import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.altar.AltarComponent;
|
import WayofTime.bloodmagic.api.altar.AltarComponent;
|
||||||
import WayofTime.bloodmagic.api.altar.EnumAltarTier;
|
import WayofTime.bloodmagic.api.altar.EnumAltarTier;
|
||||||
import WayofTime.bloodmagic.api.altar.IAltarManipulator;
|
import WayofTime.bloodmagic.api.altar.IAltarManipulator;
|
||||||
|
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
import WayofTime.bloodmagic.block.BlockAltar;
|
import WayofTime.bloodmagic.block.BlockAltar;
|
||||||
import WayofTime.bloodmagic.util.ChatUtil;
|
import WayofTime.bloodmagic.util.ChatUtil;
|
||||||
|
import WayofTime.bloodmagic.util.Utils;
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Blocks;
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.BlockPos;
|
import net.minecraft.util.BlockPos;
|
||||||
|
@ -91,17 +92,12 @@ public class ItemAltarMaker extends Item implements IAltarManipulator {
|
||||||
|
|
||||||
for (AltarComponent altarComponent : tierToBuild.getAltarComponents()) {
|
for (AltarComponent altarComponent : tierToBuild.getAltarComponents()) {
|
||||||
BlockPos componentPos = pos.add(altarComponent.getOffset());
|
BlockPos componentPos = pos.add(altarComponent.getOffset());
|
||||||
IBlockState blockState = altarComponent.getBlockStack().getBlock().getStateFromMeta(altarComponent.getBlockStack().getMeta());
|
Block blockForComponent = Utils.getBlockForComponent(altarComponent.getComponent());
|
||||||
|
|
||||||
if (altarComponent.getBlockStack().getBlock().equals(Blocks.air))
|
world.setBlockState(componentPos, blockForComponent.getDefaultState(), 3);
|
||||||
world.setBlockState(componentPos, Blocks.stonebrick.getStateFromMeta(0));
|
|
||||||
else
|
|
||||||
world.setBlockState(componentPos, blockState);
|
|
||||||
|
|
||||||
world.markBlockForUpdate(componentPos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
world.markBlockForUpdate(pos);
|
((IBloodAltar) world.getTileEntity(pos)).checkTier();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String destroyAltar(EntityPlayer player) {
|
public String destroyAltar(EntityPlayer player) {
|
||||||
|
|
|
@ -5,6 +5,8 @@ import WayofTime.bloodmagic.api.iface.IAltarReader;
|
||||||
import WayofTime.bloodmagic.api.iface.ISigil;
|
import WayofTime.bloodmagic.api.iface.ISigil;
|
||||||
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
|
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
||||||
|
import WayofTime.bloodmagic.tile.TileAltar;
|
||||||
import WayofTime.bloodmagic.util.ChatUtil;
|
import WayofTime.bloodmagic.util.ChatUtil;
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
@ -22,6 +24,10 @@ public class ItemSigilDivination extends ItemSigilBase implements ISigil, IAltar
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
|
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
|
||||||
|
|
||||||
|
if (PlayerHelper.isFakePlayer(player))
|
||||||
|
return stack;
|
||||||
|
|
||||||
super.onItemRightClick(stack, world, player);
|
super.onItemRightClick(stack, world, player);
|
||||||
|
|
||||||
if (!world.isRemote) {
|
if (!world.isRemote) {
|
||||||
|
@ -41,8 +47,9 @@ public class ItemSigilDivination extends ItemSigilBase implements ISigil, IAltar
|
||||||
int tier = altar.getTier().ordinal() + 1;
|
int tier = altar.getTier().ordinal() + 1;
|
||||||
currentEssence = altar.getCurrentBlood();
|
currentEssence = altar.getCurrentBlood();
|
||||||
int capacity = altar.getCapacity();
|
int capacity = altar.getCapacity();
|
||||||
|
altar.checkTier();
|
||||||
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentAltarTier", tier), TextHelper.localize(tooltipBase + "currentEssence", currentEssence), TextHelper.localize(tooltipBase + "currentAltarCapacity", capacity));
|
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentAltarTier", tier), TextHelper.localize(tooltipBase + "currentEssence", currentEssence), TextHelper.localize(tooltipBase + "currentAltarCapacity", capacity));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentEssence", currentEssence));
|
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentEssence", currentEssence));
|
||||||
}
|
}
|
||||||
|
|
|
@ -303,7 +303,8 @@ public class TileAltar extends TileInventory implements IBloodAltar, ITickable,
|
||||||
getWorld().markBlockForUpdate(pos);
|
getWorld().markBlockForUpdate(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkTier() {
|
@Override
|
||||||
|
public void checkTier() {
|
||||||
EnumAltarTier tier = BloodAltar.getAltarTier(getWorld(), getPos());
|
EnumAltarTier tier = BloodAltar.getAltarTier(getWorld(), getPos());
|
||||||
this.altarTier = tier;
|
this.altarTier = tier;
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
package WayofTime.bloodmagic.util;
|
package WayofTime.bloodmagic.util;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.api.altar.EnumAltarComponent;
|
||||||
|
import WayofTime.bloodmagic.registry.ModBlocks;
|
||||||
import WayofTime.bloodmagic.tile.TileInventory;
|
import WayofTime.bloodmagic.tile.TileInventory;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class Utils {
|
public class Utils {
|
||||||
|
@ -46,4 +51,16 @@ public class Utils {
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Block getBlockForComponent(EnumAltarComponent component) {
|
||||||
|
switch (component) {
|
||||||
|
case GLOWSTONE: return Blocks.glowstone;
|
||||||
|
case BLOODSTONE: return ModBlocks.bloodStoneBrick;
|
||||||
|
case BEACON: return Blocks.beacon;
|
||||||
|
case BLOODRUNE: return ModBlocks.bloodRune;
|
||||||
|
case CRYSTAL: return ModBlocks.crystal;
|
||||||
|
case NOTAIR: return Blocks.stonebrick;
|
||||||
|
default: return Blocks.air;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue