Compare commits

..
20 changed files with 534 additions and 557 deletions

No files matched your search

+1
View File
@@ -27,6 +27,7 @@ whitelist.json
*.iws
src/main/resources/mixins.*.json
*.bat
*.sh
*.DS_Store
!gradlew.bat
layout.json
+3 -3
View File
@@ -1,10 +1,10 @@
// Add your dependencies here
dependencies {
api('com.github.GTNewHorizons:Baubles-Expanded:2.2.21-GTNH:dev')
api('com.github.GTNewHorizons:Baubles-Expanded:2.2.24-GTNH:dev')
api('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev')
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.52.548:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.54.168:dev') {transitive = false}
runtimeOnlyNonPublishable('com.github.GTNewHorizons:AspectRecipeIndex:1.1.0:dev')
runtimeOnlyNonPublishable('com.github.GTNewHorizons:AspectRecipeIndex:1.1.5:dev')
}
+5
View File
@@ -186,6 +186,11 @@ modrinthRelations =
# Leave this empty if you don't want to publish on CurseForge.
curseForgeProjectId = 227914
# Comma-separated supported CurseForge environments: client, server (case-insensitive).
# Use client or server for mods that only support one environment. Defaults to client,server.
# These tags describe where the mod can run, not whether installation is required on both sides.
curseForgeEnvironments = client,server
# The project's relations on CurseForge. You can use this to refer to other projects on CurseForge.
# Syntax: type1:name1;type2:name2;...
# Where type can be one of [requiredDependency, embeddedLibrary, optionalDependency, tool, incompatible],
+10 -10
View File
@@ -1,12 +1,12 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/cd495626d2ee49a75447e3fdc6afb287/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/cd495626d2ee49a75447e3fdc6afb287/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/d4fd992c9557644e637ebe98263e0ae7/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/faa12903720d410b387cc69ccafb1a74/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/cd495626d2ee49a75447e3fdc6afb287/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/8e1d9ee5d0f13e442218f6884a306da1/redirect
toolchainVendor=ADOPTIUM
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/539ea72837c6244075f8ee037babc29e/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/876dbbf00bf4ef6190f7da074cee903a/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/539ea72837c6244075f8ee037babc29e/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/876dbbf00bf4ef6190f7da074cee903a/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/9064f22734b42ac03e85df04b632e167/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/4d0277c49991306ac78048580fe34bcf/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/539ea72837c6244075f8ee037babc29e/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/876dbbf00bf4ef6190f7da074cee903a/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a9fa3b809e484a1e1ac4308a5dda661a/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/aa99913fa6d767d899ffc96082da01ca/redirect
toolchainVersion=25
Binary file not shown.
+3 -1
View File
@@ -1,7 +1,9 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored
+3 -3
View File
@@ -20,7 +20,7 @@
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
# gradlew start up script for POSIX generated by Gradle.
#
# Important for running:
#
@@ -29,7 +29,7 @@
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
# ksh gradlew
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
Vendored
+12 -23
View File
@@ -19,12 +19,12 @@
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem gradlew startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Set local scope for the variables, and ensure extensions are enabled
setlocal EnableExtensions
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@@ -51,7 +51,7 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
"%COMSPEC%" /c exit 1
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
@@ -65,29 +65,18 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
"%COMSPEC%" /c exit 1
:execute
@rem Setup the command line
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
@rem Execute gradlew
@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
@rem which allows us to clear the local environment before executing the java command
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
:exitWithErrorLevel
@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
"%COMSPEC%" /c exit %ERRORLEVEL%
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.24'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.31'
}
@@ -3243,7 +3243,7 @@ public class ThaumicHorizons {
critterRecipes.add(
new CreatureInfusionRecipe(
"cowInfusion",
EntityList.getEntityID(new EntityMooshroom(null)),
-EntityList.getEntityID(new EntityMooshroom(null)),
2,
(new AspectList()).add(Aspect.PLANT, 8).add(Aspect.BEAST, 4),
EntityCow.class,
@@ -82,20 +82,19 @@ public class BlockSyntheticNode extends BlockContainer {
return false;
}
public void breakBlock(final World p_149749_1_, final int p_149749_2_, final int p_149749_3_, final int p_149749_4_,
final Block p_149749_5_, final int p_149749_6_) {
final TileSyntheticNode tile = (TileSyntheticNode) p_149749_1_
.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
if (tile != null) {
for (final Aspect asp : tile.getMaxAspects().getAspects()) {
final ItemStack essence = new ItemStack(
ConfigItems.itemWispEssence,
tile.getMaxAspects().getAmount(asp) / 4);
((ItemWispEssence) ConfigItems.itemWispEssence).setAspects(essence, new AspectList().add(asp, 2));
p_149749_1_.spawnEntityInWorld(
new EntityItem(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, essence));
}
public void breakBlock(final World world, final int x, final int y, final int z, final Block block,
final int meta) {
if (!(world.getTileEntity(x, y, z) instanceof TileSyntheticNode tile)) {
super.breakBlock(world, x, y, z, block, meta);
return;
}
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
for (final Aspect asp : tile.getMaxAspects().getAspects()) {
final ItemStack essence = new ItemStack(
ConfigItems.itemWispEssence,
tile.getMaxAspects().getAmount(asp) / 4);
((ItemWispEssence) ConfigItems.itemWispEssence).setAspects(essence, new AspectList().add(asp, 2));
world.spawnEntityInWorld(new EntityItem(world, x, y, z, essence));
}
super.breakBlock(world, x, y, z, block, meta);
}
}
@@ -401,7 +401,27 @@ public class ItemFocusLiquefaction extends ItemFocusBasic {
final int meltable = this.isMeltableBlock(bi, md);
final boolean flammable = bi.isFlammable(p.worldObj, x, y, z, ForgeDirection.UNKNOWN);
ItemStack result = FurnaceRecipes.smelting().getSmeltingResult(new ItemStack(bi, 1, md));
if (result != null && wand.consumeAllVis(stack, p, this.getVisCost(stack), true, true)) {
// Meltable blocks (e.g. stone) take priority over any furnace smelting recipe they may have,
// otherwise mods that add a smelting recipe for stone (such as Et Futurum Requiem's smooth
// stone) would prevent the stone -> lava transmutation.
if (meltable > 0 && wand.consumeAllVis(stack, p, this.getVisCost(stack), true, true)) {
if (meltable == 1) {
p.worldObj.setBlockToAir(x, y, z);
} else if (meltable == 2) {
if (p.worldObj.provider.dimensionId != -1) {
p.worldObj.setBlock(x, y, z, Blocks.water, 0, 3);
} else {
p.worldObj.setBlockToAir(x, y, z);
}
} else if (meltable == 3) {
p.worldObj.setBlock(x, y, z, Blocks.dirt, 0, 3);
} else if (meltable == 4) {
Blocks.tnt.onBlockDestroyedByPlayer(p.worldObj, x, y, z, 1);
p.worldObj.setBlockToAir(x, y, z);
} else if (meltable == 6) {
p.worldObj.setBlock(x, y, z, Blocks.lava, 0, 3);
}
} else if (result != null && wand.consumeAllVis(stack, p, this.getVisCost(stack), true, true)) {
if (this.getUpgradeLevel(wand.getFocusItem(stack), ItemFocusLiquefaction.purity) > 0
&& Utils.findSpecialMiningResult(new ItemStack(bi, 1, md), 9999.0f, p.worldObj.rand) != null) {
final ItemStack pure = Utils
@@ -433,23 +453,6 @@ public class ItemFocusLiquefaction extends ItemFocusBasic {
theItem.setEntityItemStack(result.copy());
p.worldObj.spawnEntityInWorld(theItem);
}
} else if (meltable > 0 && wand.consumeAllVis(stack, p, this.getVisCost(stack), true, true)) {
if (meltable == 1) {
p.worldObj.setBlockToAir(x, y, z);
} else if (meltable == 2) {
if (p.worldObj.provider.dimensionId != -1) {
p.worldObj.setBlock(x, y, z, Blocks.water, 0, 3);
} else {
p.worldObj.setBlockToAir(x, y, z);
}
} else if (meltable == 3) {
p.worldObj.setBlock(x, y, z, Blocks.dirt, 0, 3);
} else if (meltable == 4) {
Blocks.tnt.onBlockDestroyedByPlayer(p.worldObj, x, y, z, 1);
p.worldObj.setBlockToAir(x, y, z);
} else if (meltable == 6) {
p.worldObj.setBlock(x, y, z, Blocks.lava, 0, 3);
}
} else if (flammable && wand.consumeAllVis(stack, p, this.getVisCost(stack), true, true)) {
p.worldObj.setBlock(x, y, z, Blocks.fire);
}
@@ -4,7 +4,10 @@
package com.kentington.thaumichorizons.common.items;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLiving;
@@ -43,6 +46,11 @@ public class ItemSyringeEmpty extends Item {
return this.icon;
}
@SideOnly(Side.CLIENT)
public void getSubItems(final Item par1, final CreativeTabs par2CreativeTabs, final List par3List) {
par3List.add(new ItemStack(this, 1, 2));
}
public String getUnlocalizedName(final ItemStack par1ItemStack) {
return "item.syringeEmpty";
}
@@ -60,6 +68,11 @@ public class ItemSyringeEmpty extends Item {
final NBTTagCompound critterTag = new NBTTagCompound();
critter.writeToNBT(critterTag);
critterTag.setString("id", EntityList.getEntityString(ent));
// Strip inventory-related tags - a blood sample should only carry genetic data
critterTag.removeTag("Items");
critterTag.removeTag("ArmorItem");
critterTag.removeTag("SaddleItem");
critterTag.removeTag("ChestedHorse");
bloodSample.stackTagCompound.setString("critterName", ent.getCommandSenderName());
bloodSample.stackTagCompound.setTag("critter", critterTag);
if (p.inventory.addItemStackToInventory(bloodSample)) {
@@ -339,6 +339,7 @@ public class EventHandlerEntity {
}
}
if (prop.hasPlayerInfusion(6) && event.entity.ticksExisted % 200 == 0
&& player.getFoodStats().needFood()
&& player.worldObj.isDaytime()
&& player.worldObj.canBlockSeeTheSky(
MathHelper.floor_double(player.posX),
@@ -35,7 +35,9 @@ import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.gen.NoiseGeneratorOctaves;
import com.kentington.thaumichorizons.common.ThaumicHorizons;
@@ -78,6 +80,17 @@ public class PocketPlaneData {
return a.intValue() > a.floatValue() ? a.intValue() - 1 : a.intValue();
}
/**
* Sets the block directly in the chunk for significant performance boost
*/
private static void setBlock(World world, int x, int y, int z, Block blockIn, int metadataIn) {
WorldServer server = (WorldServer) world;
Chunk chunk = server.theChunkProviderServer.loadChunk(x >> 4, z >> 4);
chunk.func_150807_a(x & 15, y, z & 15, blockIn, metadataIn);
chunk.setChunkModified();
}
// TODO: Make pocket planes generate chunk-by-chunk using normal chunk generation
public static void generatePocketPlane(final AspectList aspects, final PocketPlaneData data, final World world,
final int vortexX, final int vortexY, final int vortexZ, final int returnID) {
if (!world.isRemote) {
@@ -106,12 +119,12 @@ public class PocketPlaneData {
drawSphere(xCenter, yCenter, zCenter, data.radius, ThaumicHorizons.blockVoid, 0, world);
for (int x = -2; x <= 2; ++x) {
for (int z = -2; z <= 2; ++z) {
world.setBlock(xCenter + x, yCenter, zCenter + z, ConfigBlocks.blockCosmeticSolid, 6, 0);
setBlock(world, xCenter + x, yCenter, zCenter + z, ConfigBlocks.blockCosmeticSolid, 6);
world.setBlockToAir(xCenter + x, yCenter + 1, zCenter + z);
world.setBlockToAir(xCenter + x, yCenter + 2, zCenter + z);
}
}
world.setBlock(xCenter, yCenter + 1, zCenter, ThaumicHorizons.blockVortex);
setBlock(world, xCenter, yCenter + 1, zCenter, ThaumicHorizons.blockVortex, 0);
TileEntity te = world.getTileEntity(xCenter, yCenter + 1, zCenter);
if (!(te instanceof TileVortex)) {
te = new TileVortex();
@@ -332,6 +345,7 @@ public class PocketPlaneData {
level -= fastFloor((aspectFraction(Aspect.CLOTH, aspects) * data.radius));
drewAnything = true;
}
if (aspects.getAmount(Aspect.EARTH) > 0) {
if (bio == BiomeGenBase.desert) {
drawLayer(xCenter, yCenter, zCenter, data, world, Blocks.sand, 0, level, noise, bio, life, aspects);
@@ -427,13 +441,13 @@ public class PocketPlaneData {
if (top != bottom && level + y > 0) {
if (y == top) {
if (block != null) {
world.setBlock(x + xCenter, y + level, z + zCenter, block, md, 0);
setBlock(world, x + xCenter, y + level, z + zCenter, block, md);
}
if (block == Blocks.water) {
if (bio != null && bio.getTempCategory() == BiomeGenBase.TempCategory.COLD) {
world.setBlock(x + xCenter, y + level, z + zCenter, Blocks.ice, 0, 0);
setBlock(world, x + xCenter, y + level, z + zCenter, Blocks.ice, 0);
} else {
world.setBlock(x + xCenter, y + level, z + zCenter, block, 0, 0);
setBlock(world, x + xCenter, y + level, z + zCenter, block, 0);
if ((life > 40 || aspects.getAmount(Aspect.BEAST) > 0)
&& world.rand.nextInt(100) > 98
&& creatures < MAX_CREATURES) {
@@ -444,199 +458,199 @@ public class PocketPlaneData {
++creatures;
}
if (life > 0 && world.rand.nextInt(100) > 98) {
world.setBlock(x + xCenter, y + level + 1, z + zCenter, Blocks.waterlily, 0, 0);
setBlock(world, x + xCenter, y + level + 1, z + zCenter, Blocks.waterlily, 0);
}
}
} else if (block == Blocks.dirt) {
if (life > 0 && world.isAirBlock(x + xCenter, y + level + 1, z + zCenter)) {
world.setBlock(x + xCenter, y + level, z + zCenter, Blocks.grass, 0, 0);
setBlock(world, x + xCenter, y + level, z + zCenter, Blocks.grass, 0);
if (life >= 10) {
if ((life >= 20 || aspects.getAmount(Aspect.CROP) > 0
|| aspects.getAmount(Aspect.HARVEST) > 0)
&& world.rand.nextInt(100) > 97) {
switch (world.rand.nextInt(10)) {
case 0 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level,
z + zCenter,
Blocks.farmland,
0,
0);
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.carrots,
0,
0);
}
case 1 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level,
z + zCenter,
Blocks.farmland,
0,
0);
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.potatoes,
0,
0);
}
case 2 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level,
z + zCenter,
Blocks.farmland,
0,
0);
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.wheat,
0,
0);
}
case 3 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.melon_block,
0,
0);
}
case 4 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.pumpkin,
0,
0);
}
case 5 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.reeds,
0,
0);
}
case 6 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level,
z + zCenter,
Blocks.mycelium,
0,
0);
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.red_mushroom,
0,
0);
}
case 7 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level,
z + zCenter,
Blocks.mycelium,
0,
0);
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.brown_mushroom,
0,
0);
}
case 8 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
ConfigBlocks.blockCustomPlant,
2,
0);
2);
}
case 9 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
ConfigBlocks.blockCustomPlant,
5,
0);
5);
}
}
} else if ((life >= 15 || aspects.getAmount(Aspect.TREE) > 0)
&& world.rand.nextInt(100) > 97) {
switch (world.rand.nextInt(10)) {
case 0 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.sapling,
0,
0);
}
case 1 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.sapling,
1,
0);
1);
}
case 2 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.sapling,
2,
0);
2);
}
case 3 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.sapling,
3,
0);
3);
}
case 4 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.sapling,
4,
0);
4);
}
case 5 -> {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.sapling,
5,
0);
5);
}
case 6 -> {
if (((bio != null
@@ -644,24 +658,24 @@ public class PocketPlaneData {
|| aspects.getAmount(Aspect.MAGIC) > 10
|| aspects.getAmount(Aspect.AURA) > 5)
&& world.rand.nextInt(4) == 0) {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
ConfigBlocks.blockCustomPlant,
1,
0);
1);
break;
}
}
case 7 -> {
if (world.rand.nextInt(3) == 0) {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
ConfigBlocks.blockCustomPlant,
0,
0);
break;
}
@@ -672,40 +686,40 @@ public class PocketPlaneData {
&& world.rand.nextInt(100) > 94) {
final int random = world.rand.nextInt(18);
if (random <= 15) {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.red_flower,
random,
0);
random);
} else {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
Blocks.tallgrass,
random - 16,
0);
random - 16);
}
}
}
} else {
world.setBlock(x + xCenter, y + level, z + zCenter, block, 0, 0);
setBlock(world, x + xCenter, y + level, z + zCenter, block, 0);
}
} else if (block == Blocks.sand) {
world.setBlock(x + xCenter, y + level, z + zCenter, block, 0, 0);
setBlock(world, x + xCenter, y + level, z + zCenter, block, 0);
if (life > 10) {
if (life >= 20 && world.rand.nextInt(100) > 98) {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
ConfigBlocks.blockCustomPlant,
3,
0);
3);
} else if (world.rand.nextInt(100) > 97) {
world.setBlock(x + xCenter, y + level + 1, z + zCenter, Blocks.cactus, 0, 0);
setBlock(world, x + xCenter, y + level + 1, z + zCenter, Blocks.cactus, 0);
}
}
} else if (block == ConfigBlocks.blockTaint && md == 2 && world.rand.nextInt(300) > 298) {
@@ -713,12 +727,12 @@ public class PocketPlaneData {
for (int ecks = 0; ecks < 3; ++ecks) {
for (int zee = 0; zee < 2; ++zee) {
for (int why = 0; why < 2; ++why) {
world.setBlock(
setBlock(
world,
x + xCenter + ecks,
y + level + why,
z + zCenter + zee,
ThaumicHorizons.blockBrain,
0,
0);
}
}
@@ -727,12 +741,12 @@ public class PocketPlaneData {
for (int ecks = 0; ecks < 2; ++ecks) {
for (int zee = 0; zee < 3; ++zee) {
for (int why = 0; why < 2; ++why) {
world.setBlock(
setBlock(
world,
x + xCenter + ecks,
y + level + why,
z + zCenter + zee,
ThaumicHorizons.blockBrain,
0,
0);
}
}
@@ -741,7 +755,7 @@ public class PocketPlaneData {
}
if (bio != null && block.isNormalCube()
&& bio.getTempCategory() == BiomeGenBase.TempCategory.COLD) {
world.setBlock(x + xCenter, y + level + 1, z + zCenter, Blocks.snow_layer, 1, 0);
setBlock(world, x + xCenter, y + level + 1, z + zCenter, Blocks.snow_layer, 1);
}
if ((life >= 50 || aspects.getAmount(Aspect.BEAST) > 0) && world.rand.nextInt(100) > 98) {
EntityLiving critter = null;
@@ -799,52 +813,46 @@ public class PocketPlaneData {
++creatures;
}
if (aspects.getAmount(Aspect.ELDRITCH) > 0 && world.rand.nextInt(200) > 198) {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level,
z + zCenter,
ConfigBlocks.blockCosmeticSolid,
1,
0);
world.setBlock(
1);
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
ConfigBlocks.blockCosmeticSolid,
0,
0);
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 2,
z + zCenter,
ConfigBlocks.blockCosmeticSolid,
0,
0);
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 3,
z + zCenter,
ConfigBlocks.blockCosmeticSolid,
0,
0);
}
if (aspects.getAmount(Aspect.CRAFT) > 0 && world.rand.nextInt(200) > 198) {
world.setBlock(
setBlock(
world,
x + xCenter,
y + level + 1,
z + zCenter,
ConfigBlocks.blockStoneDevice,
1,
0);
1);
}
if (aspects.getAmount(Aspect.TAINT) > 0 && world.rand.nextInt(100) > 98) {
world.setBlock(
x + xCenter,
y + level,
z + zCenter,
ConfigBlocks.blockTaintFibres,
0,
0);
setBlock(world, x + xCenter, y + level, z + zCenter, ConfigBlocks.blockTaintFibres, 0);
}
if (aspects.getAmount(Aspect.TAINT) > 0 && world.rand.nextInt(200) > 198
&& creatures < MAX_CREATURES) {
@@ -861,7 +869,7 @@ public class PocketPlaneData {
++creatures;
}
} else if (block != null) {
world.setBlock(x + xCenter, y + level, z + zCenter, block, md, 0);
setBlock(world, x + xCenter, y + level, z + zCenter, block, md);
}
}
}
@@ -988,114 +996,114 @@ public class PocketPlaneData {
yCenter + yOffset + y,
zCenter - zSize + zOffset + z) != Blocks.water) {
if (whichAspect == Aspect.EARTH) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
ConfigBlocks.blockCrystal,
3,
0);
3);
} else if (whichAspect == Aspect.AIR) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
ConfigBlocks.blockCrystal,
0,
0);
} else if (whichAspect == Aspect.WATER) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
ConfigBlocks.blockCrystal,
2,
0);
2);
} else if (whichAspect == Aspect.FIRE) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
ConfigBlocks.blockCrystal,
1,
0);
1);
} else if (whichAspect == Aspect.ORDER) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
ConfigBlocks.blockCrystal,
4,
0);
4);
} else if (whichAspect == Aspect.ENTROPY) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
ConfigBlocks.blockCrystal,
5,
0);
5);
} else if (whichAspect == Aspect.DEATH || whichAspect == Aspect.UNDEAD) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
Blocks.skull,
0,
0);
} else if (whichAspect == Aspect.SENSES) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
Blocks.lapis_block,
0,
0);
} else if (whichAspect == Aspect.GREED) {
if (world.rand.nextBoolean()) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
Blocks.gold_block,
0,
0);
} else {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
Blocks.emerald_block,
0,
0);
}
} else if (whichAspect == Aspect.METAL) {
if (world.rand.nextBoolean()) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
Blocks.gold_block,
0,
0);
} else {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
Blocks.iron_block,
0,
0);
}
}
}
} else {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
Blocks.air,
0,
0);
}
}
@@ -1395,13 +1403,13 @@ public class PocketPlaneData {
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z) != Blocks.water) {
world.setBlock(
setBlock(
world,
xCenter - xSize + xOffset + x,
yCenter + yOffset + y,
zCenter - zSize + zOffset + z,
block,
md,
0);
md);
}
}
}
@@ -1478,38 +1486,38 @@ public class PocketPlaneData {
int z = 0;
int radiusError = error0;
while (x >= z) {
world.setBlock(x0 + x, y0 + y1, z0 + z, block, md, 0);
world.setBlock(x0 + z, y0 + y1, z0 + x, block, md, 0);
world.setBlock(x0 - x, y0 + y1, z0 + z, block, md, 0);
world.setBlock(x0 - z, y0 + y1, z0 + x, block, md, 0);
world.setBlock(x0 - x, y0 + y1, z0 - z, block, md, 0);
world.setBlock(x0 - z, y0 + y1, z0 - x, block, md, 0);
world.setBlock(x0 + x, y0 + y1, z0 - z, block, md, 0);
world.setBlock(x0 + z, y0 + y1, z0 - x, block, md, 0);
world.setBlock(x0 + x, y0 - y1, z0 + z, block, md, 0);
world.setBlock(x0 + z, y0 - y1, z0 + x, block, md, 0);
world.setBlock(x0 - x, y0 - y1, z0 + z, block, md, 0);
world.setBlock(x0 - z, y0 - y1, z0 + x, block, md, 0);
world.setBlock(x0 - x, y0 - y1, z0 - z, block, md, 0);
world.setBlock(x0 - z, y0 - y1, z0 - x, block, md, 0);
world.setBlock(x0 + x, y0 - y1, z0 - z, block, md, 0);
world.setBlock(x0 + z, y0 - y1, z0 - x, block, md, 0);
world.setBlock(x0 + y1, y0 + x, z0 + z, block, md, 0);
world.setBlock(x0 + z, y0 + x, z0 + y1, block, md, 0);
world.setBlock(x0 - y1, y0 + x, z0 + z, block, md, 0);
world.setBlock(x0 - z, y0 + x, z0 + y1, block, md, 0);
world.setBlock(x0 + y1, y0 + x, z0 - z, block, md, 0);
world.setBlock(x0 + z, y0 + x, z0 - y1, block, md, 0);
world.setBlock(x0 - y1, y0 + x, z0 - z, block, md, 0);
world.setBlock(x0 - z, y0 + x, z0 - y1, block, md, 0);
world.setBlock(x0 + y1, y0 - x, z0 + z, block, md, 0);
world.setBlock(x0 + z, y0 - x, z0 + y1, block, md, 0);
world.setBlock(x0 - y1, y0 - x, z0 + z, block, md, 0);
world.setBlock(x0 - z, y0 - x, z0 + y1, block, md, 0);
world.setBlock(x0 + y1, y0 - x, z0 - z, block, md, 0);
world.setBlock(x0 + z, y0 - x, z0 - y1, block, md, 0);
world.setBlock(x0 - y1, y0 - x, z0 - z, block, md, 0);
world.setBlock(x0 - z, y0 - x, z0 - y1, block, md, 0);
setBlock(world, x0 + x, y0 + y1, z0 + z, block, md);
setBlock(world, x0 + z, y0 + y1, z0 + x, block, md);
setBlock(world, x0 - x, y0 + y1, z0 + z, block, md);
setBlock(world, x0 - z, y0 + y1, z0 + x, block, md);
setBlock(world, x0 - x, y0 + y1, z0 - z, block, md);
setBlock(world, x0 - z, y0 + y1, z0 - x, block, md);
setBlock(world, x0 + x, y0 + y1, z0 - z, block, md);
setBlock(world, x0 + z, y0 + y1, z0 - x, block, md);
setBlock(world, x0 + x, y0 - y1, z0 + z, block, md);
setBlock(world, x0 + z, y0 - y1, z0 + x, block, md);
setBlock(world, x0 - x, y0 - y1, z0 + z, block, md);
setBlock(world, x0 - z, y0 - y1, z0 + x, block, md);
setBlock(world, x0 - x, y0 - y1, z0 - z, block, md);
setBlock(world, x0 - z, y0 - y1, z0 - x, block, md);
setBlock(world, x0 + x, y0 - y1, z0 - z, block, md);
setBlock(world, x0 + z, y0 - y1, z0 - x, block, md);
setBlock(world, x0 + y1, y0 + x, z0 + z, block, md);
setBlock(world, x0 + z, y0 + x, z0 + y1, block, md);
setBlock(world, x0 - y1, y0 + x, z0 + z, block, md);
setBlock(world, x0 - z, y0 + x, z0 + y1, block, md);
setBlock(world, x0 + y1, y0 + x, z0 - z, block, md);
setBlock(world, x0 + z, y0 + x, z0 - y1, block, md);
setBlock(world, x0 - y1, y0 + x, z0 - z, block, md);
setBlock(world, x0 - z, y0 + x, z0 - y1, block, md);
setBlock(world, x0 + y1, y0 - x, z0 + z, block, md);
setBlock(world, x0 + z, y0 - x, z0 + y1, block, md);
setBlock(world, x0 - y1, y0 - x, z0 + z, block, md);
setBlock(world, x0 - z, y0 - x, z0 + y1, block, md);
setBlock(world, x0 + y1, y0 - x, z0 - z, block, md);
setBlock(world, x0 + z, y0 - x, z0 - y1, block, md);
setBlock(world, x0 - y1, y0 - x, z0 - z, block, md);
setBlock(world, x0 - z, y0 - x, z0 - y1, block, md);
++z;
if (radiusError < 0) {
radiusError += 2 * z + 1;
@@ -1636,7 +1644,7 @@ public class PocketPlaneData {
if (which == 1) {
for (int x = -1; x <= 1; ++x) {
for (int y = 126; y <= 128; ++y) {
world.setBlock(x, y, 256 * id + data.radius, ThaumicHorizons.blockVoid);
setBlock(world, x, y, 256 * id + data.radius, ThaumicHorizons.blockVoid, 0);
}
}
data.portalA[0] = 0;
@@ -1645,7 +1653,7 @@ public class PocketPlaneData {
} else if (which == 2) {
for (int x = -1; x <= 1; ++x) {
for (int y = 126; y <= 128; ++y) {
world.setBlock(x, y, 256 * id - data.radius, ThaumicHorizons.blockVoid);
setBlock(world, x, y, 256 * id - data.radius, ThaumicHorizons.blockVoid, 0);
}
}
data.portalB[0] = 0;
@@ -1654,7 +1662,7 @@ public class PocketPlaneData {
} else if (which == 3) {
for (int z = -1; z <= 1; ++z) {
for (int y = 126; y <= 128; ++y) {
world.setBlock(data.radius, y, 256 * id + z, ThaumicHorizons.blockVoid);
setBlock(world, data.radius, y, 256 * id + z, ThaumicHorizons.blockVoid, 0);
}
}
data.portalC[0] = 0;
@@ -1663,7 +1671,7 @@ public class PocketPlaneData {
} else if (which == 4) {
for (int z = -1; z <= 1; ++z) {
for (int y = 126; y <= 128; ++y) {
world.setBlock(-data.radius, y, 256 * id + z, ThaumicHorizons.blockVoid);
setBlock(world, -data.radius, y, 256 * id + z, ThaumicHorizons.blockVoid, 0);
}
}
data.portalD[0] = 0;
@@ -1678,8 +1686,8 @@ public class PocketPlaneData {
if (which == 1) {
for (int x = -1; x <= 1; ++x) {
for (int y = 126; y <= 128; ++y) {
world.setBlock(x, y, 256 * id + data.radius, ThaumicHorizons.blockPortal, 0, 3);
world.setBlock(x, y, 256 * id + data.radius + 1, ThaumicHorizons.blockVoid);
setBlock(world, x, y, 256 * id + data.radius, ThaumicHorizons.blockPortal, 0);
setBlock(world, x, y, 256 * id + data.radius + 1, ThaumicHorizons.blockVoid, 0);
}
}
data.portalA[0] = xCoord;
@@ -1688,8 +1696,8 @@ public class PocketPlaneData {
} else if (which == 2) {
for (int x = -1; x <= 1; ++x) {
for (int y = 126; y <= 128; ++y) {
world.setBlock(x, y, 256 * id - data.radius, ThaumicHorizons.blockPortal, 2, 3);
world.setBlock(x, y, 256 * id - data.radius - 1, ThaumicHorizons.blockVoid);
setBlock(world, x, y, 256 * id - data.radius, ThaumicHorizons.blockPortal, 2);
setBlock(world, x, y, 256 * id - data.radius - 1, ThaumicHorizons.blockVoid, 0);
}
}
data.portalB[0] = xCoord;
@@ -1698,8 +1706,8 @@ public class PocketPlaneData {
} else if (which == 3) {
for (int z = -1; z <= 1; ++z) {
for (int y = 126; y <= 128; ++y) {
world.setBlock(data.radius, y, 256 * id + z, ThaumicHorizons.blockPortal, 1, 3);
world.setBlock(data.radius + 1, y, 256 * id + z, ThaumicHorizons.blockVoid);
setBlock(world, data.radius, y, 256 * id + z, ThaumicHorizons.blockPortal, 1);
setBlock(world, data.radius + 1, y, 256 * id + z, ThaumicHorizons.blockVoid, 0);
}
}
data.portalC[0] = xCoord;
@@ -1708,8 +1716,8 @@ public class PocketPlaneData {
} else if (which == 4) {
for (int z = -1; z <= 1; ++z) {
for (int y = 126; y <= 128; ++y) {
world.setBlock(-data.radius, y, 256 * id + z, ThaumicHorizons.blockPortal, 3, 3);
world.setBlock(-data.radius - 1, y, 256 * id + z, ThaumicHorizons.blockVoid);
setBlock(world, -data.radius, y, 256 * id + z, ThaumicHorizons.blockPortal, 3);
setBlock(world, -data.radius - 1, y, 256 * id + z, ThaumicHorizons.blockVoid, 0);
}
}
data.portalD[0] = xCoord;
@@ -1,36 +0,0 @@
//
// Decompiled by Procyon v0.5.30
//
package com.kentington.thaumichorizons.common.lib;
import net.minecraft.world.World;
import thaumcraft.api.aspects.AspectList;
public class PocketPlaneThread implements Runnable {
PocketPlaneData data;
AspectList aspects;
World world;
int x;
int y;
int z;
int returnID;
public PocketPlaneThread(final PocketPlaneData data, final AspectList aspects, final World world, final int x,
final int y, final int z, final int returnID) {
this.data = data;
this.aspects = aspects;
this.world = world;
this.x = x;
this.y = y;
this.z = z;
this.returnID = returnID;
}
@Override
public void run() {
PocketPlaneData.generatePocketPlane(this.aspects, this.data, this.world, this.x, this.y, this.z, this.returnID);
}
}
@@ -10,8 +10,7 @@ import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.ChatStyle;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import org.lwjgl.input.Keyboard;
@@ -33,8 +32,6 @@ import thaumcraft.api.nodes.IRevealer;
public class THKeyHandler {
private static final ChatStyle INFUSION_MESSAGE = new ChatStyle().setColor(EnumChatFormatting.GRAY).setItalic(true);
public KeyBinding keyV;
public KeyBinding keyM;
public KeyBinding keyC;
@@ -51,19 +48,10 @@ public class THKeyHandler {
public static long lastPressV;
public THKeyHandler() {
this.keyV = new KeyBinding(
"thaumichorizons.key.arcane_lens",
Keyboard.KEY_NONE,
"thaumichorizons.keybind_group");
this.keyM = new KeyBinding(
"thaumichorizons.key.morphic_fingers",
Keyboard.KEY_NONE,
"thaumichorizons.keybind_group");
this.keyC = new KeyBinding(
"thaumichorizons.key.spider_climb",
Keyboard.KEY_NONE,
"thaumichorizons.keybind_group");
this.keyX = new KeyBinding("thaumichorizons.key.chameleon", Keyboard.KEY_NONE, "thaumichorizons.keybind_group");
this.keyV = new KeyBinding("Change Arcane Lens", Keyboard.KEY_NONE, "Thaumcraft");
this.keyM = new KeyBinding("Activate Morphic Fingers", Keyboard.KEY_NONE, "Thaumcraft");
this.keyC = new KeyBinding("Toggle Spider Climb", Keyboard.KEY_NONE, "Thaumcraft");
this.keyX = new KeyBinding("Toggle Chameleon Skin", Keyboard.KEY_NONE, "Thaumcraft");
this.keyPressedM = false;
this.keyPressedC = false;
this.keyPressedX = false;
@@ -77,122 +65,158 @@ public class THKeyHandler {
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void playerTick(final TickEvent.PlayerTickEvent event) {
if (event.side != Side.CLIENT || event.phase != TickEvent.Phase.START || event.player == null) return;
final EntityPlayer player = event.player;
final EntityInfusionProperties infusions = (EntityInfusionProperties) player
.getExtendedProperties("CreatureInfusion");
if (this.keyV.getIsKeyPressed()) {
if (FMLClientHandler.instance().getClient().inGameHasFocus) {
if (!this.keyPressedV) {
THKeyHandler.lastPressV = System.currentTimeMillis();
THKeyHandler.radialLock = false;
}
if (!THKeyHandler.radialLock && player.inventory.armorItemInSlot(3) != null
&& player.inventory.armorItemInSlot(3).getItem() instanceof IRevealer) {
if (player.isSneaking()) {
PacketHandler.INSTANCE.sendToServer(new PacketLensChangeToServer(player, "REMOVE"));
} else {
THKeyHandler.radialActive = true;
}
}
this.keyPressedV = true;
}
} else {
THKeyHandler.radialActive = false;
if (this.keyPressedV) {
THKeyHandler.lastPressV = System.currentTimeMillis();
}
this.keyPressedV = false;
if (event.side == Side.SERVER) {
return;
}
if (this.keyM.getIsKeyPressed()) {
if (FMLClientHandler.instance().getClient().inGameHasFocus) {
if (!this.keyPressedM) {
if (event.phase == TickEvent.Phase.START) {
if (this.keyV.getIsKeyPressed()) {
if (FMLClientHandler.instance().getClient().inGameHasFocus) {
final EntityPlayer player = event.player;
if (player != null) {
if (!this.keyPressedV) {
THKeyHandler.lastPressV = System.currentTimeMillis();
THKeyHandler.radialLock = false;
}
if (!THKeyHandler.radialLock && player.inventory.armorItemInSlot(3) != null
&& player.inventory.armorItemInSlot(3).getItem() instanceof IRevealer) {
if (player.isSneaking()) {
PacketHandler.INSTANCE.sendToServer(new PacketLensChangeToServer(player, "REMOVE"));
} else {
THKeyHandler.radialActive = true;
}
}
}
this.keyPressedV = true;
}
} else {
THKeyHandler.radialActive = false;
if (this.keyPressedV) {
THKeyHandler.lastPressV = System.currentTimeMillis();
}
this.keyPressedV = false;
}
if (this.keyM.getIsKeyPressed()) {
if (FMLClientHandler.instance().getClient().inGameHasFocus) {
final EntityPlayer player = event.player;
if (player != null) {
if (!this.keyPressedM) {
THKeyHandler.lastPressM = System.currentTimeMillis();
}
if (((EntityInfusionProperties) player.getExtendedProperties("CreatureInfusion"))
.hasPlayerInfusion(2) && !this.keyPressedM) {
player.openGui(
ThaumicHorizons.instance,
9,
player.worldObj,
(int) player.posX,
(int) player.posY,
(int) player.posZ);
PacketHandler.INSTANCE.sendToServer(new PacketFingersToServer(player, player.dimension));
}
}
this.keyPressedM = true;
}
} else {
if (this.keyPressedM) {
THKeyHandler.lastPressM = System.currentTimeMillis();
}
if (infusions.hasPlayerInfusion(2) && !this.keyPressedM) {
player.openGui(
ThaumicHorizons.instance,
9,
player.worldObj,
(int) player.posX,
(int) player.posY,
(int) player.posZ);
PacketHandler.INSTANCE.sendToServer(new PacketFingersToServer(player, player.dimension));
this.keyPressedM = false;
}
if (this.keyC.getIsKeyPressed()) {
if (FMLClientHandler.instance().getClient().inGameHasFocus) {
final EntityPlayer player = event.player;
if (player != null) {
if (!this.keyPressedC) {
THKeyHandler.lastPressC = System.currentTimeMillis();
}
if (((EntityInfusionProperties) player.getExtendedProperties("CreatureInfusion"))
.hasPlayerInfusion(9) && !this.keyPressedC) {
((EntityInfusionProperties) player.getExtendedProperties(
"CreatureInfusion")).toggleClimb = !((EntityInfusionProperties) player
.getExtendedProperties("CreatureInfusion")).toggleClimb;
if (((EntityInfusionProperties) player
.getExtendedProperties("CreatureInfusion")).toggleClimb) {
player.addChatMessage(
new ChatComponentText(
EnumChatFormatting.ITALIC + ""
+ EnumChatFormatting.GRAY
+ "Spider Climb disabled."));
} else {
player.addChatMessage(
new ChatComponentText(
EnumChatFormatting.ITALIC + ""
+ EnumChatFormatting.GRAY
+ "Spider Climb enabled."));
}
PacketHandler.INSTANCE
.sendToServer(new PacketToggleClimbToServer(player, player.dimension));
}
}
this.keyPressedC = true;
}
this.keyPressedM = true;
}
} else {
if (this.keyPressedM) {
THKeyHandler.lastPressM = System.currentTimeMillis();
}
this.keyPressedM = false;
}
if (this.keyC.getIsKeyPressed()) {
if (FMLClientHandler.instance().getClient().inGameHasFocus) {
if (!this.keyPressedC) {
} else {
if (this.keyPressedC) {
THKeyHandler.lastPressC = System.currentTimeMillis();
}
if (infusions.hasPlayerInfusion(9) && !this.keyPressedC) {
infusions.toggleClimb = !infusions.toggleClimb;
if (infusions.toggleClimb) {
player.addChatMessage(
new ChatComponentTranslation("selfInfusions.spiderClimb.disable")
.setChatStyle(INFUSION_MESSAGE));
} else {
player.addChatMessage(
new ChatComponentTranslation("selfInfusions.spiderClimb.enable")
.setChatStyle(INFUSION_MESSAGE));
this.keyPressedC = false;
}
if (this.keyX.getIsKeyPressed()) {
if (FMLClientHandler.instance().getClient().inGameHasFocus) {
final EntityPlayer player = event.player;
if (player != null) {
if (!this.keyPressedX) {
THKeyHandler.lastPressX = System.currentTimeMillis();
}
if (((EntityInfusionProperties) player.getExtendedProperties("CreatureInfusion"))
.hasPlayerInfusion(10) && !this.keyPressedX) {
((EntityInfusionProperties) player.getExtendedProperties(
"CreatureInfusion")).toggleInvisible = !((EntityInfusionProperties) player
.getExtendedProperties("CreatureInfusion")).toggleInvisible;
if (((EntityInfusionProperties) player
.getExtendedProperties("CreatureInfusion")).toggleInvisible) {
player.removePotionEffectClient(Potion.invisibility.id);
player.setInvisible(false);
player.addChatMessage(
new ChatComponentText(
EnumChatFormatting.ITALIC + ""
+ EnumChatFormatting.GRAY
+ "Chameleon Skin disabled."));
} else {
final PotionEffect effect = new PotionEffect(
Potion.invisibility.id,
Integer.MAX_VALUE,
0,
true);
effect.setCurativeItems(new ArrayList<>());
player.addPotionEffect(effect);
player.setInvisible(true);
player.addChatMessage(
new ChatComponentText(
EnumChatFormatting.ITALIC + ""
+ EnumChatFormatting.GRAY
+ "Chameleon Skin enabled."));
}
PacketHandler.INSTANCE
.sendToServer(new PacketToggleInvisibleToServer(player, player.dimension));
}
}
PacketHandler.INSTANCE.sendToServer(new PacketToggleClimbToServer(player, player.dimension));
this.keyPressedX = true;
}
this.keyPressedC = true;
}
} else {
if (this.keyPressedC) {
THKeyHandler.lastPressC = System.currentTimeMillis();
}
this.keyPressedC = false;
}
if (this.keyX.getIsKeyPressed()) {
if (FMLClientHandler.instance().getClient().inGameHasFocus) {
if (!this.keyPressedX) {
} else {
if (this.keyPressedX) {
THKeyHandler.lastPressX = System.currentTimeMillis();
}
if (infusions.hasPlayerInfusion(10) && !this.keyPressedX) {
infusions.toggleInvisible = !infusions.toggleInvisible;
if (infusions.toggleInvisible) {
player.removePotionEffectClient(Potion.invisibility.id);
player.setInvisible(false);
player.addChatMessage(
new ChatComponentTranslation("selfInfusions.chameleonSkin.disable")
.setChatStyle(INFUSION_MESSAGE));
} else {
final PotionEffect effect = new PotionEffect(
Potion.invisibility.id,
Integer.MAX_VALUE,
0,
true);
effect.setCurativeItems(new ArrayList<>());
player.addPotionEffect(effect);
player.setInvisible(true);
player.addChatMessage(
new ChatComponentTranslation("selfInfusions.chameleonSkin.enable")
.setChatStyle(INFUSION_MESSAGE));
}
PacketHandler.INSTANCE.sendToServer(new PacketToggleInvisibleToServer(player, player.dimension));
}
this.keyPressedX = true;
this.keyPressedX = false;
}
} else {
if (this.keyPressedX) {
THKeyHandler.lastPressX = System.currentTimeMillis();
}
this.keyPressedX = false;
}
}
static {
THKeyHandler.lastPressM = 0L;
THKeyHandler.lastPressC = 0L;
THKeyHandler.lastPressX = 0L;
THKeyHandler.radialActive = false;
THKeyHandler.radialLock = false;
THKeyHandler.lastPressV = 0L;
}
}
@@ -1239,22 +1239,25 @@ public class TileVat extends TileThaumcraft implements IAspectContainer, IEssent
EntityLivingBase created = null;
if ((Integer) out < 0) {
created = (EntityLivingBase) EntityList.createEntityByID(-(Integer) out, this.worldObj);
} else {
final ModContainer mc = Loader.instance().getIndexedModList().get("ThaumicHorizons");
try {
created = (EntityLivingBase) EntityRegistry.instance().lookupModSpawn(mc, (Integer) out)
.getEntityClass().getConstructor(World.class).newInstance(this.worldObj);
} catch (InvocationTargetException e) {
e.getCause().printStackTrace();
} catch (Exception e2) {
e2.printStackTrace();
}
}
final ModContainer mc = Loader.instance().getIndexedModList().get("ThaumicHorizons");
try {
created = (EntityLivingBase) EntityRegistry.instance().lookupModSpawn(mc, (Integer) out)
.getEntityClass().getConstructor(World.class).newInstance(this.worldObj);
} catch (InvocationTargetException e) {
e.getCause().printStackTrace();
} catch (Exception e2) {
e2.printStackTrace();
if (created != null) {
created.copyLocationAndAnglesFrom(this.getEntityContained());
created.copyDataFrom(this.getEntityContained(), true);
if (created instanceof IEntityInfusedStats) {
((IEntityInfusedStats) created).resetStats();
}
this.setEntityContained(created);
}
created.copyLocationAndAnglesFrom(this.getEntityContained());
created.copyDataFrom(this.getEntityContained(), true);
if (created instanceof IEntityInfusedStats) {
((IEntityInfusedStats) created).resetStats();
}
this.setEntityContained(created);
} else if (out instanceof NBTBase) {
final NBTTagCompound tagMods = (NBTTagCompound) out;
final Multimap map = HashMultimap.create();
@@ -33,7 +33,6 @@ import net.minecraftforge.common.DimensionManager;
import com.kentington.thaumichorizons.common.ThaumicHorizons;
import com.kentington.thaumichorizons.common.entities.EntityGolemTH;
import com.kentington.thaumichorizons.common.lib.PocketPlaneData;
import com.kentington.thaumichorizons.common.lib.PocketPlaneThread;
import com.kentington.thaumichorizons.common.lib.VortexTeleporter;
import cpw.mods.fml.common.FMLCommonHandler;
@@ -60,10 +59,8 @@ public class TileVortex extends TileThaumcraft implements IWandable, IAspectCont
boolean ateDevices;
public boolean collapsing;
public boolean createdDimension;
public boolean generating;
public boolean cheat;
public ArrayList<ItemStack> items;
Thread ppThread;
private boolean soundStarted = false;
// true once the first S35 description packet has been received on the client
public boolean clientSynced = false;
@@ -74,10 +71,8 @@ public class TileVortex extends TileThaumcraft implements IWandable, IAspectCont
this.ateDevices = false;
this.collapsing = false;
this.createdDimension = false;
this.generating = false;
this.cheat = false;
this.items = new ArrayList<ItemStack>();
this.ppThread = null;
this.items = new ArrayList<>();
}
public void updateEntity() {
@@ -95,114 +90,91 @@ public class TileVortex extends TileThaumcraft implements IWandable, IAspectCont
soundStarted = true;
}
if (this.generating) {
this.worldObj.createExplosion(
null,
this.xCoord + this.worldObj.rand.nextFloat(),
this.yCoord + this.worldObj.rand.nextFloat(),
this.zCoord + this.worldObj.rand.nextFloat(),
1.0f,
false);
if (this.ppThread == null) {
this.createDimension(null);
return;
}
if (!this.ppThread.isAlive()) {
this.generating = false;
this.createdDimension = true;
this.markDirty();
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
}
} else {
if (this.collapsing) {
++this.count;
if (this.count > 25) {
if (this.createdDimension) {
WorldServer wsd = DimensionManager.getWorld(ThaumicHorizons.dimensionPocketId);
if (wsd != null) {
wsd.setBlockToAir(0, 129, this.dimensionID * 256);
}
if (this.collapsing) {
++this.count;
if (this.count > 25) {
if (this.createdDimension) {
WorldServer wsd = DimensionManager.getWorld(ThaumicHorizons.dimensionPocketId);
if (wsd != null) {
wsd.setBlockToAir(0, 129, this.dimensionID * 256);
}
this.worldObj.setBlockToAir(this.xCoord, this.yCoord, this.zCoord);
if (worldObj.isRemote)
Thaumcraft.proxy.burst(this.worldObj, this.xCoord, this.yCoord, this.zCoord, 4.0f);
BlockAiry.explodify(this.worldObj, this.xCoord, this.yCoord, this.zCoord);
}
return;
this.worldObj.setBlockToAir(this.xCoord, this.yCoord, this.zCoord);
if (worldObj.isRemote)
Thaumcraft.proxy.burst(this.worldObj, this.xCoord, this.yCoord, this.zCoord, 4.0f);
BlockAiry.explodify(this.worldObj, this.xCoord, this.yCoord, this.zCoord);
}
if (this.count < 50) {
++this.count;
} else {
if (!this.ateDevices) {
if (!this.cheat && this.worldObj.provider.dimensionId != ThaumicHorizons.dimensionPocketId) {
for (int dx = -2; dx <= 2; ++dx) {
for (int dy = -2; dy <= 2; ++dy) {
for (int dz = -2; dz <= 2; ++dz) {
if (dx != 0 || dy != 0 || dz != 0) {
this.worldObj
.setBlockToAir(this.xCoord + dx, this.yCoord + dy, this.zCoord + dz);
if (worldObj.isRemote) Thaumcraft.proxy.burst(
this.worldObj,
this.xCoord + dx,
this.yCoord + dy,
this.zCoord + dz,
4.0f);
}
return;
}
if (this.count < 50) {
++this.count;
} else {
if (!this.ateDevices) {
if (!this.cheat && this.worldObj.provider.dimensionId != ThaumicHorizons.dimensionPocketId) {
for (int dx = -2; dx <= 2; ++dx) {
for (int dy = -2; dy <= 2; ++dy) {
for (int dz = -2; dz <= 2; ++dz) {
if (dx != 0 || dy != 0 || dz != 0) {
this.worldObj.setBlockToAir(this.xCoord + dx, this.yCoord + dy, this.zCoord + dz);
if (worldObj.isRemote) Thaumcraft.proxy.burst(
this.worldObj,
this.xCoord + dx,
this.yCoord + dy,
this.zCoord + dz,
4.0f);
}
}
}
}
this.ateDevices = true;
}
if (this.beams < 6 && !this.cheat
&& this.worldObj.provider.dimensionId != ThaumicHorizons.dimensionPocketId) {
this.handleHungryNode();
} else if (!this.createdDimension && !this.generating) {
this.handlePocketPlaneStuff();
}
if (!this.cheat) {
this.count += Math.max(0, 6 - this.beams);
}
if (this.count > MAX_COUNT && !this.cheat
&& this.worldObj.provider.dimensionId != ThaumicHorizons.dimensionPocketId) {
this.collapsing = true;
this.count = 0;
}
if (this.createdDimension) {
final List ents = this.worldObj.getEntitiesWithinAABB(
EntityPlayerMP.class,
AxisAlignedBB.getBoundingBox(
this.xCoord,
this.yCoord,
this.zCoord,
this.xCoord + 1,
this.yCoord + 1,
this.zCoord + 1));
if (ents.size() > 0) {
for (final Object e : ents) {
final EntityPlayerMP player = (EntityPlayerMP) e;
if (player.ridingEntity == null && player.riddenByEntity == null) {
final MinecraftServer mServer = FMLCommonHandler.instance()
.getMinecraftServerInstance();
if (player.timeUntilPortal > 0) {
player.timeUntilPortal = 10;
} else if (player.dimension != ThaumicHorizons.dimensionPocketId) {
player.timeUntilPortal = 200;
player.mcServer.getConfigurationManager().transferPlayerToDimension(
player,
ThaumicHorizons.dimensionPocketId,
new VortexTeleporter(
mServer.worldServerForDimension(ThaumicHorizons.dimensionPocketId),
this.dimensionID));
} else {
player.timeUntilPortal = 200;
player.mcServer.getConfigurationManager().transferPlayerToDimension(
player,
this.returnID,
new VortexTeleporter(
mServer.worldServerForDimension(this.returnID),
this.dimensionID));
}
this.ateDevices = true;
}
if (this.beams < 6 && !this.cheat
&& this.worldObj.provider.dimensionId != ThaumicHorizons.dimensionPocketId) {
this.handleHungryNode();
} else if (!this.createdDimension) {
this.handlePocketPlaneStuff();
}
if (!this.cheat) {
this.count += Math.max(0, 6 - this.beams);
}
if (this.count > MAX_COUNT && !this.cheat
&& this.worldObj.provider.dimensionId != ThaumicHorizons.dimensionPocketId) {
this.collapsing = true;
this.count = 0;
}
if (this.createdDimension) {
final List<EntityPlayerMP> ents = this.worldObj.getEntitiesWithinAABB(
EntityPlayerMP.class,
AxisAlignedBB.getBoundingBox(
this.xCoord,
this.yCoord,
this.zCoord,
this.xCoord + 1,
this.yCoord + 1,
this.zCoord + 1));
if (!ents.isEmpty()) {
for (final EntityPlayerMP player : ents) {
if (player.ridingEntity == null && player.riddenByEntity == null) {
final MinecraftServer mServer = FMLCommonHandler.instance().getMinecraftServerInstance();
if (player.timeUntilPortal > 0) {
player.timeUntilPortal = 10;
} else if (player.dimension != ThaumicHorizons.dimensionPocketId) {
player.timeUntilPortal = 200;
player.mcServer.getConfigurationManager().transferPlayerToDimension(
player,
ThaumicHorizons.dimensionPocketId,
new VortexTeleporter(
mServer.worldServerForDimension(ThaumicHorizons.dimensionPocketId),
this.dimensionID));
} else {
player.timeUntilPortal = 200;
player.mcServer.getConfigurationManager().transferPlayerToDimension(
player,
this.returnID,
new VortexTeleporter(
mServer.worldServerForDimension(this.returnID),
this.dimensionID));
}
}
}
@@ -212,7 +184,7 @@ public class TileVortex extends TileThaumcraft implements IWandable, IAspectCont
}
void handlePocketPlaneStuff() {
final List ents = this.worldObj.getEntitiesWithinAABB(
final List<Entity> ents = this.worldObj.getEntitiesWithinAABB(
Entity.class,
AxisAlignedBB.getBoundingBox(
this.xCoord,
@@ -221,12 +193,18 @@ public class TileVortex extends TileThaumcraft implements IWandable, IAspectCont
this.xCoord + 1,
this.yCoord + 1,
this.zCoord + 1).expand(1.0, 1.0, 1.0));
if (ents != null && ents.size() > 0) {
for (final Object ent : ents) {
final Entity eo = (Entity) ent;
if (ents != null && !ents.isEmpty()) {
for (final Entity eo : ents) {
if (eo instanceof final EntityItem item) {
if (ThaumicHorizons.enablePocket && item.getEntityItem().getItem() == ConfigItems.itemEldritchObject
&& item.getEntityItem().getItemDamage() == 3) {
this.worldObj.createExplosion(
null,
this.xCoord + this.worldObj.rand.nextFloat(),
this.yCoord + this.worldObj.rand.nextFloat(),
this.zCoord + this.worldObj.rand.nextFloat(),
1.0f,
false);
this.createDimension(item);
item.setDead();
} else {
@@ -322,19 +300,19 @@ public class TileVortex extends TileThaumcraft implements IWandable, IAspectCont
if (DimensionManager.getWorld(ThaumicHorizons.dimensionPocketId) == null) {
DimensionManager.initDimension(ThaumicHorizons.dimensionPocketId);
}
this.generating = true;
if (!this.worldObj.isRemote) {
this.returnID = this.worldObj.provider.dimensionId;
(this.ppThread = new Thread(
new PocketPlaneThread(
data,
this.aspects,
(World) MinecraftServer.getServer()
.worldServerForDimension(ThaumicHorizons.dimensionPocketId),
this.xCoord,
this.yCoord,
this.zCoord,
this.returnID))).start();
World world = server.worldServerForDimension(ThaumicHorizons.dimensionPocketId);
PocketPlaneData.generatePocketPlane(
this.aspects,
data,
world,
this.xCoord,
this.yCoord,
this.zCoord,
this.returnID);
this.createdDimension = true;
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
}
this.markDirty();
}
@@ -451,7 +429,6 @@ public class TileVortex extends TileThaumcraft implements IWandable, IAspectCont
nbttagcompound.setBoolean("ateDevices", this.ateDevices);
nbttagcompound.setBoolean("collapsing", this.collapsing);
nbttagcompound.setBoolean("createdDimension", this.createdDimension);
nbttagcompound.setBoolean("isGenerating", this.generating);
nbttagcompound.setBoolean("cheat", this.cheat);
final NBTTagList tlist = new NBTTagList();
nbttagcompound.setTag("aspects", tlist);
@@ -482,7 +459,6 @@ public class TileVortex extends TileThaumcraft implements IWandable, IAspectCont
this.ateDevices = nbttagcompound.getBoolean("ateDevices");
this.collapsing = nbttagcompound.getBoolean("collapsing");
this.createdDimension = nbttagcompound.getBoolean("createdDimension");
this.generating = nbttagcompound.getBoolean("isGenerating");
this.cheat = nbttagcompound.getBoolean("cheat");
final AspectList al = new AspectList();
final NBTTagList tlist = nbttagcompound.getTagList("aspects", 10);
@@ -504,7 +480,7 @@ public class TileVortex extends TileThaumcraft implements IWandable, IAspectCont
@Override
public int onWandRightClick(final World world, final ItemStack wandstack, final EntityPlayer player, final int x,
final int y, final int z, final int side, final int md) {
if (!this.worldObj.isRemote && this.items.size() > 0) {
if (!this.worldObj.isRemote && !this.items.isEmpty()) {
final ItemStack item = this.items.get(0);
final EntityItem key = new EntityItem(this.worldObj);
key.setEntityItemStack(item);
@@ -1,11 +1,5 @@
itemGroup.thaumichorizons=Thaumic Horizons
thaumichorizons.keybind_group=Thaumic Horizons
thaumichorizons.key.arcane_lens=Change Arcane Lens
thaumichorizons.key.morphic_fingers=Activate Morphic Fingers
thaumichorizons.key.spider_climb=Toggle Spider Climb
thaumichorizons.key.chameleon=Toggle Chameleon Skin
thaumichorizons.noJar=You need an empty warded jar to capture a creature!
thaumichorizons.setBeacon=Soul beacon set!
thaumichorizons.startSitting=is waiting.
@@ -61,11 +55,6 @@ selfInfusions.warpedTumor=Self: Warped Tumor
selfInfusions.spiderClimb=Self: Spider Climb
selfInfusions.chameleonSkin=Self: Chameleon Skin
selfInfusions.spiderClimb.enable=Spider Climb enabled.
selfInfusions.spiderClimb.disable=Spider Climb disabled.
selfInfusions.chameleonSkin.enable=Chameleon Skin enabled.
selfInfusions.chameleonSkin.disable=Chameleon Skin disabled.
###ENTITIES###
entity.ThaumicHorizons.PrimedAlchemite.name=Primed Alchemite