mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
copy tool support and working directional offsets
This commit is contained in:
parent
3db1dbd277
commit
1a9fc72a93
@ -33,6 +33,7 @@ import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -78,9 +79,16 @@ public class BlockWandSpawner extends BlockContainer implements ILookOverlay, IT
|
||||
if (i == 2) world.setBlockMetadataWithNotify(x, y, z, 0, 2);
|
||||
if (i == 3) world.setBlockMetadataWithNotify(x, y, z, 1, 2);
|
||||
|
||||
ForgeDirection dir = ForgeDirection.UNKNOWN;
|
||||
switch(i){
|
||||
case 0: dir = ForgeDirection.SOUTH;break;
|
||||
case 1: dir = ForgeDirection.WEST; break;
|
||||
case 2: dir = ForgeDirection.NORTH;break;
|
||||
case 3: dir = ForgeDirection.EAST; break;
|
||||
}
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te instanceof TileEntityWandSpawner)
|
||||
((TileEntityWandSpawner)te).placedRotation = i;
|
||||
((TileEntityWandSpawner)te).placedRotation = dir.ordinal();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -193,6 +201,7 @@ public class BlockWandSpawner extends BlockContainer implements ILookOverlay, IT
|
||||
DungeonSpawner.TileEntityDungeonSpawner spawner = (DungeonSpawner.TileEntityDungeonSpawner) te;
|
||||
spawner.actionID = actionID;
|
||||
spawner.conditionID = conditionID;
|
||||
spawner.direction = ForgeDirection.getOrientation(placedRotation);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class DungeonSpawner extends BlockContainer {
|
||||
|
||||
@ -44,6 +45,7 @@ public class DungeonSpawner extends BlockContainer {
|
||||
public Function<TileEntityDungeonSpawner, Boolean> condition;
|
||||
public Consumer<TileEntityDungeonSpawner> action;
|
||||
|
||||
public ForgeDirection direction = ForgeDirection.UNKNOWN;
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
@ -74,6 +76,7 @@ public class DungeonSpawner extends BlockContainer {
|
||||
nbt.setInteger("phase", phase);
|
||||
nbt.setString("conditionID", conditionID);
|
||||
nbt.setString("actionID", actionID);
|
||||
nbt.setInteger("direction", direction.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -81,6 +84,7 @@ public class DungeonSpawner extends BlockContainer {
|
||||
super.readFromNBT(nbt);
|
||||
this.phase = nbt.getInteger("phase");
|
||||
this.conditionID = nbt.getString("conditionID");
|
||||
this.direction = ForgeDirection.getOrientation(nbt.getInteger("direction"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import com.hbm.blocks.generic.BlockPedestal;
|
||||
import com.hbm.blocks.generic.BlockSkeletonHolder;
|
||||
import com.hbm.blocks.generic.DungeonSpawner;
|
||||
import com.hbm.entity.item.EntityFallingBlockNT;
|
||||
import com.hbm.entity.missile.EntityMissileTier2;
|
||||
import com.hbm.entity.mob.EntityUndeadSoldier;
|
||||
import com.hbm.items.ItemEnums;
|
||||
import com.hbm.items.ModItems;
|
||||
@ -12,6 +13,7 @@ import com.hbm.main.ModEventHandler;
|
||||
import com.hbm.tileentity.machine.storage.TileEntityCrateBase;
|
||||
import com.hbm.util.MobUtil;
|
||||
import com.hbm.util.Vec3NT;
|
||||
import com.hbm.world.WorldUtil;
|
||||
import net.minecraft.entity.effect.EntityLightningBolt;
|
||||
import net.minecraft.entity.monster.EntityZombie;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -21,7 +23,10 @@ import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@ -140,7 +145,7 @@ public class DungeonSpawnerActions {
|
||||
if(tile.phase == 2){
|
||||
world.setBlock(x,y,z, ModBlocks.crate_steel);
|
||||
|
||||
EntityLightningBolt blitz = new EntityLightningBolt(world, x, world.getHeightValue(x, z) + 1, z);
|
||||
EntityLightningBolt blitz = new EntityLightningBolt(world, x, world.getHeightValue(x, z) + 2, z);
|
||||
world.spawnEntityInWorld(blitz);
|
||||
|
||||
TileEntityCrateBase crate = (TileEntityCrateBase) world.getTileEntity(x,y,z);
|
||||
@ -148,6 +153,31 @@ public class DungeonSpawnerActions {
|
||||
}
|
||||
};
|
||||
|
||||
public static Consumer<DungeonSpawner.TileEntityDungeonSpawner> MISSILE_STRIKE = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
|
||||
if(tile.phase != 1) return;
|
||||
|
||||
world.getClosestPlayer(x,y,z, 25).addChatMessage(new ChatComponentText(EnumChatFormatting.LIGHT_PURPLE + "[COMMAND UNIT]"+ EnumChatFormatting.RESET + " Missile Fired"));
|
||||
|
||||
ForgeDirection parallel = tile.direction.getRotation(ForgeDirection.UP);
|
||||
|
||||
EntityMissileTier2.EntityMissileStrong missile =
|
||||
new EntityMissileTier2.EntityMissileStrong(
|
||||
world,
|
||||
x + tile.direction.offsetX * 300,
|
||||
200,
|
||||
z + tile.direction.offsetZ * 300,
|
||||
x + parallel.offsetX * 30 + tile.direction.offsetX * 30,
|
||||
z + parallel.offsetZ * 30 + tile.direction.offsetZ * 30);
|
||||
WorldUtil.loadAndSpawnEntityInWorld(missile);
|
||||
|
||||
world.setBlock(x,y,z, ModBlocks.block_electrical_scrap);
|
||||
};
|
||||
|
||||
public static List<String> getActionNames(){
|
||||
return new ArrayList<>(actions.keySet());
|
||||
}
|
||||
@ -158,6 +188,7 @@ public class DungeonSpawnerActions {
|
||||
actions.put("COLLAPSE_ROOF_RAD_5", COLLAPSE_ROOF_RAD_5);
|
||||
actions.put("FODDER_WAVE", FODDER_WAVE);
|
||||
actions.put("PUZZLE_TEST", PUZZLE_TEST);
|
||||
actions.put("MISSILE_STRIKE", MISSILE_STRIKE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 740 B After Width: | Height: | Size: 743 B |
Loading…
x
Reference in New Issue
Block a user