Added partial Galacticraft compatibility for 1.12.2
This commit is contained in:
parent
266b863417
commit
46f8ce5aba
4 changed files with 421 additions and 9 deletions
376
src/main/java/cr0s/warpdrive/compat/CompatGalacticraft.java
Normal file
376
src/main/java/cr0s/warpdrive/compat/CompatGalacticraft.java
Normal file
|
@ -0,0 +1,376 @@
|
|||
package cr0s.warpdrive.compat;
|
||||
|
||||
import cr0s.warpdrive.WarpDrive;
|
||||
import cr0s.warpdrive.api.IBlockTransformer;
|
||||
import cr0s.warpdrive.api.ITransformation;
|
||||
import cr0s.warpdrive.api.WarpDriveText;
|
||||
import cr0s.warpdrive.config.WarpDriveConfig;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.properties.IProperty;
|
||||
import net.minecraft.block.properties.PropertyEnum;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.nbt.NBTBase;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class CompatGalacticraft implements IBlockTransformer {
|
||||
|
||||
private static Class<?> classBlockAdvanced;
|
||||
private static Class<?> classBlockConcealedDetector;
|
||||
private static Class<?> classBlockParaChest;
|
||||
private static Class<?> classBlockTier1TreasureChest;
|
||||
private static Class<?> classBlockTorchBase;
|
||||
|
||||
public static void register() {
|
||||
try {
|
||||
classBlockAdvanced = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockAdvanced");
|
||||
classBlockConcealedDetector = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockConcealedDetector");
|
||||
classBlockParaChest = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockParaChest");
|
||||
classBlockTier1TreasureChest = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockTier1TreasureChest");
|
||||
classBlockTorchBase = Class.forName("micdoodle8.mods.galacticraft.core.blocks.BlockTorchBase");
|
||||
|
||||
WarpDriveConfig.registerBlockTransformer("Galacticraft", new CompatGalacticraft());
|
||||
} catch(final ClassNotFoundException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isApplicable(final Block block, final int metadata, final TileEntity tileEntity) {
|
||||
return classBlockAdvanced.isInstance(block)
|
||||
|| classBlockConcealedDetector.isInstance(block)
|
||||
|| classBlockParaChest.isInstance(block)
|
||||
|| classBlockTier1TreasureChest.isInstance(block)
|
||||
|| classBlockTorchBase.isInstance(block);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isJumpReady(final Block block, final int metadata, final TileEntity tileEntity, final WarpDriveText reason) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTBase saveExternals(final World world, final int x, final int y, final int z,
|
||||
final Block block, final int blockMeta, final TileEntity tileEntity) {
|
||||
// nothing to do
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeExternals(final World world, final int x, final int y, final int z,
|
||||
final Block block, final int blockMeta, final TileEntity tileEntity) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
/*
|
||||
As of Galacticraft 1.12.2-4.0.1.184
|
||||
|
||||
- = detected by instanceof micdoodle8.mods.galacticraft.core.blocks.BlockAdvanced (derived in BlockAdvancedTile, BlockTransmitter, BlockTileGC)
|
||||
+ = not detected but no impact or already handled by vanilla compatibility
|
||||
# = needs explicit detection
|
||||
micdoodle8.mods.galacticraft.core.blocks.BlockParaChest
|
||||
micdoodle8.mods.galacticraft.core.blocks.BlockTier1TreasureChest
|
||||
micdoodle8.mods.galacticraft.core.blocks.BlockTorchBase
|
||||
D = handled through dictionary
|
||||
|
||||
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockAirLockFrame gc air lock frame (meta 0) / gc air lock controller (meta 1)
|
||||
frame = no impact
|
||||
controller = no impact
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockAirLockWall air lock seal extends BlockBreakable
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockAluminumWire gc aluminum wire
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockBasic tin decoration, ores, etc.
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockBasicMoon
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockCheese
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockEmergencyBox
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockEnclosed gc aluminum wire extends Block
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockFallenMeteor ? extends Block
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockFluidPipe gc oxygen pipe
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockGrating n/a extends Block
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockLandingPad
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockLandingPadFull
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockNasaWorkbench gc nasa workbench extends BlockContainer
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockOxygenDetector ? extends BlockContainer
|
||||
+ micdoodle8.mods.galacticraft.core.blocks.BlockSpaceGlass n/a (glass windows) extends Block
|
||||
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockShortRangeTelepad gc short range telepad
|
||||
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockWalkway
|
||||
+ micdoodle8.mods.galacticraft.planets.mars.blocks.BlockBasicMars n/a extends Block
|
||||
+ micdoodle8.mods.galacticraft.planets.mars.blocks.BlockConcealedRedstone n/a extends Block
|
||||
+ micdoodle8.mods.galacticraft.planets.mars.blocks.BlockConcealedRepeater n/a extends BlockRedstoneRepeater
|
||||
+ micdoodle8.mods.galacticraft.planets.mars.blocks.BlockFluidTank gc fluid tank extends Block
|
||||
- micdoodle8.mods.galacticraft.planets.venus.blocks.BlockCrashedProbe gc crashed probe
|
||||
no impact
|
||||
|
||||
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockCargoLoader gc cargo loader / gc cargo unloader
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockDish gc radio telescope
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockFuelLoader gc fuel loader
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockMachine coal generation / ingot compressor
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockMachine2 gc electric ingot compressor / gc circuit fabricator / gc oxygen storage module / gc deconstructor
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockMachine3 gc painter
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockMachineTiered gc energy storage module / gc electric furnace / gc energy storage module / gc electric furnace
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockOxygenCollector gc air collector
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockOxygenCompressor gc air compressor / gc oxygen decompressor
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockOxygenDistributor gc air distributor
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockOxygenSealer gc air sealer
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockRefinery gc refinery
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockSolar gc solar panel
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockSpinThruster gc space station thruster
|
||||
- micdoodle8.mods.galacticraft.planets.mars.blocks.BlockMachineMarsT2 gc gas liquefier / gc methane synthesizer / gc water electrolyzer
|
||||
- micdoodle8.mods.galacticraft.planets.venus.blocks.BlockGeothermalGenerator gc geothermal generator
|
||||
metadata 0 1 2 3 / 4 5 6 7 / 8 9 10 11 / 12 13 14 15
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockCrafting gc magnetic crafting table
|
||||
# micdoodle8.mods.galacticraft.core.blocks.BlockParaChest gc parachest tile extends BlockContainer
|
||||
# micdoodle8.mods.galacticraft.core.blocks.BlockTier1TreasureChest ? (including Moon/Mars/Venus) extends BlockContainer
|
||||
metadata 0 / 1 / 2 5 3 4
|
||||
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockBeamReceiver gc beam receiver
|
||||
FacingSide int 0 / 1 / 2 5 3 4
|
||||
metadata 0 / 1 / 2 5 3 4
|
||||
- micdoodle8.mods.galacticraft.planets.mars.BlockScreen gc view screen
|
||||
metadata 0 / 1 / 2 5 3 4
|
||||
is it fully implemented yet?
|
||||
- micdoodle8.mods.galacticraft.core.BlockPanelLighting gc panel lighting
|
||||
metadata 0 / 1 / 2 / 3 / 4
|
||||
meta int 0 / 1 / 2 5 3 4 if metadata = 0 or 1
|
||||
meta int 0 8 / 1 9 / 2 5 3 4 / 10 13 11 12 if metadata = 2 or 3
|
||||
meta int 0 8 16 24 / 1 25 17 9 / 2 21 19 4 / 3 20 18 5 / 10 29 27 12 / 11 28 26 13 if metadata = 4
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockPlatform (lift) gc platform
|
||||
metadata 0 / 1 3 4 2
|
||||
oc int 0 / 1 3 4 2 (same as metadata?)
|
||||
# micdoodle8.mods.galacticraft.core.blocks.BlockTorchBase n/a (including unlit and glowstone torches) extends Block
|
||||
metadata 1 3 2 4 / 5
|
||||
|
||||
# micdoodle8.mods.galacticraft.core.blocks.BlockConcealedDetector gc player detector (player detector, creative only) extends Block
|
||||
metadata 0 1 2 3 / 4 5 6 7 / 8 9 10 11 / 12 13 14 15 (not EnumFacing)
|
||||
- micdoodle8.mods.galacticraft.planets.mars.blocks.BlockMachineMars gc cryogenic chamber / gc planet terraformer / gc launch controller
|
||||
mainBlockPosition.x/y/z int absolute coordinates (optional, see cryogenic chamber)
|
||||
metadata 0 1 2 3 / 4 5 6 7 / 8 9 10 11 / 12 13 14 15
|
||||
- micdoodle8.mods.galacticraft.core.blocks.BlockMulti gc dummy block
|
||||
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockTelepadFake gc fake short range telepad
|
||||
mainBlockPosition.x/y/z int absolute coordinates
|
||||
- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockBeamReflector gc beam reflector
|
||||
HasTarget boolean 1 when targeting?
|
||||
TargetX/Y/Z int absolute coordinates
|
||||
|
||||
D- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockMinerBase gc astro miner base builder
|
||||
D- micdoodle8.mods.galacticraft.planets.asteroids.blocks.BlockMinerBaseFull gc astro miner base
|
||||
facing int 0 1 2 3 ? (only relevant on master tile?)
|
||||
masterpos.x/y/z absolute coordinates
|
||||
TargetPoints list TabCompound
|
||||
x/y/z absolute coordinates
|
||||
=> anchor
|
||||
D micdoodle8.mods.galacticraft.planets.mars.BlockBossSpawner minecraft:gc dungeon boss spawner (including Moon/Mars/Venus) extends Block
|
||||
chestX/Y/Z int absolute coordinates
|
||||
roomCoordsX/Y/Z int absolute coordinates
|
||||
roomSizeX/Y/Z int
|
||||
=> anchor
|
||||
D- micdoodle8.mods.galacticraft.planets.mars.BlockBrightLamp gc arc lamp
|
||||
metadata 0 / 1 / 2 5 3 4
|
||||
Facing int if 0 or 1, 0 3 1 2; otherwise, no change
|
||||
AirBlocks list TagCompound
|
||||
x/y/z absolute coordinates
|
||||
=> anchor
|
||||
D micdoodle8.mods.galacticraft.planets.mars.BlockBreathableAir n/a extends BlockAir
|
||||
=> ignored
|
||||
D micdoodle8.mods.galacticraft.planets.mars.BlockSpaceStationBase gc space station extends BlockContainer
|
||||
mainBlockPosition.x/y/z
|
||||
=> anchor
|
||||
D- micdoodle8.mods.galacticraft.planets.mars.BlockTelemetry gc telemetry unit
|
||||
is it fully implemented yet?
|
||||
=> anchor
|
||||
*/
|
||||
|
||||
// ----------------------------------------- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
|
||||
private static final int[] rotFacing = { 0, 1, 5, 4, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
|
||||
private static final int[] rotDetector = { 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12 };
|
||||
private static final int[] rotLighting23 = { 0, 9, 5, 4, 2, 3, 6, 7, 0, 1, 13, 12, 10, 11, 14, 15 };
|
||||
private static final int[] rotLighting4 = { 8, 25, 21, 20, 2, 3, 6, 7, 16, 1, 29, 28, 10, 11, 14, 15,
|
||||
24, 9, 5, 4, 18, 19, 22, 23, 0, 17, 13, 12, 26, 27, 30, 31 };
|
||||
|
||||
@SuppressWarnings({"unchecked", "deprecation"})
|
||||
@Override
|
||||
public int rotate(final Block block, final int metadata, final NBTTagCompound nbtTileEntity, final ITransformation transformation) {
|
||||
final byte rotationSteps = transformation.getRotationSteps();
|
||||
|
||||
// multiblock
|
||||
if ( nbtTileEntity != null
|
||||
&& nbtTileEntity.hasKey("mainBlockPosition") ) {
|
||||
final NBTTagCompound tagCompoundMainBlockPosition = nbtTileEntity.getCompoundTag("mainBlockPosition");
|
||||
if ( tagCompoundMainBlockPosition.hasKey("x")
|
||||
&& tagCompoundMainBlockPosition.hasKey("y")
|
||||
&& tagCompoundMainBlockPosition.hasKey("z") ) {
|
||||
final int x = nbtTileEntity.getInteger("x");
|
||||
final int y = nbtTileEntity.getInteger("y");
|
||||
final int z = nbtTileEntity.getInteger("z");
|
||||
final BlockPos blockPosMain = transformation.apply(x, y, z);
|
||||
tagCompoundMainBlockPosition.setInteger("x", blockPosMain.getX());
|
||||
tagCompoundMainBlockPosition.setInteger("y", blockPosMain.getY());
|
||||
tagCompoundMainBlockPosition.setInteger("z", blockPosMain.getZ());
|
||||
}
|
||||
}
|
||||
|
||||
// target for Beam reflector
|
||||
if ( nbtTileEntity != null
|
||||
&& nbtTileEntity.getBoolean("HasTarget") ) {
|
||||
if ( nbtTileEntity.hasKey("TargetX")
|
||||
&& nbtTileEntity.hasKey("TargetY")
|
||||
&& nbtTileEntity.hasKey("TargetZ") ) {
|
||||
final int x = nbtTileEntity.getInteger("TargetX");
|
||||
final int y = nbtTileEntity.getInteger("TargetY");
|
||||
final int z = nbtTileEntity.getInteger("TargetZ");
|
||||
if (transformation.isInside(x, y, z)) {
|
||||
final BlockPos blockPosTarget = transformation.apply(x, y, z);
|
||||
nbtTileEntity.setInteger("TargetX", blockPosTarget.getX());
|
||||
nbtTileEntity.setInteger("TargetY", blockPosTarget.getY());
|
||||
nbtTileEntity.setInteger("TargetZ", blockPosTarget.getZ());
|
||||
} else {
|
||||
nbtTileEntity.setBoolean("HasTarget", false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// beam receiver
|
||||
if ( nbtTileEntity != null
|
||||
&& nbtTileEntity.getString("id").contains("beam receiver")
|
||||
&& nbtTileEntity.hasKey("FacingSide") ) {
|
||||
final int facingSide = nbtTileEntity.getInteger("FacingSide");
|
||||
switch (rotationSteps) {
|
||||
case 1:
|
||||
nbtTileEntity.setInteger("FacingSide", rotFacing[facingSide]);
|
||||
break;
|
||||
case 2:
|
||||
nbtTileEntity.setInteger("FacingSide", rotFacing[rotFacing[facingSide]]);
|
||||
break;
|
||||
case 3:
|
||||
nbtTileEntity.setInteger("FacingSide", rotFacing[rotFacing[rotFacing[facingSide]]]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// panel lighting
|
||||
if ( nbtTileEntity != null
|
||||
&& nbtTileEntity.getString("id").contains("panel lighting")
|
||||
&& nbtTileEntity.hasKey("meta") ) {
|
||||
final int meta = nbtTileEntity.getInteger("meta");
|
||||
|
||||
if ( metadata == 0
|
||||
|| metadata == 1 ) {
|
||||
switch (rotationSteps) {
|
||||
case 1:
|
||||
nbtTileEntity.setInteger("meta", rotFacing[meta]);
|
||||
break;
|
||||
case 2:
|
||||
nbtTileEntity.setInteger("meta", rotFacing[rotFacing[meta]]);
|
||||
break;
|
||||
case 3:
|
||||
nbtTileEntity.setInteger("meta", rotFacing[rotFacing[rotFacing[meta]]]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} else if ( metadata == 2
|
||||
|| metadata == 3 ) {
|
||||
switch (rotationSteps) {
|
||||
case 1:
|
||||
nbtTileEntity.setInteger("meta", rotLighting23[meta]);
|
||||
break;
|
||||
case 2:
|
||||
nbtTileEntity.setInteger("meta", rotLighting23[rotLighting23[meta]]);
|
||||
break;
|
||||
case 3:
|
||||
nbtTileEntity.setInteger("meta", rotLighting23[rotLighting23[rotLighting23[meta]]]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (metadata == 4) {
|
||||
switch (rotationSteps) {
|
||||
case 1:
|
||||
nbtTileEntity.setInteger("meta", rotLighting4[meta]);
|
||||
break;
|
||||
case 2:
|
||||
nbtTileEntity.setInteger("meta", rotLighting4[rotLighting4[meta]]);
|
||||
break;
|
||||
case 3:
|
||||
nbtTileEntity.setInteger("meta", rotLighting4[rotLighting4[rotLighting4[meta]]]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} else {
|
||||
WarpDrive.logger.error(String.format("Unsupported Galacticraft lighting panel %s:%d with nbt %s",
|
||||
block, metadata, nbtTileEntity));
|
||||
}
|
||||
}
|
||||
|
||||
// specific rotation for Concealed detector blocks
|
||||
if (classBlockConcealedDetector.isInstance(block)) {
|
||||
switch (rotationSteps) {
|
||||
case 1:
|
||||
return rotDetector[metadata];
|
||||
case 2:
|
||||
return rotDetector[rotDetector[metadata]];
|
||||
case 3:
|
||||
return rotDetector[rotDetector[rotDetector[metadata]]];
|
||||
default:
|
||||
return metadata;
|
||||
}
|
||||
}
|
||||
|
||||
// generic rotation based on EnumFacing properties
|
||||
final IBlockState blockState = block.getStateFromMeta(metadata);
|
||||
PropertyEnum<EnumFacing> propertyFacing = null;
|
||||
for (final IProperty<?> propertyKey : blockState.getPropertyKeys()) {
|
||||
if ( propertyKey instanceof PropertyEnum<?>
|
||||
&& propertyKey.getValueClass() == EnumFacing.class ) {
|
||||
propertyFacing = (PropertyEnum<EnumFacing>) propertyKey;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (propertyFacing != null) {
|
||||
final EnumFacing facingOld = blockState.getValue(propertyFacing);
|
||||
// skip vertical facings
|
||||
if ( facingOld == EnumFacing.DOWN
|
||||
|| facingOld == EnumFacing.UP ) {
|
||||
return metadata;
|
||||
}
|
||||
|
||||
// turn horizontal facings
|
||||
final EnumFacing facingNew;
|
||||
switch (rotationSteps) {
|
||||
case 1:
|
||||
facingNew = facingOld.rotateY();
|
||||
break;
|
||||
case 2:
|
||||
facingNew = facingOld.rotateY().rotateY();
|
||||
break;
|
||||
case 3:
|
||||
facingNew = facingOld.rotateY().rotateY().rotateY();
|
||||
break;
|
||||
default:
|
||||
facingNew = facingOld;
|
||||
break;
|
||||
}
|
||||
final IBlockState blockStateNew = blockState.withProperty(propertyFacing, facingNew);
|
||||
return block.getMetaFromState(blockStateNew);
|
||||
}
|
||||
|
||||
return metadata;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restoreExternals(final World world, final BlockPos blockPos,
|
||||
final IBlockState blockState, final TileEntity tileEntity,
|
||||
final ITransformation transformation, final NBTBase nbtBase) {
|
||||
// nothing to do
|
||||
}
|
||||
}
|
|
@ -118,6 +118,33 @@ public class Dictionary {
|
|||
config.get("block_tags", "minecraft:structure_block" , "Anchor StopMining").getString();
|
||||
config.get("block_tags", "computercraft:command_computer" , "Anchor SkipMining").getString();
|
||||
// @TODO MC1.12 config.get("block_tags", "ic2:blockPersonal" , "Anchor SkipMining").getString(); // IC2 personal chest, need property filtering
|
||||
config.get("block_tags", "galacticraftcore:arclamp" , "Anchor").getString(); // includes hard links to its fake air lights
|
||||
config.get("block_tags", "galacticraftcore:boss_spawner" , "Anchor StopMining").getString(); // includes hard links to the boss room
|
||||
config.get("block_tags", "galacticraftcore:grating" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating1" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating2" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating3" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating4" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating5" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating6" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating7" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating8" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating9" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating10" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating11" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating12" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating13" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:grating14" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftcore:space_station_base" , "Anchor StopMining").getString(); // unbreakable
|
||||
config.get("block_tags", "galacticraftcore:telemetry" , "Anchor").getString(); // can't make it work, is it fully implemented yet?
|
||||
config.get("block_tags", "galacticraftcore:view_screen" , "Anchor StopMining").getString(); // unable to break block without spamming console
|
||||
config.get("block_tags", "galacticraftplanets:beam_receiver" , "Anchor StopMining").getString(); // spamming console during jump
|
||||
config.get("block_tags", "galacticraftplanets:boss_spawner_mars" , "Anchor StopMining").getString(); // includes hard links to the boss room
|
||||
config.get("block_tags", "galacticraftplanets:boss_spawner_venus" , "Anchor StopMining").getString(); // includes hard links to the boss room
|
||||
config.get("block_tags", "galacticraftplanets:miner_base" , "Anchor StopMining").getString(); // too complex, no reason to support
|
||||
config.get("block_tags", "galacticraftplanets:miner_base_full" , "Anchor StopMining").getString(); // too complex, no reason to support
|
||||
config.get("block_tags", "galacticraftplanets:telepad_fake" , "PlaceLater").getString(); // glitch after movement (no more collision?)
|
||||
config.get("block_tags", "galacticraftplanets:telepad_short" , "PlaceNormal").getString(); // glitch after movement (no more collision?)
|
||||
// @TODO MC1.12 config.get("block_tags", "malisisdoors:null" , "Anchor").getString(); // improper registration of block causing NPE
|
||||
config.get("block_tags", "malisisdoors:rustyhatch" , "Anchor").getString();
|
||||
config.get("block_tags", "rangedpumps:pump" , "Anchor").getString(); // need to reset its search area after each jump
|
||||
|
@ -140,6 +167,11 @@ public class Dictionary {
|
|||
config.get("block_tags", "warpdrive:force_field.advanced" , "PlaceLatest StopMining NoMass").getString();
|
||||
config.get("block_tags", "warpdrive:force_field.superior" , "PlaceLatest StopMining NoMass").getString();
|
||||
config.get("block_tags", "embers:caminite_lever" , "PlaceLatest").getString();
|
||||
config.get("block_tags", "galacticraftcore:glowstone_torch" , "PlaceLatest").getString();
|
||||
config.get("block_tags", "galacticraftcore:unlit_torch" , "PlaceLatest").getString();
|
||||
config.get("block_tags", "galacticraftcore:unlit_torch_lit" , "PlaceLatest").getString();
|
||||
config.get("block_tags", "galacticraftplanets:telepad_fake" , "PlaceLatest").getString();
|
||||
config.get("block_tags", "galacticraftplanets:web_torch" , "PlaceLatest").getString();
|
||||
config.get("block_tags", "ic2:foam" , "PlaceEarliest StopMining").getString();
|
||||
// @TODO MC1.12 config.get("block_tags", "ic2:blockAlloy" , "PlaceEarliest StopMining").getString();
|
||||
config.get("block_tags", "ic2:glass" , "PlaceEarliest StopMining").getString();
|
||||
|
@ -183,6 +215,9 @@ public class Dictionary {
|
|||
config.get("block_tags", "warpdrive:air_source" , "NoMass Expandable PlaceLatest").getString();
|
||||
config.get("block_tags", "buildcraftcore:marker_path" , "NoMass LeftBehind Expandable").getString(); // depends on an unsupported separate cache
|
||||
config.get("block_tags", "buildcraftcore:marker_volume" , "NoMass LeftBehind Expandable").getString(); // depends on an unsupported separate cache
|
||||
config.get("block_tags", "galacticraftcore:bright_air" , "NoMass Expandable").getString();
|
||||
config.get("block_tags", "galacticraftcore:breatheable_air" , "NoMass Expandable").getString();
|
||||
config.get("block_tags", "galacticraftcore:bright_breathable_air" , "NoMass Expandable").getString();
|
||||
|
||||
// mining a mineshaft...
|
||||
config.get("block_tags", "minecraft:web" , "Mining").getString();
|
||||
|
@ -223,8 +258,8 @@ public class Dictionary {
|
|||
+ "Most entities are already supported automatically. Only modify this section when something doesn't work!\n" + "\n"
|
||||
+ "Tags shall be separated by at least one space, comma or tabulation.\n" + "Invalid tags will be ignored silently. Tags and block names are case sensitive.\n"
|
||||
+ "In case of conflicts, the latest tag overwrite the previous ones.\n" + "- Anchor: ship can't move with this entity aboard (default: none).\n"
|
||||
+ "- NoMass: this entity doesn't count when calculating ship volume/mass (default: Galacticraft air bubble).\n"
|
||||
+ "- LeftBehind: this entity won't move with your ship nor transporter (default: Galacticraft air bubble).\n"
|
||||
+ "- NoMass: this entity doesn't count when calculating ship volume/mass (default: boats, frames, carts).\n"
|
||||
+ "- LeftBehind: this entity won't move with your ship nor transporter (default: particle effects).\n"
|
||||
// + "- NoTransport: this entity is ignored by the transporter (default: -none-).\n"
|
||||
+ "- NonLivingTarget: this non-living entity can be targeted/removed by weapons (default: ItemFrame, Painting).\n"
|
||||
+ "- LivingWithoutAir: this living entity doesn't need air to live (default: vanilla zombies and skeletons).");
|
||||
|
@ -232,7 +267,6 @@ public class Dictionary {
|
|||
final ConfigCategory categoryEntityTags = config.getCategory("entity_tags");
|
||||
String[] taggedEntitiesName = categoryEntityTags.getValues().keySet().toArray(new String[0]);
|
||||
if (taggedEntitiesName.length == 0) {
|
||||
config.get("entity_tags", "GalacticraftCore.OxygenBubble" , "NoMass LeftBehind").getString(); // Still needs fixing
|
||||
config.get("entity_tags", "minecraft:item_frame" , "NoMass NonLivingTarget").getString();
|
||||
config.get("entity_tags", "minecraft:painting" , "NoMass NonLivingTarget").getString();
|
||||
config.get("entity_tags", "minecraft:leash_knot" , "NoMass NonLivingTarget").getString();
|
||||
|
|
|
@ -21,6 +21,7 @@ import cr0s.warpdrive.compat.CompatEnvironmentalTech;
|
|||
import cr0s.warpdrive.compat.CompatEvilCraft;
|
||||
import cr0s.warpdrive.compat.CompatExtraUtilities2;
|
||||
import cr0s.warpdrive.compat.CompatForgeMultipart;
|
||||
import cr0s.warpdrive.compat.CompatGalacticraft;
|
||||
import cr0s.warpdrive.compat.CompatGregTech;
|
||||
import cr0s.warpdrive.compat.CompatImmersiveEngineering;
|
||||
import cr0s.warpdrive.compat.CompatIndustrialCraft2;
|
||||
|
@ -1323,6 +1324,11 @@ public class WarpDriveConfig {
|
|||
CompatEvilCraft.register();
|
||||
}
|
||||
|
||||
final boolean isGalacticraftCoreLoaded = Loader.isModLoaded("galacticraftcore");
|
||||
if (isGalacticraftCoreLoaded) {
|
||||
CompatGalacticraft.register();
|
||||
}
|
||||
|
||||
// final boolean isGregTechLoaded = Loader.isModLoaded("gregtech");
|
||||
if (isGregTechLoaded) {
|
||||
CompatGregTech.register();
|
||||
|
|
|
@ -320,11 +320,6 @@ public class JumpBlock {
|
|||
}
|
||||
}
|
||||
|
||||
if (nbtToDeploy.hasKey("hasValidBubble")) {// Galacticraft 3.0.11.333
|
||||
nbtToDeploy.setBoolean("hasValidBubble", false);
|
||||
// old bubble will die naturally due to missing tile entity, new one will be spawned
|
||||
}
|
||||
|
||||
TileEntity newTileEntity = null;
|
||||
boolean isForgeMultipart = false;
|
||||
if ( WarpDriveConfig.isForgeMultipartLoaded
|
||||
|
@ -406,7 +401,8 @@ public class JumpBlock {
|
|||
}
|
||||
// not needed: if ic2.core.block.machine.tileentity.TileEntityMatter then updated "state"
|
||||
}
|
||||
} else if (!superClassName.startsWith("mekanism.")) {// IC2 extensions without network optimization (transferring all fields)
|
||||
} else if ( !superClassName.startsWith("mekanism.")
|
||||
&& !superClassName.startsWith("micdoodle8.") ) {// IC2 extensions without network optimization (transferring all fields)
|
||||
try {
|
||||
final Method getNetworkedFields = teClass.getMethod("getNetworkedFields");
|
||||
@SuppressWarnings("unchecked")
|
||||
|
|
Loading…
Add table
Reference in a new issue