feat: implement voice bracelet
|
@ -8,6 +8,7 @@ import net.anvilcraft.thaummach.items.ItemRunicEssence;
|
||||||
import net.anvilcraft.thaummach.items.ItemSingularity;
|
import net.anvilcraft.thaummach.items.ItemSingularity;
|
||||||
import net.anvilcraft.thaummach.items.ItemSoulFragment;
|
import net.anvilcraft.thaummach.items.ItemSoulFragment;
|
||||||
import net.anvilcraft.thaummach.items.ItemUpgrade;
|
import net.anvilcraft.thaummach.items.ItemUpgrade;
|
||||||
|
import net.anvilcraft.thaummach.items.ItemVoidBracelet;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
|
||||||
public class TMItems {
|
public class TMItems {
|
||||||
|
@ -20,8 +21,9 @@ public class TMItems {
|
||||||
public static Item focus4;
|
public static Item focus4;
|
||||||
public static Item runicEssence;
|
public static Item runicEssence;
|
||||||
public static Item singularity;
|
public static Item singularity;
|
||||||
public static Item soul_fragment;
|
public static Item soulFragment;
|
||||||
public static Item upgrade;
|
public static Item upgrade;
|
||||||
|
public static Item voidBracelet;
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
crystallineBell = new ItemCrystallineBell();
|
crystallineBell = new ItemCrystallineBell();
|
||||||
|
@ -38,10 +40,12 @@ public class TMItems {
|
||||||
|
|
||||||
singularity = new ItemSingularity();
|
singularity = new ItemSingularity();
|
||||||
|
|
||||||
soul_fragment = new ItemSoulFragment();
|
soulFragment = new ItemSoulFragment();
|
||||||
|
|
||||||
upgrade = new ItemUpgrade();
|
upgrade = new ItemUpgrade();
|
||||||
|
|
||||||
|
voidBracelet = new ItemVoidBracelet();
|
||||||
|
|
||||||
GameRegistry.registerItem(crystallineBell, "crystalline_bell");
|
GameRegistry.registerItem(crystallineBell, "crystalline_bell");
|
||||||
|
|
||||||
GameRegistry.registerItem(detector, "detector");
|
GameRegistry.registerItem(detector, "detector");
|
||||||
|
@ -56,8 +60,10 @@ public class TMItems {
|
||||||
|
|
||||||
GameRegistry.registerItem(singularity, "singularity");
|
GameRegistry.registerItem(singularity, "singularity");
|
||||||
|
|
||||||
GameRegistry.registerItem(soul_fragment, "soul_fragment");
|
GameRegistry.registerItem(soulFragment, "soul_fragment");
|
||||||
|
|
||||||
GameRegistry.registerItem(upgrade, "upgrade");
|
GameRegistry.registerItem(upgrade, "upgrade");
|
||||||
|
|
||||||
|
GameRegistry.registerItem(voidBracelet, "voidBracelet");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,7 +105,8 @@ public class BlockApparatusWood extends BlockApparatus {
|
||||||
return DuplicatorApparatusRenderer.INSTANCE;
|
return DuplicatorApparatusRenderer.INSTANCE;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw AlecUnexpectedRuntimeErrorExceptionFactory.PLAIN.createAlecException();
|
//throw AlecUnexpectedRuntimeErrorExceptionFactory.PLAIN.createAlecException();
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,9 @@ public class BlockSeal extends BlockContainer {
|
||||||
float alec3,
|
float alec3,
|
||||||
float alec4
|
float alec4
|
||||||
) {
|
) {
|
||||||
|
if (world.isRemote)
|
||||||
|
return true;
|
||||||
|
|
||||||
TileEntity te = world.getTileEntity(i, j, k);
|
TileEntity te = world.getTileEntity(i, j, k);
|
||||||
if (te != null && ((TileSeal) te).runes[0] == 0
|
if (te != null && ((TileSeal) te).runes[0] == 0
|
||||||
&& ((TileSeal) te).runes[1] == 1) {
|
&& ((TileSeal) te).runes[1] == 1) {
|
||||||
|
|
|
@ -0,0 +1,249 @@
|
||||||
|
package net.anvilcraft.thaummach.items;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
import dev.tilera.auracore.aura.AuraManager;
|
||||||
|
import net.anvilcraft.alec.jalec.AlecLogger;
|
||||||
|
import net.anvilcraft.thaummach.RuneTileData;
|
||||||
|
import net.anvilcraft.thaummach.TMTab;
|
||||||
|
import net.anvilcraft.thaummach.tiles.TileSeal;
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.item.EnumRarity;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.network.play.server.S08PacketPlayerPosLook;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.ChatComponentText;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import thaumcraft.api.aspects.Aspect;
|
||||||
|
import thaumcraft.api.aspects.AspectList;
|
||||||
|
|
||||||
|
public class ItemVoidBracelet extends Item {
|
||||||
|
public IIcon[] icons;
|
||||||
|
|
||||||
|
public ItemVoidBracelet() {
|
||||||
|
this.setHasSubtypes(true);
|
||||||
|
this.setMaxDamage(0);
|
||||||
|
this.setCreativeTab(TMTab.INSTANCE);
|
||||||
|
this.setUnlocalizedName("thaummach:void_bracelet");
|
||||||
|
super.maxStackSize = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerIcons(IIconRegister reg) {
|
||||||
|
this.icons = IntStream.rangeClosed(0, 6)
|
||||||
|
.mapToObj((i) -> "thaummach:void_bracelet_" + i)
|
||||||
|
.map(reg::registerIcon)
|
||||||
|
.toArray(IIcon[] ::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IIcon getIconFromDamage(int meta) {
|
||||||
|
return this.icons[meta];
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getTalismanDestination(EntityPlayer player, int rune) {
|
||||||
|
World worldObj = player.worldObj;
|
||||||
|
List<RuneTileData> rd
|
||||||
|
= TileSeal.SEALS.stream()
|
||||||
|
.filter((pd) -> pd.dim == worldObj.provider.dimensionId && pd.rune == rune - 1)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (rd.size() == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int q = worldObj.rand.nextInt(rd.size());
|
||||||
|
TileEntity te = worldObj.getTileEntity(rd.get(q).x, rd.get(q).y, rd.get(q).z);
|
||||||
|
if (te != null && te instanceof TileSeal) {
|
||||||
|
worldObj.getChunkProvider().loadChunk(rd.get(q).x >> 4, rd.get(q).z >> 4);
|
||||||
|
// TODO: WTF
|
||||||
|
//ThaumCraftCore.loadChunk(
|
||||||
|
// worldObj, ((SISpecialTile) rd.get(q)).x, ((SISpecialTile) rd.get(q)).z
|
||||||
|
//);
|
||||||
|
((TileSeal) te).delay = 40;
|
||||||
|
float tYaw = 0.0F;
|
||||||
|
switch (((TileSeal) te).orientation) {
|
||||||
|
case 2:
|
||||||
|
tYaw = 180.0F;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
tYaw = 0.0F;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
tYaw = 90.0F;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
tYaw = 270.0F;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.motionX = 0.0;
|
||||||
|
player.motionZ = 0.0;
|
||||||
|
// TODO: sounds
|
||||||
|
//worldObj.playSoundEffect(
|
||||||
|
// player.posX,
|
||||||
|
// player.posY,
|
||||||
|
// player.posZ,
|
||||||
|
// "mob.endermen.portal",
|
||||||
|
// 1.0F,
|
||||||
|
// 1.0F
|
||||||
|
//);
|
||||||
|
//
|
||||||
|
// TODO: FX
|
||||||
|
//ThaumCraftCore.poof(
|
||||||
|
// worldObj,
|
||||||
|
// (float) player.posX - 0.5F,
|
||||||
|
// (float) player.posY - 0.5F,
|
||||||
|
// (float) player.posZ - 0.5F
|
||||||
|
//);
|
||||||
|
int xm = 0;
|
||||||
|
int zm = 0;
|
||||||
|
int ym = 0;
|
||||||
|
switch (((TileSeal) te).orientation) {
|
||||||
|
case 0:
|
||||||
|
ym = -1;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ym = 1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
zm = -1;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
zm = 1;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
xm = -1;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
xm = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((TileSeal) te).orientation > 1
|
||||||
|
&& worldObj.isAirBlock(
|
||||||
|
((TileSeal) te).xCoord + xm,
|
||||||
|
((TileSeal) te).yCoord + ym - 1,
|
||||||
|
((TileSeal) te).zCoord + zm
|
||||||
|
)) {
|
||||||
|
--ym;
|
||||||
|
}
|
||||||
|
|
||||||
|
AuraManager.addFluxToClosest(
|
||||||
|
worldObj, te.xCoord, te.yCoord, te.zCoord, new AspectList().add(Aspect.ELDRITCH, 25)
|
||||||
|
);
|
||||||
|
|
||||||
|
double var10001 = (double) ((TileSeal) te).xCoord + 0.5 + (double) xm;
|
||||||
|
double var10002 = (double) ((TileSeal) te).yCoord + 0.5 + (double) ym;
|
||||||
|
((EntityPlayerMP) player)
|
||||||
|
.playerNetServerHandler.setPlayerLocation(
|
||||||
|
var10001,
|
||||||
|
var10002,
|
||||||
|
(double) ((TileSeal) te).zCoord + 0.5 + (double) zm,
|
||||||
|
tYaw,
|
||||||
|
player.rotationPitch
|
||||||
|
|
||||||
|
);
|
||||||
|
// TODO: sounds
|
||||||
|
//worldObj.playSoundEffect(
|
||||||
|
// player.posX,
|
||||||
|
// player.posY,
|
||||||
|
// player.posZ,
|
||||||
|
// "mob.endermen.portal",
|
||||||
|
// 1.0F,
|
||||||
|
// 1.0F
|
||||||
|
//);
|
||||||
|
|
||||||
|
// TODO: fx
|
||||||
|
//ThaumCraftCore.poof(
|
||||||
|
// worldObj,
|
||||||
|
// (float) player.posX - 0.5F,
|
||||||
|
// (float) player.posY - 0.5F,
|
||||||
|
// (float) player.posZ - 0.5F
|
||||||
|
//);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer) {
|
||||||
|
if (!world.isRemote
|
||||||
|
&& !this.getTalismanDestination(entityplayer, itemstack.getItemDamage())) {
|
||||||
|
entityplayer.addChatMessage(new ChatComponentText("No valid destinations found."));
|
||||||
|
}
|
||||||
|
|
||||||
|
return itemstack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onItemUseFirst(
|
||||||
|
ItemStack ist,
|
||||||
|
EntityPlayer player,
|
||||||
|
World world,
|
||||||
|
int i,
|
||||||
|
int j,
|
||||||
|
int k,
|
||||||
|
int l,
|
||||||
|
// useless parameters
|
||||||
|
float alec1,
|
||||||
|
float alec2,
|
||||||
|
float alec3
|
||||||
|
) {
|
||||||
|
TileEntity ent = world.getTileEntity(i, j, k);
|
||||||
|
if (!world.isRemote && ent instanceof TileSeal && ((TileSeal) ent).runes[0] == 0
|
||||||
|
&& ((TileSeal) ent).runes[1] == 1) {
|
||||||
|
int rune = ((TileSeal) ent).runes[2] + 1;
|
||||||
|
if (rune != ist.getItemDamage()) {
|
||||||
|
ist.setItemDamage(rune);
|
||||||
|
world.playSoundEffect(
|
||||||
|
(double) ((float) i + 0.5F),
|
||||||
|
(double) ((float) j + 0.5F),
|
||||||
|
(double) ((float) k + 0.5F),
|
||||||
|
"thaumcraft.zap",
|
||||||
|
0.5F,
|
||||||
|
1.0F
|
||||||
|
);
|
||||||
|
player.addChatMessage(
|
||||||
|
new ChatComponentText("You've linked the bracelet to a new network.")
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.onItemUseFirst(ist, player, world, i, j, k, l, alec1, alec2, alec3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EnumRarity getRarity(ItemStack itemstack) {
|
||||||
|
return EnumRarity.rare;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack itemstack, EntityPlayer arg1, List list, boolean arg3) {
|
||||||
|
switch (itemstack.getItemDamage()) {
|
||||||
|
case 0:
|
||||||
|
list.add("Linked to the default network");
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
list.add("Linked to the Magic network");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
list.add("Linked to the Air network");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
list.add("Linked to the Water network");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
list.add("Linked to the Earth network");
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
list.add("Linked to the Fire network");
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
list.add("Linked to the Dark network");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,6 +12,7 @@ import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.util.ChunkCoordinates;
|
import net.minecraft.util.ChunkCoordinates;
|
||||||
import net.minecraft.util.IChatComponent;
|
import net.minecraft.util.IChatComponent;
|
||||||
|
import net.minecraft.world.chunk.EmptyChunk;
|
||||||
import org.lwjgl.opengl.EXTFramebufferObject;
|
import org.lwjgl.opengl.EXTFramebufferObject;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
@ -31,9 +32,7 @@ public class PortalRenderer {
|
||||||
GL11.glBindTexture(3553, this.portalTexture);
|
GL11.glBindTexture(3553, this.portalTexture);
|
||||||
GL11.glTexParameterf(3553, 10241, 9729.0F);
|
GL11.glTexParameterf(3553, 10241, 9729.0F);
|
||||||
GL11.glTexImage2D(3553, 0, 32856, 512, 512, 0, 6408, 5124, (ByteBuffer) null);
|
GL11.glTexImage2D(3553, 0, 32856, 512, 512, 0, 6408, 5124, (ByteBuffer) null);
|
||||||
EXTFramebufferObject.glFramebufferTexture2DEXT(
|
EXTFramebufferObject.glFramebufferTexture2DEXT(36160, 36064, 3553, this.portalTexture, 0);
|
||||||
36160, 36064, 3553, this.portalTexture, 0
|
|
||||||
);
|
|
||||||
EXTFramebufferObject.glBindRenderbufferEXT(36161, this.depthRenderBuffer);
|
EXTFramebufferObject.glBindRenderbufferEXT(36161, this.depthRenderBuffer);
|
||||||
EXTFramebufferObject.glRenderbufferStorageEXT(36161, 35056, 512, 512);
|
EXTFramebufferObject.glRenderbufferStorageEXT(36161, 35056, 512, 512);
|
||||||
EXTFramebufferObject.glFramebufferRenderbufferEXT(
|
EXTFramebufferObject.glFramebufferRenderbufferEXT(
|
||||||
|
@ -57,22 +56,26 @@ public class PortalRenderer {
|
||||||
|
|
||||||
RuneTileData target = this.seal.otherSeal;
|
RuneTileData target = this.seal.otherSeal;
|
||||||
Minecraft mc = Minecraft.getMinecraft();
|
Minecraft mc = Minecraft.getMinecraft();
|
||||||
|
|
||||||
|
if (mc.theWorld.getChunkFromBlockCoords(target.x, target.z) instanceof EmptyChunk)
|
||||||
|
return;
|
||||||
|
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glLoadIdentity();
|
GL11.glLoadIdentity();
|
||||||
|
|
||||||
int prevFbo = GL11.glGetInteger(EXTFramebufferObject.GL_FRAMEBUFFER_BINDING_EXT);
|
int prevFbo = GL11.glGetInteger(EXTFramebufferObject.GL_FRAMEBUFFER_BINDING_EXT);
|
||||||
EXTFramebufferObject.glBindFramebufferEXT(36160, this.frameBuffer);
|
EXTFramebufferObject.glBindFramebufferEXT(0x8d40, this.frameBuffer);
|
||||||
|
|
||||||
// TODO: stencils aren't stenciling
|
// TODO: stencils aren't stenciling
|
||||||
GL11.glEnable(2960);
|
GL11.glEnable(0xb90);
|
||||||
GL11.glStencilFunc(519, 1, 1);
|
GL11.glStencilFunc(519, 1, 1);
|
||||||
GL11.glStencilOp(7680, 7680, 7681);
|
GL11.glStencilOp(0x1e00, 0x1e00, 0x1e01);
|
||||||
GL11.glViewport(0, 0, 512, 512);
|
GL11.glViewport(0, 0, 512, 512);
|
||||||
GL11.glMatrixMode(5889);
|
GL11.glMatrixMode(0x1701);
|
||||||
GL11.glLoadIdentity();
|
GL11.glLoadIdentity();
|
||||||
GL11.glMatrixMode(5888);
|
GL11.glMatrixMode(0x1700);
|
||||||
GL11.glLoadIdentity();
|
GL11.glLoadIdentity();
|
||||||
GL11.glDisable(3553);
|
GL11.glDisable(0xde1);
|
||||||
GL11.glColor3f(1.0F, 1.0F, 1.0F);
|
GL11.glColor3f(1.0F, 1.0F, 1.0F);
|
||||||
GL11.glBegin(6);
|
GL11.glBegin(6);
|
||||||
GL11.glVertex2f(0.0F, 0.0F);
|
GL11.glVertex2f(0.0F, 0.0F);
|
||||||
|
@ -88,9 +91,7 @@ public class PortalRenderer {
|
||||||
GL11.glEnable(3553);
|
GL11.glEnable(3553);
|
||||||
Entity rve = mc.renderViewEntity;
|
Entity rve = mc.renderViewEntity;
|
||||||
|
|
||||||
mc.renderViewEntity = new EntityPlayer(
|
mc.renderViewEntity = new EntityPlayer(mc.theWorld, mc.getSession().func_148256_e()) {
|
||||||
mc.theWorld, mc.getSession().func_148256_e()
|
|
||||||
) {
|
|
||||||
@Override
|
@Override
|
||||||
public void addChatMessage(IChatComponent p_145747_1_) {}
|
public void addChatMessage(IChatComponent p_145747_1_) {}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,6 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.network.NetworkManager;
|
import net.minecraft.network.NetworkManager;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
import net.minecraft.network.play.server.S08PacketPlayerPosLook;
|
|
||||||
import net.minecraft.network.play.server.S12PacketEntityVelocity;
|
import net.minecraft.network.play.server.S12PacketEntityVelocity;
|
||||||
import net.minecraft.network.play.server.S18PacketEntityTeleport;
|
import net.minecraft.network.play.server.S18PacketEntityTeleport;
|
||||||
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
|
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
|
||||||
|
@ -201,9 +200,7 @@ public class TileSeal extends TileEntity {
|
||||||
RuneTileData sd = new RuneTileData(this);
|
RuneTileData sd = new RuneTileData(this);
|
||||||
if (!SEALS.contains(sd)) {
|
if (!SEALS.contains(sd)) {
|
||||||
SEALS.add(sd);
|
SEALS.add(sd);
|
||||||
this.worldObj.markBlockForUpdate(
|
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
||||||
this.xCoord, this.yCoord, this.zCoord
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.handlePortals();
|
this.handlePortals();
|
||||||
|
@ -229,15 +226,9 @@ public class TileSeal extends TileEntity {
|
||||||
(double) this.sealX(false),
|
(double) this.sealX(false),
|
||||||
(double) this.sealY(false),
|
(double) this.sealY(false),
|
||||||
(double) this.sealZ(false),
|
(double) this.sealZ(false),
|
||||||
(double
|
(double) ((float) super.xCoord + super.worldObj.rand.nextFloat()),
|
||||||
) ((float) super.xCoord + super.worldObj.rand.nextFloat()
|
(double) ((float) super.yCoord + super.worldObj.rand.nextFloat()),
|
||||||
),
|
(double) ((float) super.zCoord + super.worldObj.rand.nextFloat()),
|
||||||
(double
|
|
||||||
) ((float) super.yCoord + super.worldObj.rand.nextFloat()
|
|
||||||
),
|
|
||||||
(double
|
|
||||||
) ((float) super.zCoord + super.worldObj.rand.nextFloat()
|
|
||||||
),
|
|
||||||
1.0F,
|
1.0F,
|
||||||
super.worldObj.rand.nextBoolean() ? 0 : 3,
|
super.worldObj.rand.nextBoolean() ? 0 : 3,
|
||||||
4
|
4
|
||||||
|
@ -252,12 +243,9 @@ public class TileSeal extends TileEntity {
|
||||||
(double) this.sealX(false),
|
(double) this.sealX(false),
|
||||||
(double) this.sealY(false),
|
(double) this.sealY(false),
|
||||||
(double) this.sealZ(false),
|
(double) this.sealZ(false),
|
||||||
(double
|
(double) ((float) super.xCoord + super.worldObj.rand.nextFloat()),
|
||||||
) ((float) super.xCoord + super.worldObj.rand.nextFloat()),
|
(double) ((float) super.yCoord + super.worldObj.rand.nextFloat()),
|
||||||
(double
|
(double) ((float) super.zCoord + super.worldObj.rand.nextFloat()),
|
||||||
) ((float) super.yCoord + super.worldObj.rand.nextFloat()),
|
|
||||||
(double
|
|
||||||
) ((float) super.zCoord + super.worldObj.rand.nextFloat()),
|
|
||||||
1.0F,
|
1.0F,
|
||||||
super.worldObj.rand.nextBoolean() ? 0 : 3,
|
super.worldObj.rand.nextBoolean() ? 0 : 3,
|
||||||
4
|
4
|
||||||
|
@ -382,9 +370,8 @@ public class TileSeal extends TileEntity {
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
this.pushEntity(true, true, true, 6, 0.07F);
|
this.pushEntity(true, true, true, 6, 0.07F);
|
||||||
List<Entity> list = this.getEntities(
|
List<Entity> list
|
||||||
super.worldObj, 0.0F, this.orientation, false
|
= this.getEntities(super.worldObj, 0.0F, this.orientation, false);
|
||||||
);
|
|
||||||
int a = 0;
|
int a = 0;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -417,9 +404,8 @@ public class TileSeal extends TileEntity {
|
||||||
}
|
}
|
||||||
case 5:
|
case 5:
|
||||||
this.pushEntity(true, false, true, 6, 0.04F);
|
this.pushEntity(true, false, true, 6, 0.04F);
|
||||||
List<Entity> list2 = this.getEntities(
|
List<Entity> list2
|
||||||
super.worldObj, 0.2F, this.orientation, false
|
= this.getEntities(super.worldObj, 0.2F, this.orientation, false);
|
||||||
);
|
|
||||||
|
|
||||||
for (int b = 0; b < list2.size(); ++b) {
|
for (int b = 0; b < list2.size(); ++b) {
|
||||||
Entity entity = (Entity) list2.get(b);
|
Entity entity = (Entity) list2.get(b);
|
||||||
|
@ -882,8 +868,7 @@ public class TileSeal extends TileEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void preventSpawn(int range) {
|
private void preventSpawn(int range) {
|
||||||
List<Entity> list
|
List<Entity> list = this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
||||||
= this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
|
||||||
|
|
||||||
for (int a = 0; a < list.size(); ++a) {
|
for (int a = 0; a < list.size(); ++a) {
|
||||||
Entity entity = (Entity) list.get(a);
|
Entity entity = (Entity) list.get(a);
|
||||||
|
@ -893,20 +878,17 @@ public class TileSeal extends TileEntity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean
|
private boolean scan(int range, boolean items, boolean mobs, boolean animals, boolean pvp) {
|
||||||
scan(int range, boolean items, boolean mobs, boolean animals, boolean pvp) {
|
|
||||||
if (super.worldObj.isRemote)
|
if (super.worldObj.isRemote)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
boolean foundsomething = false;
|
boolean foundsomething = false;
|
||||||
List<Entity> list
|
List<Entity> list = this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
||||||
= this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
|
||||||
|
|
||||||
int q;
|
int q;
|
||||||
for (q = 0; q < list.size(); ++q) {
|
for (q = 0; q < list.size(); ++q) {
|
||||||
Entity entity = (Entity) list.get(q);
|
Entity entity = (Entity) list.get(q);
|
||||||
if (items && entity instanceof EntityItem
|
if (items && entity instanceof EntityItem || animals && entity instanceof EntityAnimal
|
||||||
|| animals && entity instanceof EntityAnimal
|
|
||||||
|| mobs && (entity instanceof EntityMob || entity instanceof IMob)
|
|| mobs && (entity instanceof EntityMob || entity instanceof IMob)
|
||||||
|| pvp && entity instanceof EntityPlayer) {
|
|| pvp && entity instanceof EntityPlayer) {
|
||||||
this.worked = true;
|
this.worked = true;
|
||||||
|
@ -943,8 +925,7 @@ public class TileSeal extends TileEntity {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
boolean didsomething = false;
|
boolean didsomething = false;
|
||||||
List<Entity> list
|
List<Entity> list = this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
||||||
= this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
|
||||||
|
|
||||||
for (int a = 0; a < list.size(); ++a) {
|
for (int a = 0; a < list.size(); ++a) {
|
||||||
Entity entity = (Entity) list.get(a);
|
Entity entity = (Entity) list.get(a);
|
||||||
|
@ -1049,10 +1030,7 @@ public class TileSeal extends TileEntity {
|
||||||
&& super.yCoord + y + 1 <= super.worldObj.getHeight()
|
&& super.yCoord + y + 1 <= super.worldObj.getHeight()
|
||||||
&& super.yCoord + y - 1 >= 0) {
|
&& super.yCoord + y - 1 >= 0) {
|
||||||
if (Utils.useBonemealAtLoc(
|
if (Utils.useBonemealAtLoc(
|
||||||
super.worldObj,
|
super.worldObj, super.xCoord + x, super.yCoord + y, super.zCoord + z
|
||||||
super.xCoord + x,
|
|
||||||
super.yCoord + y,
|
|
||||||
super.zCoord + z
|
|
||||||
)) {
|
)) {
|
||||||
net.anvilcraft.thaummach.utils.UtilsFX.poofUpwards(
|
net.anvilcraft.thaummach.utils.UtilsFX.poofUpwards(
|
||||||
super.worldObj,
|
super.worldObj,
|
||||||
|
@ -1242,8 +1220,7 @@ public class TileSeal extends TileEntity {
|
||||||
for (int x = xm; x <= xp; ++x) {
|
for (int x = xm; x <= xp; ++x) {
|
||||||
for (int y = ym; y <= yp; ++y) {
|
for (int y = ym; y <= yp; ++y) {
|
||||||
for (int z = zm; z <= zp; ++z) {
|
for (int z = zm; z <= zp; ++z) {
|
||||||
if (super.yCoord + y <= super.worldObj.getHeight()
|
if (super.yCoord + y <= super.worldObj.getHeight() && super.yCoord + y >= 0) {
|
||||||
&& super.yCoord + y >= 0) {
|
|
||||||
Block cbID = super.worldObj.getBlock(
|
Block cbID = super.worldObj.getBlock(
|
||||||
super.xCoord + x, super.yCoord + y, super.zCoord + z
|
super.xCoord + x, super.yCoord + y, super.zCoord + z
|
||||||
);
|
);
|
||||||
|
@ -1430,16 +1407,14 @@ public class TileSeal extends TileEntity {
|
||||||
for (int x = xm; x <= xp; ++x) {
|
for (int x = xm; x <= xp; ++x) {
|
||||||
for (int y = ym; y <= yp; ++y) {
|
for (int y = ym; y <= yp; ++y) {
|
||||||
for (int z = zm; z <= zp; ++z) {
|
for (int z = zm; z <= zp; ++z) {
|
||||||
if (super.yCoord + y <= super.worldObj.getHeight()
|
if (super.yCoord + y <= super.worldObj.getHeight() && super.yCoord + y >= 0) {
|
||||||
&& super.yCoord + y >= 0) {
|
|
||||||
Block cbID = super.worldObj.getBlock(
|
Block cbID = super.worldObj.getBlock(
|
||||||
super.xCoord + x, super.yCoord + y, super.zCoord + z
|
super.xCoord + x, super.yCoord + y, super.zCoord + z
|
||||||
);
|
);
|
||||||
Block tbID = super.worldObj.getBlock(
|
Block tbID = super.worldObj.getBlock(
|
||||||
super.xCoord + x, super.yCoord + y + 1, super.zCoord + z
|
super.xCoord + x, super.yCoord + y + 1, super.zCoord + z
|
||||||
);
|
);
|
||||||
if ((cbID == Blocks.dirt || cbID == Blocks.grass)
|
if ((cbID == Blocks.dirt || cbID == Blocks.grass) && tbID == Blocks.air
|
||||||
&& tbID == Blocks.air
|
|
||||||
&& super.worldObj.rand.nextInt(10) == 0) {
|
&& super.worldObj.rand.nextInt(10) == 0) {
|
||||||
super.worldObj.setBlock(
|
super.worldObj.setBlock(
|
||||||
super.xCoord + x,
|
super.xCoord + x,
|
||||||
|
@ -1500,8 +1475,7 @@ public class TileSeal extends TileEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handlePortals() {
|
private void handlePortals() {
|
||||||
List<Entity> list
|
List<Entity> list = this.getEntitiesSorted(super.worldObj, 1, this.orientation, false);
|
||||||
= this.getEntitiesSorted(super.worldObj, 1, this.orientation, false);
|
|
||||||
boolean p = false;
|
boolean p = false;
|
||||||
|
|
||||||
int q;
|
int q;
|
||||||
|
@ -1516,44 +1490,56 @@ public class TileSeal extends TileEntity {
|
||||||
Iterator<RuneTileData> i$ = SEALS.iterator();
|
Iterator<RuneTileData> i$ = SEALS.iterator();
|
||||||
|
|
||||||
boolean fs = false;
|
boolean fs = false;
|
||||||
label74: {
|
//RuneTileData pd;
|
||||||
RuneTileData pd;
|
//do {
|
||||||
do {
|
// do {
|
||||||
do {
|
// do {
|
||||||
do {
|
// if (!i$.hasNext()) {
|
||||||
if (!i$.hasNext()) {
|
// break label74;
|
||||||
break label74;
|
// }
|
||||||
}
|
|
||||||
|
|
||||||
pd = i$.next();
|
// pd = i$.next();
|
||||||
} while (pd.dim != list.get(0).worldObj.provider.dimensionId);
|
// } while (pd.dim != list.get(0).worldObj.provider.dimensionId);
|
||||||
} while (pd.rune != this.runes[2]);
|
// } while (pd.rune != this.runes[2]);
|
||||||
} while (pd.x == super.xCoord && pd.y == super.yCoord && pd.z == super.zCoord
|
//} while (pd.x == super.xCoord && pd.y == super.yCoord && pd.z == super.zCoord);
|
||||||
);
|
|
||||||
|
|
||||||
this.otherSeal = pd;
|
this.portalWindow %= SEALS.size() - 1;
|
||||||
super.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
RuneTileData pd = SEALS.stream()
|
||||||
|
.filter(
|
||||||
|
(rtd)
|
||||||
|
-> rtd.dim == this.worldObj.provider.dimensionId
|
||||||
|
&& rtd.rune == this.runes[2]
|
||||||
|
&& !(rtd.x == this.xCoord && rtd.y == this.yCoord
|
||||||
|
&& rtd.z == this.zCoord)
|
||||||
|
)
|
||||||
|
.skip(this.portalWindow)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
|
||||||
if (!this.pOpen && p) {
|
if (pd != null) {
|
||||||
super.worldObj.playSoundEffect(
|
this.otherSeal = pd;
|
||||||
(double) super.xCoord + 0.5,
|
super.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
||||||
(double) super.yCoord + 0.5,
|
|
||||||
(double) super.zCoord + 0.5,
|
if (!this.pOpen && p) {
|
||||||
"thaummach:popen",
|
super.worldObj.playSoundEffect(
|
||||||
0.4F,
|
(double) super.xCoord + 0.5,
|
||||||
1.0F + super.worldObj.rand.nextFloat() * 0.2F
|
(double) super.yCoord + 0.5,
|
||||||
);
|
(double) super.zCoord + 0.5,
|
||||||
|
"thaummach:popen",
|
||||||
|
0.4F,
|
||||||
|
1.0F + super.worldObj.rand.nextFloat() * 0.2F
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.delay <= 0 && p) {
|
||||||
|
//this.renderTeleportDest();
|
||||||
|
this.delay = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
--this.delay;
|
||||||
|
this.pOpen = true;
|
||||||
|
fs = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.delay <= 0 && p) {
|
|
||||||
//this.renderTeleportDest();
|
|
||||||
this.delay = 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
--this.delay;
|
|
||||||
this.pOpen = true;
|
|
||||||
fs = true;
|
|
||||||
}
|
|
||||||
if (!fs && this.pOpen) {
|
if (!fs && this.pOpen) {
|
||||||
this.pOpen = false;
|
this.pOpen = false;
|
||||||
}
|
}
|
||||||
|
@ -1644,230 +1630,198 @@ public class TileSeal extends TileEntity {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
Entity entity = (Entity) list.get(0);
|
Entity entity = (Entity) list.get(0);
|
||||||
if (entity instanceof EntityFX) {
|
if (entity instanceof EntityFX)
|
||||||
return false;
|
return false;
|
||||||
} else {
|
if (this.otherSeal == null)
|
||||||
if (this.otherSeal == null) {
|
return false;
|
||||||
return false;
|
RuneTileData targetDest = this.otherSeal;
|
||||||
} else {
|
TileEntity ts = super.worldObj.getTileEntity(targetDest.x, targetDest.y, targetDest.z);
|
||||||
RuneTileData targetDest = this.otherSeal;
|
if (ts != null && ts instanceof TileSeal) {
|
||||||
TileEntity ts = super.worldObj.getTileEntity(
|
TileSeal target = (TileSeal) ts;
|
||||||
targetDest.x, targetDest.y, targetDest.z
|
if (target.runes[0] == 0 && target.runes[1] == 1) {
|
||||||
);
|
target.delay = 40;
|
||||||
if (ts != null && ts instanceof TileSeal) {
|
float tYaw = entity.rotationYaw;
|
||||||
TileSeal target = (TileSeal) ts;
|
switch (target.orientation) {
|
||||||
if (target.runes[0] == 0 && target.runes[1] == 1) {
|
case 2:
|
||||||
target.delay = 40;
|
tYaw = 180.0F;
|
||||||
float tYaw = entity.rotationYaw;
|
break;
|
||||||
switch (target.orientation) {
|
case 3:
|
||||||
case 2:
|
tYaw = 0.0F;
|
||||||
tYaw = 180.0F;
|
break;
|
||||||
break;
|
case 4:
|
||||||
case 3:
|
tYaw = 90.0F;
|
||||||
tYaw = 0.0F;
|
break;
|
||||||
break;
|
case 5:
|
||||||
case 4:
|
tYaw = 270.0F;
|
||||||
tYaw = 90.0F;
|
}
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
tYaw = 270.0F;
|
|
||||||
}
|
|
||||||
|
|
||||||
int diff = this.orientation - target.orientation;
|
int diff = this.orientation - target.orientation;
|
||||||
double t;
|
double t;
|
||||||
if (diff == -3 || diff == 2
|
if (diff == -3 || diff == 2
|
||||||
|| diff == -1
|
|| diff == -1 && this.orientation + target.orientation != 5
|
||||||
&& this.orientation + target.orientation != 5
|
&& this.orientation + target.orientation != 9) {
|
||||||
&& this.orientation + target.orientation != 9) {
|
t = entity.motionX;
|
||||||
t = entity.motionX;
|
entity.motionX = entity.motionZ;
|
||||||
entity.motionX = entity.motionZ;
|
entity.motionZ = -t;
|
||||||
entity.motionZ = -t;
|
if (entity.ridingEntity != null) {
|
||||||
if (entity.ridingEntity != null) {
|
entity.ridingEntity.motionX = entity.ridingEntity.motionZ;
|
||||||
entity.ridingEntity.motionX
|
entity.ridingEntity.motionZ = -t;
|
||||||
= entity.ridingEntity.motionZ;
|
}
|
||||||
entity.ridingEntity.motionZ = -t;
|
} else if (diff == -2 || diff == 3 || diff == 1 &&
|
||||||
}
|
|
||||||
} else if (diff == -2 || diff == 3 || diff == 1 &&
|
|
||||||
this.orientation + target.orientation != 5 &&
|
this.orientation + target.orientation != 5 &&
|
||||||
this.orientation + target.orientation != 9) {
|
this.orientation + target.orientation != 9) {
|
||||||
t = entity.motionX;
|
t = entity.motionX;
|
||||||
entity.motionX = -entity.motionZ;
|
entity.motionX = -entity.motionZ;
|
||||||
entity.motionZ = t;
|
entity.motionZ = t;
|
||||||
if (entity.ridingEntity != null) {
|
if (entity.ridingEntity != null) {
|
||||||
entity.ridingEntity.motionX
|
entity.ridingEntity.motionX = -entity.ridingEntity.motionZ;
|
||||||
= -entity.ridingEntity.motionZ;
|
entity.ridingEntity.motionZ = t;
|
||||||
entity.ridingEntity.motionZ = t;
|
}
|
||||||
}
|
} else if (diff == 0) {
|
||||||
} else if (diff == 0) {
|
entity.motionX = -entity.motionX;
|
||||||
entity.motionX = -entity.motionX;
|
entity.motionZ = -entity.motionZ;
|
||||||
entity.motionZ = -entity.motionZ;
|
if (entity.ridingEntity != null) {
|
||||||
if (entity.ridingEntity != null) {
|
entity.ridingEntity.motionX = -entity.ridingEntity.motionX;
|
||||||
entity.ridingEntity.motionX
|
entity.ridingEntity.motionZ = -entity.ridingEntity.motionZ;
|
||||||
= -entity.ridingEntity.motionX;
|
}
|
||||||
entity.ridingEntity.motionZ
|
}
|
||||||
= -entity.ridingEntity.motionZ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (diff == 0
|
if (diff == 0 && (this.orientation == 1 || this.orientation == 0)) {
|
||||||
&& (this.orientation == 1 || this.orientation == 0)) {
|
entity.motionY = -entity.motionY;
|
||||||
entity.motionY = -entity.motionY;
|
if (entity.ridingEntity != null) {
|
||||||
if (entity.ridingEntity != null) {
|
entity.ridingEntity.motionY = -entity.ridingEntity.motionY;
|
||||||
entity.ridingEntity.motionY
|
}
|
||||||
= -entity.ridingEntity.motionY;
|
}
|
||||||
}
|
|
||||||
}
|
UtilsFX.poof(
|
||||||
|
super.worldObj,
|
||||||
|
(float) entity.posX - 0.5F,
|
||||||
|
(float) entity.posY - 0.5F,
|
||||||
|
(float) entity.posZ - 0.5F
|
||||||
|
);
|
||||||
|
super.worldObj.playSoundEffect(
|
||||||
|
entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F
|
||||||
|
);
|
||||||
|
int xm = 0;
|
||||||
|
int zm = 0;
|
||||||
|
int ym = 0;
|
||||||
|
switch (target.orientation) {
|
||||||
|
case 0:
|
||||||
|
ym = -1;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ym = 1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
zm = -1;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
zm = 1;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
xm = -1;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
xm = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target.orientation > 1
|
||||||
|
&& super.worldObj.isAirBlock(
|
||||||
|
target.xCoord + xm, target.yCoord + ym - 1, target.zCoord + zm
|
||||||
|
)) {
|
||||||
|
--ym;
|
||||||
|
}
|
||||||
|
|
||||||
|
entity.setLocationAndAngles(
|
||||||
|
(double) target.xCoord + 0.5 + (double) xm,
|
||||||
|
(double) target.yCoord + 0.5 + (double) ym,
|
||||||
|
(double) target.zCoord + 0.5 + (double) zm,
|
||||||
|
tYaw,
|
||||||
|
entity.rotationPitch
|
||||||
|
);
|
||||||
|
if (entity.ridingEntity != null) {
|
||||||
|
entity.ridingEntity.setLocationAndAngles(
|
||||||
|
(double) target.xCoord + 0.5 + (double) xm,
|
||||||
|
(double) target.yCoord + 0.5 + (double) ym,
|
||||||
|
(double) target.zCoord + 0.5 + (double) zm,
|
||||||
|
tYaw,
|
||||||
|
entity.ridingEntity.rotationPitch
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
UtilsFX.poof(
|
||||||
|
super.worldObj,
|
||||||
|
(float) entity.posX - 0.5F,
|
||||||
|
(float) entity.posY - 0.5F,
|
||||||
|
(float) entity.posZ - 0.5F
|
||||||
|
);
|
||||||
|
super.worldObj.playSoundEffect(
|
||||||
|
entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F
|
||||||
|
);
|
||||||
|
|
||||||
|
// TODO: use specific aspect for flux
|
||||||
|
int thisAura = AuraManager.getClosestAuraWithinRange(
|
||||||
|
this.worldObj, this.xCoord, this.yCoord, this.zCoord, 512
|
||||||
|
);
|
||||||
|
|
||||||
|
if (thisAura >= 0) {
|
||||||
|
AuraManager.addRandomFlux(
|
||||||
|
this.worldObj,
|
||||||
|
AuraManager.getNode(thisAura),
|
||||||
|
(entity instanceof EntityItem) ? 1 : 4
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
int otherAura = AuraManager.getClosestAuraWithinRange(
|
||||||
|
target.worldObj, target.xCoord, target.yCoord, target.zCoord, 512
|
||||||
|
);
|
||||||
|
|
||||||
|
if (otherAura >= 0) {
|
||||||
|
AuraManager.addRandomFlux(
|
||||||
|
this.worldObj,
|
||||||
|
AuraManager.getNode(otherAura),
|
||||||
|
(entity instanceof EntityItem) ? 1 : 4
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entity instanceof EntityPlayer) {
|
||||||
|
this.worldObj.getChunkProvider().loadChunk(
|
||||||
|
target.xCoord >> 4, target.zCoord >> 4
|
||||||
|
);
|
||||||
|
((EntityPlayerMP) entity)
|
||||||
|
.playerNetServerHandler.setPlayerLocation(
|
||||||
|
|
||||||
UtilsFX.poof(
|
|
||||||
super.worldObj,
|
|
||||||
(float) entity.posX - 0.5F,
|
|
||||||
(float) entity.posY - 0.5F,
|
|
||||||
(float) entity.posZ - 0.5F
|
|
||||||
);
|
|
||||||
super.worldObj.playSoundEffect(
|
|
||||||
entity.posX,
|
entity.posX,
|
||||||
entity.posY,
|
entity.posY + 1.6,
|
||||||
entity.posZ,
|
entity.posZ,
|
||||||
"mob.endermen.portal",
|
entity.rotationYaw,
|
||||||
1.0F,
|
|
||||||
1.0F
|
|
||||||
);
|
|
||||||
int xm = 0;
|
|
||||||
int zm = 0;
|
|
||||||
int ym = 0;
|
|
||||||
switch (target.orientation) {
|
|
||||||
case 0:
|
|
||||||
ym = -1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
ym = 1;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
zm = -1;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
zm = 1;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
xm = -1;
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
xm = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (target.orientation > 1
|
|
||||||
&& super.worldObj.isAirBlock(
|
|
||||||
target.xCoord + xm,
|
|
||||||
target.yCoord + ym - 1,
|
|
||||||
target.zCoord + zm
|
|
||||||
)) {
|
|
||||||
--ym;
|
|
||||||
}
|
|
||||||
|
|
||||||
entity.setLocationAndAngles(
|
|
||||||
(double) target.xCoord + 0.5 + (double) xm,
|
|
||||||
(double) target.yCoord + 0.5 + (double) ym,
|
|
||||||
(double) target.zCoord + 0.5 + (double) zm,
|
|
||||||
tYaw,
|
|
||||||
entity.rotationPitch
|
entity.rotationPitch
|
||||||
);
|
);
|
||||||
if (entity.ridingEntity != null) {
|
|
||||||
entity.ridingEntity.setLocationAndAngles(
|
|
||||||
(double) target.xCoord + 0.5 + (double) xm,
|
|
||||||
(double) target.yCoord + 0.5 + (double) ym,
|
|
||||||
(double) target.zCoord + 0.5 + (double) zm,
|
|
||||||
tYaw,
|
|
||||||
entity.ridingEntity.rotationPitch
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
UtilsFX.poof(
|
|
||||||
super.worldObj,
|
|
||||||
(float) entity.posX - 0.5F,
|
|
||||||
(float) entity.posY - 0.5F,
|
|
||||||
(float) entity.posZ - 0.5F
|
|
||||||
);
|
|
||||||
super.worldObj.playSoundEffect(
|
|
||||||
entity.posX,
|
|
||||||
entity.posY,
|
|
||||||
entity.posZ,
|
|
||||||
"mob.endermen.portal",
|
|
||||||
1.0F,
|
|
||||||
1.0F
|
|
||||||
);
|
|
||||||
|
|
||||||
// TODO: use specific aspect for flux
|
|
||||||
int thisAura = AuraManager.getClosestAuraWithinRange(
|
|
||||||
this.worldObj, this.xCoord, this.yCoord, this.zCoord, 512
|
|
||||||
);
|
|
||||||
|
|
||||||
if (thisAura >= 0) {
|
|
||||||
AuraManager.addRandomFlux(
|
|
||||||
this.worldObj,
|
|
||||||
AuraManager.getNode(thisAura),
|
|
||||||
(entity instanceof EntityItem) ? 1 : 4
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
int otherAura = AuraManager.getClosestAuraWithinRange(
|
|
||||||
target.worldObj,
|
|
||||||
target.xCoord,
|
|
||||||
target.yCoord,
|
|
||||||
target.zCoord,
|
|
||||||
512
|
|
||||||
);
|
|
||||||
|
|
||||||
if (otherAura >= 0) {
|
|
||||||
AuraManager.addRandomFlux(
|
|
||||||
this.worldObj,
|
|
||||||
AuraManager.getNode(otherAura),
|
|
||||||
(entity instanceof EntityItem) ? 1 : 4
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entity instanceof EntityPlayer) {
|
|
||||||
((EntityPlayerMP) entity)
|
|
||||||
.playerNetServerHandler.sendPacket(
|
|
||||||
new S08PacketPlayerPosLook(
|
|
||||||
entity.posX,
|
|
||||||
entity.posY + 1.6,
|
|
||||||
entity.posZ,
|
|
||||||
entity.rotationYaw,
|
|
||||||
entity.rotationPitch,
|
|
||||||
false
|
|
||||||
)
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
System.out.println(entity.posX + " " + entity.posY + " " + entity.posZ);
|
|
||||||
Packet pkt1
|
|
||||||
= new S18PacketEntityTeleport(
|
|
||||||
entity.getEntityId(),
|
|
||||||
MathHelper.floor_double(entity.posX * 32.0D),
|
|
||||||
MathHelper.floor_double(entity.posY * 32.0D),
|
|
||||||
MathHelper.floor_double(entity.posZ * 32.0D),
|
|
||||||
(byte
|
|
||||||
) ((int) (entity.rotationYaw * 256.0F / 360.0F)),
|
|
||||||
(byte
|
|
||||||
) ((int) (entity.rotationPitch * 256.0F / 360.0F))
|
|
||||||
);
|
|
||||||
Packet pkt2 = new S12PacketEntityVelocity(entity);
|
|
||||||
|
|
||||||
for (EntityPlayerMP pl : (List<EntityPlayerMP>) this
|
|
||||||
.worldObj.playerEntities) {
|
|
||||||
pl.playerNetServerHandler.sendPacket(pkt1);
|
|
||||||
pl.playerNetServerHandler.sendPacket(pkt2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.worked = true;
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return false;
|
Packet pkt1 = new S18PacketEntityTeleport(
|
||||||
|
entity.getEntityId(),
|
||||||
|
MathHelper.floor_double(entity.posX * 32.0D),
|
||||||
|
MathHelper.floor_double(entity.posY * 32.0D),
|
||||||
|
MathHelper.floor_double(entity.posZ * 32.0D),
|
||||||
|
(byte) ((int) (entity.rotationYaw * 256.0F / 360.0F)),
|
||||||
|
(byte) ((int) (entity.rotationPitch * 256.0F / 360.0F))
|
||||||
|
);
|
||||||
|
Packet pkt2 = new S12PacketEntityVelocity(entity);
|
||||||
|
|
||||||
|
for (EntityPlayerMP pl :
|
||||||
|
(List<EntityPlayerMP>) this.worldObj.playerEntities) {
|
||||||
|
pl.playerNetServerHandler.sendPacket(pkt1);
|
||||||
|
pl.playerNetServerHandler.sendPacket(pkt2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.worked = true;
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1882,8 +1836,7 @@ public class TileSeal extends TileEntity {
|
||||||
float speed1,
|
float speed1,
|
||||||
float speed2
|
float speed2
|
||||||
) {
|
) {
|
||||||
List<Entity> list
|
List<Entity> list = this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
||||||
= this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
|
||||||
|
|
||||||
for (int a = 0; a < list.size(); ++a) {
|
for (int a = 0; a < list.size(); ++a) {
|
||||||
Entity entity = (Entity) list.get(a);
|
Entity entity = (Entity) list.get(a);
|
||||||
|
@ -1922,24 +1875,18 @@ public class TileSeal extends TileEntity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void
|
private void heal(int range, boolean mobs, boolean animals, boolean player, boolean buff) {
|
||||||
heal(int range, boolean mobs, boolean animals, boolean player, boolean buff) {
|
List<Entity> list = this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
||||||
List<Entity> list
|
|
||||||
= this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
|
||||||
|
|
||||||
for (int a = list.size() - 1; a >= 0; --a) {
|
for (int a = list.size() - 1; a >= 0; --a) {
|
||||||
Entity entity = (Entity) list.get(a);
|
Entity entity = (Entity) list.get(a);
|
||||||
if (entity instanceof EntityLivingBase
|
if (entity instanceof EntityLivingBase
|
||||||
&& (animals
|
&& (animals && (entity instanceof EntityAnimal || entity instanceof EntityVillager)
|
||||||
&& (entity instanceof EntityAnimal
|
|
||||||
|| entity instanceof EntityVillager)
|
|
||||||
|| mobs && (entity instanceof EntityMob || entity instanceof IMob)
|
|| mobs && (entity instanceof EntityMob || entity instanceof IMob)
|
||||||
|| player
|
|| player
|
||||||
&& (entity instanceof EntityPlayer
|
&& (entity instanceof EntityPlayer || entity instanceof EntityTameable))) {
|
||||||
|| entity instanceof EntityTameable))) {
|
|
||||||
if (!(entity instanceof EntityPlayer)
|
if (!(entity instanceof EntityPlayer)
|
||||||
&& ((EntityLivingBase) entity).getActivePotionEffect(Potion.hunger)
|
&& ((EntityLivingBase) entity).getActivePotionEffect(Potion.hunger) != null) {
|
||||||
!= null) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1948,14 +1895,10 @@ public class TileSeal extends TileEntity {
|
||||||
((EntityLivingBase) entity).heal(1);
|
((EntityLivingBase) entity).heal(1);
|
||||||
if (buff) {
|
if (buff) {
|
||||||
((EntityLivingBase) entity)
|
((EntityLivingBase) entity)
|
||||||
.addPotionEffect(
|
.addPotionEffect(new PotionEffect(Potion.regeneration.id, 60, 1));
|
||||||
new PotionEffect(Potion.regeneration.id, 60, 1)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
super.worldObj.playSoundAtEntity(
|
super.worldObj.playSoundAtEntity(entity, "thaumcraft.heal", 1.0F, 1.0F);
|
||||||
entity, "thaumcraft.heal", 1.0F, 1.0F
|
|
||||||
);
|
|
||||||
|
|
||||||
for (int qq = 0; qq < 5; ++qq) {
|
for (int qq = 0; qq < 5; ++qq) {
|
||||||
FXWisp ef = new FXWisp(
|
FXWisp ef = new FXWisp(
|
||||||
|
@ -1993,16 +1936,13 @@ public class TileSeal extends TileEntity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void
|
private void scorch(int range, int damage, boolean mobs, boolean animals, boolean pvp) {
|
||||||
scorch(int range, int damage, boolean mobs, boolean animals, boolean pvp) {
|
List<Entity> list = this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
||||||
List<Entity> list
|
|
||||||
= this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
|
||||||
|
|
||||||
for (int a = list.size() - 1; a >= 0; --a) {
|
for (int a = list.size() - 1; a >= 0; --a) {
|
||||||
Entity entity = (Entity) list.get(a);
|
Entity entity = (Entity) list.get(a);
|
||||||
if (entity instanceof EntityLivingBase
|
if (entity instanceof EntityLivingBase
|
||||||
&& (animals && entity instanceof EntityAnimal
|
&& (animals && entity instanceof EntityAnimal && !(entity instanceof EntityTameable)
|
||||||
&& !(entity instanceof EntityTameable)
|
|
||||||
|| mobs && (entity instanceof EntityMob || entity instanceof IMob)
|
|| mobs && (entity instanceof EntityMob || entity instanceof IMob)
|
||||||
|| pvp && entity instanceof EntityPlayer)) {
|
|| pvp && entity instanceof EntityPlayer)) {
|
||||||
for (int q = 0; q < damage; ++q) {
|
for (int q = 0; q < damage; ++q) {
|
||||||
|
@ -2055,15 +1995,13 @@ public class TileSeal extends TileEntity {
|
||||||
animals = false;
|
animals = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Entity> list
|
List<Entity> list = this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
||||||
= this.getEntitiesSorted(super.worldObj, range, this.orientation, true);
|
|
||||||
|
|
||||||
for (int a = 0; a < list.size(); ++a) {
|
for (int a = 0; a < list.size(); ++a) {
|
||||||
if (list.get(a) instanceof EntityLivingBase
|
if (list.get(a) instanceof EntityLivingBase
|
||||||
&& this.canEntityBeSeen((Entity) list.get(a))) {
|
&& this.canEntityBeSeen((Entity) list.get(a))) {
|
||||||
EntityLivingBase entity = (EntityLivingBase) list.get(a);
|
EntityLivingBase entity = (EntityLivingBase) list.get(a);
|
||||||
if (animals && entity instanceof EntityAnimal
|
if (animals && entity instanceof EntityAnimal && !(entity instanceof EntityTameable)
|
||||||
&& !(entity instanceof EntityTameable)
|
|
||||||
|| mobs && (entity instanceof EntityMob || entity instanceof IMob)
|
|| mobs && (entity instanceof EntityMob || entity instanceof IMob)
|
||||||
|| pvp && entity instanceof EntityPlayer) {
|
|| pvp && entity instanceof EntityPlayer) {
|
||||||
shocked = true;
|
shocked = true;
|
||||||
|
@ -2077,9 +2015,9 @@ public class TileSeal extends TileEntity {
|
||||||
bolt.setType(2);
|
bolt.setType(2);
|
||||||
bolt.finalizeBolt();
|
bolt.finalizeBolt();
|
||||||
entity.attackEntityFrom(DamageSource.magic, 3);
|
entity.attackEntityFrom(DamageSource.magic, 3);
|
||||||
entity.addPotionEffect(new PotionEffect(
|
entity.addPotionEffect(
|
||||||
Potion.moveSlowdown.id, 100, this.runeAmount(2) * 4
|
new PotionEffect(Potion.moveSlowdown.id, 100, this.runeAmount(2) * 4)
|
||||||
));
|
);
|
||||||
this.worked = true;
|
this.worked = true;
|
||||||
if (this.runeAmount(4) < 2) {
|
if (this.runeAmount(4) < 2) {
|
||||||
break;
|
break;
|
||||||
|
@ -2102,9 +2040,8 @@ public class TileSeal extends TileEntity {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pushEntity(
|
private void
|
||||||
boolean pull, boolean creatures, boolean items, int range, float strength
|
pushEntity(boolean pull, boolean creatures, boolean items, int range, float strength) {
|
||||||
) {
|
|
||||||
boolean pushed = false;
|
boolean pushed = false;
|
||||||
List<Entity> list
|
List<Entity> list
|
||||||
= this.getEntities(super.worldObj, (float) range, this.orientation, false);
|
= this.getEntities(super.worldObj, (float) range, this.orientation, false);
|
||||||
|
@ -2112,22 +2049,19 @@ public class TileSeal extends TileEntity {
|
||||||
for (int a = 0; a < list.size(); ++a) {
|
for (int a = 0; a < list.size(); ++a) {
|
||||||
Entity entity = (Entity) list.get(a);
|
Entity entity = (Entity) list.get(a);
|
||||||
if (!(entity instanceof IProjectile) && !(entity instanceof EntityXPOrb)
|
if (!(entity instanceof IProjectile) && !(entity instanceof EntityXPOrb)
|
||||||
&& !(entity instanceof EntityPlayer)
|
&& !(entity instanceof EntityPlayer) && !(entity instanceof EntityTameable)
|
||||||
&& !(entity instanceof EntityTameable)
|
|
||||||
&& (creatures || !(entity instanceof EntityLivingBase))
|
&& (creatures || !(entity instanceof EntityLivingBase))
|
||||||
&& (items || !(entity instanceof EntityItem))) {
|
&& (items || !(entity instanceof EntityItem))) {
|
||||||
double d6 = entity.posX - (double) this.sealX(false);
|
double d6 = entity.posX - (double) this.sealX(false);
|
||||||
double d8 = entity.posY - (double) this.sealY(false);
|
double d8 = entity.posY - (double) this.sealY(false);
|
||||||
double d10 = entity.posZ - (double) this.sealZ(false);
|
double d10 = entity.posZ - (double) this.sealZ(false);
|
||||||
double d11
|
double d11 = (double) MathHelper.sqrt_double(d6 * d6 + d8 * d8 + d10 * d10);
|
||||||
= (double) MathHelper.sqrt_double(d6 * d6 + d8 * d8 + d10 * d10);
|
|
||||||
d6 /= d11;
|
d6 /= d11;
|
||||||
d8 /= d11;
|
d8 /= d11;
|
||||||
d10 /= d11;
|
d10 /= d11;
|
||||||
if (pull) {
|
if (pull) {
|
||||||
entity.motionX -= d6 * (double) strength * 2.0;
|
entity.motionX -= d6 * (double) strength * 2.0;
|
||||||
if (this.orientation <= 1 || this.runes[2] == 4
|
if (this.orientation <= 1 || this.runes[2] == 4 || this.runes[2] == 5) {
|
||||||
|| this.runes[2] == 5) {
|
|
||||||
entity.motionY -= d8 * (double) strength * 3.0;
|
entity.motionY -= d8 * (double) strength * 3.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2273,9 +2207,7 @@ public class TileSeal extends TileEntity {
|
||||||
1,
|
1,
|
||||||
3
|
3
|
||||||
);
|
);
|
||||||
Minecraft.getMinecraft().effectRenderer.addEffect(
|
Minecraft.getMinecraft().effectRenderer.addEffect(ef1);
|
||||||
ef1
|
|
||||||
);
|
|
||||||
ef2 = new FXSparkle(
|
ef2 = new FXSparkle(
|
||||||
super.worldObj,
|
super.worldObj,
|
||||||
entity.posX
|
entity.posX
|
||||||
|
@ -2300,9 +2232,7 @@ public class TileSeal extends TileEntity {
|
||||||
1,
|
1,
|
||||||
3
|
3
|
||||||
);
|
);
|
||||||
Minecraft.getMinecraft().effectRenderer.addEffect(
|
Minecraft.getMinecraft().effectRenderer.addEffect(ef2);
|
||||||
ef2
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -2346,9 +2276,7 @@ public class TileSeal extends TileEntity {
|
||||||
1,
|
1,
|
||||||
3
|
3
|
||||||
);
|
);
|
||||||
Minecraft.getMinecraft().effectRenderer.addEffect(
|
Minecraft.getMinecraft().effectRenderer.addEffect(ef1);
|
||||||
ef1
|
|
||||||
);
|
|
||||||
ef2 = new FXSparkle(
|
ef2 = new FXSparkle(
|
||||||
super.worldObj,
|
super.worldObj,
|
||||||
entity.posX
|
entity.posX
|
||||||
|
@ -2373,9 +2301,7 @@ public class TileSeal extends TileEntity {
|
||||||
1,
|
1,
|
||||||
3
|
3
|
||||||
);
|
);
|
||||||
Minecraft.getMinecraft().effectRenderer.addEffect(
|
Minecraft.getMinecraft().effectRenderer.addEffect(ef2);
|
||||||
ef2
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -2458,9 +2384,7 @@ public class TileSeal extends TileEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
private WRVector3 sealPos(boolean reverse) {
|
private WRVector3 sealPos(boolean reverse) {
|
||||||
return new WRVector3(
|
return new WRVector3(this.sealX(reverse), this.sealY(reverse), this.sealZ(reverse));
|
||||||
this.sealX(reverse), this.sealY(reverse), this.sealZ(reverse)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int runeAmount(int type) {
|
public int runeAmount(int type) {
|
||||||
|
@ -2616,7 +2540,8 @@ public class TileSeal extends TileEntity {
|
||||||
@Override
|
@Override
|
||||||
public void onChunkUnload() {
|
public void onChunkUnload() {
|
||||||
super.onChunkUnload();
|
super.onChunkUnload();
|
||||||
this.invalidate();
|
if (this.worldObj.isRemote && this.renderer != null)
|
||||||
|
this.renderer.deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canEntityBeSeen(Entity entity) {
|
public boolean canEntityBeSeen(Entity entity) {
|
||||||
|
@ -2627,9 +2552,7 @@ public class TileSeal extends TileEntity {
|
||||||
(double) this.zCoord + 0.5
|
(double) this.zCoord + 0.5
|
||||||
),
|
),
|
||||||
Vec3.createVectorHelper(
|
Vec3.createVectorHelper(
|
||||||
entity.posX,
|
entity.posX, entity.posY + (double) entity.getEyeHeight(), entity.posZ
|
||||||
entity.posY + (double) entity.getEyeHeight(),
|
|
||||||
entity.posZ
|
|
||||||
),
|
),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
@ -2638,8 +2561,7 @@ public class TileSeal extends TileEntity {
|
||||||
|
|
||||||
public List<Entity>
|
public List<Entity>
|
||||||
getEntitiesSorted(World world, int range, int orientation, boolean visibleonly) {
|
getEntitiesSorted(World world, int range, int orientation, boolean visibleonly) {
|
||||||
List<Entity> ws
|
List<Entity> ws = this.getEntities(world, (float) range, orientation, visibleonly);
|
||||||
= this.getEntities(world, (float) range, orientation, visibleonly);
|
|
||||||
boolean didSort = false;
|
boolean didSort = false;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -2649,8 +2571,7 @@ public class TileSeal extends TileEntity {
|
||||||
Entity entity = (Entity) ws.get(a);
|
Entity entity = (Entity) ws.get(a);
|
||||||
double dist = this.getDistanceFrom(entity.posX, entity.posY, entity.posZ);
|
double dist = this.getDistanceFrom(entity.posX, entity.posY, entity.posZ);
|
||||||
Entity entity2 = (Entity) ws.get(a + 1);
|
Entity entity2 = (Entity) ws.get(a + 1);
|
||||||
double dist2
|
double dist2 = this.getDistanceFrom(entity2.posX, entity2.posY, entity2.posZ);
|
||||||
= this.getDistanceFrom(entity2.posX, entity2.posY, entity2.posZ);
|
|
||||||
if (dist > dist2) {
|
if (dist > dist2) {
|
||||||
ws.remove(a);
|
ws.remove(a);
|
||||||
ws.add(entity);
|
ws.add(entity);
|
||||||
|
|
|
@ -25,7 +25,7 @@ public class TileSoulBrazier extends TileEntity implements ISidedInventory, ITil
|
||||||
private boolean previousLight;
|
private boolean previousLight;
|
||||||
private int lightingDelay;
|
private int lightingDelay;
|
||||||
|
|
||||||
public static ItemStack VALID_ITEM = new ItemStack(TMItems.soul_fragment);
|
public static ItemStack VALID_ITEM = new ItemStack(TMItems.soulFragment);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GuiID getGuiID() {
|
public GuiID getGuiID() {
|
||||||
|
|
|
@ -53,6 +53,8 @@ item.thaummach:upgrade_6.name=Collected Wisdom
|
||||||
|
|
||||||
item.thaummach:soul_fragment.name=Soul Fragment
|
item.thaummach:soul_fragment.name=Soul Fragment
|
||||||
|
|
||||||
|
item.thaummach:void_bracelet.name=Void Bracelet
|
||||||
|
|
||||||
item.thaummach:singularity.name=Arcane Singularity
|
item.thaummach:singularity.name=Arcane Singularity
|
||||||
item.thaummach:crystalline_bell.name=Crystalline Bell
|
item.thaummach:crystalline_bell.name=Crystalline Bell
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 349 B |
After Width: | Height: | Size: 397 B |
After Width: | Height: | Size: 398 B |
After Width: | Height: | Size: 396 B |
After Width: | Height: | Size: 399 B |
After Width: | Height: | Size: 391 B |
After Width: | Height: | Size: 395 B |