feat: partial force torch implementation
|
@ -12,7 +12,9 @@ public class Config {
|
||||||
public static boolean easyWing;
|
public static boolean easyWing;
|
||||||
public static boolean timeUpgradeRod;
|
public static boolean timeUpgradeRod;
|
||||||
public static boolean timeUpgradeSword;
|
public static boolean timeUpgradeSword;
|
||||||
public static boolean timeUpgradeTorch;
|
public static boolean timeUpgradeTorch = true;
|
||||||
|
public static boolean timeAffectBlocks = true;
|
||||||
|
public static boolean timeAffectTiles = true;
|
||||||
public static boolean insaneImpervious;
|
public static boolean insaneImpervious;
|
||||||
|
|
||||||
public static int speedLevel;
|
public static int speedLevel;
|
||||||
|
@ -21,8 +23,6 @@ public class Config {
|
||||||
|
|
||||||
public static float gemValue = 0.25F;
|
public static float gemValue = 0.25F;
|
||||||
|
|
||||||
public static int powerOreRenderID;
|
|
||||||
|
|
||||||
public static File engineFile;
|
public static File engineFile;
|
||||||
public static boolean disableRodSpeed;
|
public static boolean disableRodSpeed;
|
||||||
public static boolean disableRodHeal;
|
public static boolean disableRodHeal;
|
||||||
|
@ -35,6 +35,9 @@ public class Config {
|
||||||
public static int powerOreRarity = 8;
|
public static int powerOreRarity = 8;
|
||||||
public static int powerOreSpawnHeight = 48;
|
public static int powerOreSpawnHeight = 48;
|
||||||
|
|
||||||
|
public static int torchDist = 42;
|
||||||
|
public static int torchFreq = 42;
|
||||||
|
|
||||||
private static void generateDefaultEngineFile() {
|
private static void generateDefaultEngineFile() {
|
||||||
try {
|
try {
|
||||||
FileWriter e = new FileWriter(engineFile);
|
FileWriter e = new FileWriter(engineFile);
|
||||||
|
|
|
@ -11,11 +11,18 @@ import cpw.mods.fml.common.registry.EntityRegistry;
|
||||||
import cpw.mods.fml.common.registry.GameRegistry;
|
import cpw.mods.fml.common.registry.GameRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import ley.modding.dartcraft.block.DartBlocks;
|
import ley.modding.dartcraft.block.DartBlocks;
|
||||||
import ley.modding.dartcraft.entity.*;
|
import ley.modding.dartcraft.entity.EntityBottle;
|
||||||
|
import ley.modding.dartcraft.entity.EntityColdChicken;
|
||||||
|
import ley.modding.dartcraft.entity.EntityColdCow;
|
||||||
|
import ley.modding.dartcraft.entity.EntityColdPig;
|
||||||
|
import ley.modding.dartcraft.entity.EntityFlyingFlask;
|
||||||
|
import ley.modding.dartcraft.entity.EntityFrozenItem;
|
||||||
|
import ley.modding.dartcraft.entity.EntityTime;
|
||||||
import ley.modding.dartcraft.event.EventHandler;
|
import ley.modding.dartcraft.event.EventHandler;
|
||||||
import ley.modding.dartcraft.internal.Registry;
|
import ley.modding.dartcraft.internal.Registry;
|
||||||
import ley.modding.dartcraft.item.DartItems;
|
import ley.modding.dartcraft.item.DartItems;
|
||||||
import ley.modding.dartcraft.network.PacketClipButton;
|
import ley.modding.dartcraft.network.PacketClipButton;
|
||||||
|
import ley.modding.dartcraft.network.PacketFX;
|
||||||
import ley.modding.dartcraft.proxy.CommonProxy;
|
import ley.modding.dartcraft.proxy.CommonProxy;
|
||||||
import ley.modding.dartcraft.tab.DartcraftTab;
|
import ley.modding.dartcraft.tab.DartcraftTab;
|
||||||
import ley.modding.dartcraft.util.ForceEngineLiquids;
|
import ley.modding.dartcraft.util.ForceEngineLiquids;
|
||||||
|
@ -48,9 +55,13 @@ public class Dartcraft {
|
||||||
@Mod.EventHandler
|
@Mod.EventHandler
|
||||||
public void preInit(FMLPreInitializationEvent e) {
|
public void preInit(FMLPreInitializationEvent e) {
|
||||||
MinecraftForge.EVENT_BUS.register(new EventHandler());
|
MinecraftForge.EVENT_BUS.register(new EventHandler());
|
||||||
channel = NetworkRegistry.INSTANCE.newSimpleChannel("Dartcraft");
|
channel = NetworkRegistry.INSTANCE.newSimpleChannel("dartcraft");
|
||||||
|
int desc = 0;
|
||||||
channel.registerMessage(
|
channel.registerMessage(
|
||||||
PacketClipButton.Handler.class, PacketClipButton.class, 0, Side.SERVER
|
PacketClipButton.Handler.class, PacketClipButton.class, desc++, Side.SERVER
|
||||||
|
);
|
||||||
|
channel.registerMessage(
|
||||||
|
PacketFX.Handler.class, PacketFX.class, desc++, Side.CLIENT
|
||||||
);
|
);
|
||||||
FortunesUtil.load();
|
FortunesUtil.load();
|
||||||
}
|
}
|
||||||
|
@ -99,6 +110,18 @@ public class Dartcraft {
|
||||||
1,
|
1,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
EntityRegistry.registerModEntity(
|
||||||
|
EntityTime.class, "entityTime", entityId++, Dartcraft.instance, 40, 1, true
|
||||||
|
);
|
||||||
|
EntityRegistry.registerModEntity(
|
||||||
|
EntityFrozenItem.class,
|
||||||
|
"entityFrozenItem",
|
||||||
|
entityId++,
|
||||||
|
Dartcraft.instance,
|
||||||
|
40,
|
||||||
|
1,
|
||||||
|
true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventHandler
|
@Mod.EventHandler
|
||||||
|
|
297
src/main/java/ley/modding/dartcraft/block/BlockForceTorch.java
Normal file
|
@ -0,0 +1,297 @@
|
||||||
|
package ley.modding.dartcraft.block;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import ley.modding.dartcraft.Config;
|
||||||
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
|
import ley.modding.dartcraft.client.renderer.block.RenderBlockTorch;
|
||||||
|
import ley.modding.dartcraft.item.AbstractItemBlockMetadata;
|
||||||
|
import ley.modding.dartcraft.tile.TileEntityForceTorch;
|
||||||
|
import ley.modding.dartcraft.util.DartUtils;
|
||||||
|
import ley.modding.dartcraft.util.Util;
|
||||||
|
import ley.modding.tileralib.api.ICustomItemBlockProvider;
|
||||||
|
import ley.modding.tileralib.api.ITEProvider;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.BlockTorch;
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemBlock;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
public class BlockForceTorch
|
||||||
|
extends BlockTorch implements ITEProvider, ICustomItemBlockProvider {
|
||||||
|
public static final String ID = "forcetorch";
|
||||||
|
|
||||||
|
public static HashMap<String, int[]> upgrades = new HashMap<>();
|
||||||
|
static {
|
||||||
|
upgrades.put("Heat", new int[] { 16, 1 });
|
||||||
|
upgrades.put("Healing", new int[] { 17, 6 });
|
||||||
|
upgrades.put("Bane", new int[] { 18, 14 });
|
||||||
|
upgrades.put("Camo", new int[] { 19, 0 });
|
||||||
|
upgrades.put("Repair", new int[] { 20, 4 });
|
||||||
|
upgrades.put("Time", new int[] { 21, 12 });
|
||||||
|
}
|
||||||
|
|
||||||
|
public IIcon[] icons;
|
||||||
|
|
||||||
|
public BlockForceTorch() {
|
||||||
|
super();
|
||||||
|
Util.configureBlock(this, ID);
|
||||||
|
this.setResistance(2000.0F);
|
||||||
|
this.setLightLevel(1.0F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRenderType() {
|
||||||
|
return RenderBlockTorch.RI;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean renderAsNormalBlock() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getLightValue(IBlockAccess world, int x, int y, int z) {
|
||||||
|
return 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasTileEntity(int meta) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity createTileEntity(World world, int meta) {
|
||||||
|
return new TileEntityForceTorch();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBlockPlacedBy(
|
||||||
|
World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack
|
||||||
|
) {
|
||||||
|
super.onBlockPlacedBy(world, x, y, z, entity, stack);
|
||||||
|
NBTTagCompound upgrades = new NBTTagCompound();
|
||||||
|
int color = stack.getItemDamage();
|
||||||
|
TileEntity tile = world.getTileEntity(x, y, z);
|
||||||
|
if (tile instanceof TileEntityForceTorch) {
|
||||||
|
try {
|
||||||
|
for (String name : BlockForceTorch.upgrades.keySet()) {
|
||||||
|
int[] ints = (int[]) BlockForceTorch.upgrades.get(name);
|
||||||
|
if (stack.getItemDamage() == ints[0]) {
|
||||||
|
color = ints[1];
|
||||||
|
upgrades.setInteger(name, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception var13) {}
|
||||||
|
|
||||||
|
TileEntityForceTorch torch1 = (TileEntityForceTorch) tile;
|
||||||
|
torch1.upgrades = upgrades;
|
||||||
|
torch1.color = (byte) color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void breakBlock(World world, int x, int y, int z, Block par5, int meta) {
|
||||||
|
TileEntity tile = world.getTileEntity(x, y, z);
|
||||||
|
if (tile instanceof TileEntityForceTorch) {
|
||||||
|
TileEntityForceTorch torch = (TileEntityForceTorch) tile;
|
||||||
|
ItemStack stack = new ItemStack(this, 1, torch.color);
|
||||||
|
if (torch.upgrades != null && !torch.upgrades.hasNoTags()) {
|
||||||
|
try {
|
||||||
|
int e = -1;
|
||||||
|
for (String key : BlockForceTorch.upgrades.keySet()) {
|
||||||
|
if (torch.upgrades.hasKey(key)) {
|
||||||
|
e = ((int[]) upgrades.get(key))[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e > 0) {
|
||||||
|
stack.setItemDamage(e);
|
||||||
|
}
|
||||||
|
} catch (Exception var13) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
DartUtils.dropItem(stack, world, (double) x, (double) y, (double) z);
|
||||||
|
world.removeTileEntity(x, y, z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList<ItemStack>
|
||||||
|
getDrops(World alec0, int alec1, int alec2, int alec3, int alec4, int alec5) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IIcon getIconForColor(int color) {
|
||||||
|
switch (color) {
|
||||||
|
case 16: // heat -> red
|
||||||
|
return this.icons[1];
|
||||||
|
|
||||||
|
case 17: // healing -> cyan
|
||||||
|
return this.icons[6];
|
||||||
|
|
||||||
|
case 18: // bane -> orange
|
||||||
|
return this.icons[14];
|
||||||
|
|
||||||
|
case 19: // camo -> black
|
||||||
|
return this.icons[0];
|
||||||
|
|
||||||
|
case 20: // aspect -> blue
|
||||||
|
return this.icons[4];
|
||||||
|
|
||||||
|
case 21: // time -> light blue
|
||||||
|
return this.icons[12];
|
||||||
|
|
||||||
|
default:
|
||||||
|
return color >= 0 && color < this.icons.length ? this.icons[color]
|
||||||
|
: this.blockIcon;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IIcon getIcon(int alec, int meta) {
|
||||||
|
return this.getIconForColor(meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
|
||||||
|
try {
|
||||||
|
return this.getIconForColor(
|
||||||
|
((TileEntityForceTorch) world.getTileEntity(x, y, z)).color
|
||||||
|
);
|
||||||
|
} catch (Exception var7) {
|
||||||
|
return this.blockIcon;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||||
|
public void getSubBlocks(Item id, CreativeTabs tab, List list) {
|
||||||
|
IntStream.range(0, Config.timeUpgradeTorch ? 22 : 21)
|
||||||
|
.mapToObj(m -> new ItemStack(this, 1, m))
|
||||||
|
.forEach(list::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void registerBlockIcons(IIconRegister reggie) {
|
||||||
|
this.icons = IntStream.range(0, 16)
|
||||||
|
.mapToObj(i -> "dartcraft:forcetorch" + i)
|
||||||
|
.map(reggie::registerIcon)
|
||||||
|
.toArray(IIcon[] ::new);
|
||||||
|
|
||||||
|
this.blockIcon = this.icons[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void randomDisplayTick(World world, int x, int y, int z, Random rand) {
|
||||||
|
try {
|
||||||
|
TileEntityForceTorch e = (TileEntityForceTorch) world.getTileEntity(x, y, z);
|
||||||
|
if (e.upgrades.hasKey("Camo")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (Exception var7) {}
|
||||||
|
|
||||||
|
super.randomDisplayTick(world, x, y, z, rand);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onBlockActivated(
|
||||||
|
World world,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int z,
|
||||||
|
EntityPlayer player,
|
||||||
|
int par6,
|
||||||
|
float par7,
|
||||||
|
float par8,
|
||||||
|
float par9
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
TileEntity e = world.getTileEntity(x, y, z);
|
||||||
|
if (e != null && e instanceof TileEntityForceTorch) {
|
||||||
|
TileEntityForceTorch torch = (TileEntityForceTorch) e;
|
||||||
|
if (torch.upgrades.hasKey("Time") && Config.timeUpgradeTorch) {
|
||||||
|
if (Dartcraft.proxy.isSimulating(world)) {
|
||||||
|
++torch.timeType;
|
||||||
|
if (torch.timeType > 4) {
|
||||||
|
torch.timeType = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
String message = "Time mode: ";
|
||||||
|
switch (torch.timeType) {
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
message = message + "None";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
message = message + "Stop";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
message = message + "Slow";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
message = message + "Fast";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
message = message + "Hyper";
|
||||||
|
}
|
||||||
|
|
||||||
|
Dartcraft.proxy.sendChatToPlayer(player, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception var13) {
|
||||||
|
var13.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<? extends TileEntity> getTEClass() {
|
||||||
|
return TileEntityForceTorch.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<? extends ItemBlock> getItemBlockClass() {
|
||||||
|
return BlockItem.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class BlockItem extends AbstractItemBlockMetadata {
|
||||||
|
public BlockItem(Block block) {
|
||||||
|
super(block);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getID() {
|
||||||
|
return ID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,8 +4,8 @@ import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
import ley.modding.dartcraft.Config;
|
|
||||||
import ley.modding.dartcraft.Dartcraft;
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
|
import ley.modding.dartcraft.client.renderer.block.RenderBlockPowerOre;
|
||||||
import ley.modding.dartcraft.item.AbstractItemBlockMetadata;
|
import ley.modding.dartcraft.item.AbstractItemBlockMetadata;
|
||||||
import ley.modding.dartcraft.item.DartItems;
|
import ley.modding.dartcraft.item.DartItems;
|
||||||
import ley.modding.dartcraft.util.Util;
|
import ley.modding.dartcraft.util.Util;
|
||||||
|
@ -60,7 +60,7 @@ public class BlockPowerOre extends BaseBlock implements ICustomItemBlockProvider
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getRenderType() {
|
public int getRenderType() {
|
||||||
return Config.powerOreRenderID;
|
return RenderBlockPowerOre.RI;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,6 +16,7 @@ public class DartBlocks {
|
||||||
public static Block forcesapling;
|
public static Block forcesapling;
|
||||||
public static Block[] forceslab;
|
public static Block[] forceslab;
|
||||||
public static Block[] forcestairs;
|
public static Block[] forcestairs;
|
||||||
|
public static Block forcetorch;
|
||||||
public static Block liquidforce;
|
public static Block liquidforce;
|
||||||
public static Block powerore;
|
public static Block powerore;
|
||||||
|
|
||||||
|
@ -43,6 +44,7 @@ public class DartBlocks {
|
||||||
.mapToObj(BlockForceStairs::new)
|
.mapToObj(BlockForceStairs::new)
|
||||||
.map(reg::registerBlock)
|
.map(reg::registerBlock)
|
||||||
.toArray(Block[] ::new);
|
.toArray(Block[] ::new);
|
||||||
|
DartBlocks.forcetorch = reg.registerBlock(new BlockForceTorch());
|
||||||
DartBlocks.liquidforce = reg.registerBlock(new BlockLiquidForce());
|
DartBlocks.liquidforce = reg.registerBlock(new BlockLiquidForce());
|
||||||
DartBlocks.powerore = reg.registerBlock(new BlockPowerOre());
|
DartBlocks.powerore = reg.registerBlock(new BlockPowerOre());
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,10 @@ import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import ley.modding.dartcraft.Dartcraft;
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
import ley.modding.dartcraft.proxy.CommonProxy;
|
import ley.modding.dartcraft.proxy.CommonProxy;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.particle.EntityFX;
|
import net.minecraft.client.particle.EntityFX;
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class FXDisney extends EntityFX {
|
public class FXDisney extends EntityFX {
|
||||||
|
@ -154,7 +156,9 @@ public class FXDisney extends EntityFX {
|
||||||
GL11.glDisable(3042);
|
GL11.glDisable(3042);
|
||||||
GL11.glDepthMask(true);
|
GL11.glDepthMask(true);
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
Dartcraft.proxy.bindTexture("textures/particle/particles.png");
|
Minecraft.getMinecraft().getTextureManager().bindTexture(
|
||||||
|
new ResourceLocation("textures/particle/particles.png")
|
||||||
|
);
|
||||||
tessy.startDrawingQuads();
|
tessy.startDrawingQuads();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
176
src/main/java/ley/modding/dartcraft/client/fx/FXTime.java
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
package ley.modding.dartcraft.client.fx;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
|
import ley.modding.dartcraft.proxy.CommonProxy;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.particle.EntityFX;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class FXTime extends EntityFX {
|
||||||
|
public static final int TYPE_FALL = 0;
|
||||||
|
public static final int TYPE_CHANGE = 1;
|
||||||
|
public static final int TYPE_BREAK = 2;
|
||||||
|
public static final int TYPE_FREEZE = 3;
|
||||||
|
public static final int TYPE_FREEZE_ENTITY = 4;
|
||||||
|
private int iconIndex = 22;
|
||||||
|
private int type;
|
||||||
|
private Color color;
|
||||||
|
|
||||||
|
public FXTime(
|
||||||
|
World world, double x, double y, double z, double vx, double vy, double vz
|
||||||
|
) {
|
||||||
|
super(world, x, y, z, vx, vy, vz);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FXTime(World world, double x, double y, double z, int type) {
|
||||||
|
super(world, x, y, z);
|
||||||
|
this.color = new Color(3574754);
|
||||||
|
this.particleRed = (float) this.color.getRed();
|
||||||
|
this.particleGreen = (float) this.color.getGreen();
|
||||||
|
this.particleBlue = (float) this.color.getBlue();
|
||||||
|
this.setSize(0.02F, 0.02F);
|
||||||
|
this.noClip = true;
|
||||||
|
this.type = type;
|
||||||
|
float velModifier;
|
||||||
|
switch (type) {
|
||||||
|
case 0:
|
||||||
|
this.motionX = this.motionZ = 0.0D;
|
||||||
|
this.motionY = -0.025D;
|
||||||
|
this.particleMaxAge = (int) (85.0D
|
||||||
|
* ((double) world.rand.nextFloat() * 0.2D
|
||||||
|
+ 0.8999999761581421D));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
velModifier = 0.15F;
|
||||||
|
this.motionX = (double) ((CommonProxy.rand.nextFloat() * 2.0F - 1.0F)
|
||||||
|
* velModifier);
|
||||||
|
this.motionY = (double) ((CommonProxy.rand.nextFloat() * 2.0F - 1.0F)
|
||||||
|
* velModifier);
|
||||||
|
this.motionZ = (double) ((CommonProxy.rand.nextFloat() * 2.0F - 1.0F)
|
||||||
|
* velModifier);
|
||||||
|
this.particleMaxAge = (int) (15.0D
|
||||||
|
* ((double) world.rand.nextFloat() * 0.2D
|
||||||
|
+ 0.8999999761581421D));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
velModifier = 0.1F;
|
||||||
|
this.motionX = (double) ((CommonProxy.rand.nextFloat() * 2.0F - 1.0F)
|
||||||
|
* velModifier);
|
||||||
|
this.motionY = (double) velModifier;
|
||||||
|
this.motionZ = (double) ((CommonProxy.rand.nextFloat() * 2.0F - 1.0F)
|
||||||
|
* velModifier);
|
||||||
|
this.particleMaxAge = (int) (15.0D
|
||||||
|
* ((double) world.rand.nextFloat() * 0.2D
|
||||||
|
+ 0.8999999761581421D));
|
||||||
|
this.particleGravity = 0.5F;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
this.particleAlpha = 0.5F;
|
||||||
|
case 3:
|
||||||
|
velModifier = 0.01F;
|
||||||
|
this.motionX = (double) ((CommonProxy.rand.nextFloat() * 2.0F - 1.0F)
|
||||||
|
* velModifier);
|
||||||
|
this.motionY = (double) velModifier;
|
||||||
|
|
||||||
|
this.motionZ = (double) ((CommonProxy.rand.nextFloat() * 2.0F - 1.0F)
|
||||||
|
* velModifier);
|
||||||
|
this.particleMaxAge = (int) (15.0D
|
||||||
|
* ((double) world.rand.nextFloat() * 0.2D
|
||||||
|
+ 0.8999999761581421D));
|
||||||
|
this.particleGravity = 0.0F;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.particleMaxAge = (int) ((float) this.particleMaxAge * 2.0F);
|
||||||
|
this.particleScale *= 1.25F;
|
||||||
|
this.particleGravity *= 0.5F;
|
||||||
|
this.particleAlpha *= 0.3F;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onUpdate() {
|
||||||
|
super.onUpdate();
|
||||||
|
this.rotationPitch += 0.01F;
|
||||||
|
switch (this.type) {
|
||||||
|
case 3:
|
||||||
|
if (this.particleAge > this.particleMaxAge / 2) {
|
||||||
|
this.particleAlpha -= 0.075F;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void renderParticle(
|
||||||
|
Tessellator tessy,
|
||||||
|
float par2,
|
||||||
|
float par3,
|
||||||
|
float par4,
|
||||||
|
float par5,
|
||||||
|
float par6,
|
||||||
|
float par7
|
||||||
|
) {
|
||||||
|
tessy.draw();
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glDepthMask(false);
|
||||||
|
GL11.glEnable(3042);
|
||||||
|
GL11.glBlendFunc(770, 1);
|
||||||
|
Dartcraft.proxy.bindTexture("darticles.png");
|
||||||
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F);
|
||||||
|
float var8 = (float) (this.iconIndex % 8) / 8.0F;
|
||||||
|
float var9 = var8 + 0.124875F;
|
||||||
|
float var10 = (float) (this.iconIndex / 8) / 8.0F;
|
||||||
|
float var11 = var10 + 0.124875F;
|
||||||
|
float var12 = 0.1F * this.particleScale;
|
||||||
|
float var13 = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) par2
|
||||||
|
- interpPosX);
|
||||||
|
float var14 = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) par2
|
||||||
|
- interpPosY);
|
||||||
|
float var15 = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) par2
|
||||||
|
- interpPosZ);
|
||||||
|
tessy.startDrawingQuads();
|
||||||
|
tessy.setBrightness(240);
|
||||||
|
tessy.setColorRGBA_F(
|
||||||
|
this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha
|
||||||
|
);
|
||||||
|
tessy.addVertexWithUV(
|
||||||
|
(double) (var13 - par3 * var12 - par6 * var12),
|
||||||
|
(double) (var14 - par4 * var12),
|
||||||
|
(double) (var15 - par5 * var12 - par7 * var12),
|
||||||
|
(double) var9,
|
||||||
|
(double) var11
|
||||||
|
);
|
||||||
|
tessy.addVertexWithUV(
|
||||||
|
(double) (var13 - par3 * var12 + par6 * var12),
|
||||||
|
(double) (var14 + par4 * var12),
|
||||||
|
(double) (var15 - par5 * var12 + par7 * var12),
|
||||||
|
(double) var9,
|
||||||
|
(double) var10
|
||||||
|
);
|
||||||
|
tessy.addVertexWithUV(
|
||||||
|
(double) (var13 + par3 * var12 + par6 * var12),
|
||||||
|
(double) (var14 + par4 * var12),
|
||||||
|
(double) (var15 + par5 * var12 + par7 * var12),
|
||||||
|
(double) var8,
|
||||||
|
(double) var10
|
||||||
|
);
|
||||||
|
tessy.addVertexWithUV(
|
||||||
|
(double) (var13 + par3 * var12 - par6 * var12),
|
||||||
|
(double) (var14 - par4 * var12),
|
||||||
|
(double) (var15 + par5 * var12 - par7 * var12),
|
||||||
|
(double) var8,
|
||||||
|
(double) var11
|
||||||
|
);
|
||||||
|
tessy.draw();
|
||||||
|
GL11.glDisable(3042);
|
||||||
|
GL11.glDepthMask(true);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
Minecraft.getMinecraft().getTextureManager().bindTexture(
|
||||||
|
new ResourceLocation("textures/particle/particles.png")
|
||||||
|
);
|
||||||
|
tessy.startDrawingQuads();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
package ley.modding.dartcraft.client.gui;
|
package ley.modding.dartcraft.client.gui;
|
||||||
|
|
||||||
import ley.modding.dartcraft.Dartcraft;
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
import ley.modding.dartcraft.network.DartPacket;
|
|
||||||
import ley.modding.dartcraft.network.PacketClipButton;
|
import ley.modding.dartcraft.network.PacketClipButton;
|
||||||
import net.minecraft.client.gui.GuiScreen;
|
import net.minecraft.client.gui.GuiScreen;
|
||||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||||
|
@ -69,22 +68,19 @@ public class GuiClipboard extends GuiContainer {
|
||||||
if (this.balanceBounds.contains(pos)) {
|
if (this.balanceBounds.contains(pos)) {
|
||||||
getClass();
|
getClass();
|
||||||
this.balanceRender = 8;
|
this.balanceRender = 8;
|
||||||
Dartcraft.proxy.sendPacketToServer((DartPacket
|
Dartcraft.channel.sendToServer(new PacketClipButton(0));
|
||||||
) new PacketClipButton((EntityPlayer) ((GuiScreen) this).mc.thePlayer, 0));
|
|
||||||
this.container.balanceItems();
|
this.container.balanceItems();
|
||||||
}
|
}
|
||||||
if (this.distBounds.contains(pos)) {
|
if (this.distBounds.contains(pos)) {
|
||||||
getClass();
|
getClass();
|
||||||
this.distRender = 8;
|
this.distRender = 8;
|
||||||
Dartcraft.proxy.sendPacketToServer((DartPacket
|
Dartcraft.channel.sendToServer(new PacketClipButton(1));
|
||||||
) new PacketClipButton((EntityPlayer) ((GuiScreen) this).mc.thePlayer, 1));
|
|
||||||
this.container.doDistribute();
|
this.container.doDistribute();
|
||||||
}
|
}
|
||||||
if (this.clearBounds.contains(pos)) {
|
if (this.clearBounds.contains(pos)) {
|
||||||
getClass();
|
getClass();
|
||||||
this.clearRender = 8;
|
this.clearRender = 8;
|
||||||
Dartcraft.proxy.sendPacketToServer((DartPacket
|
Dartcraft.channel.sendToServer(new PacketClipButton(2));
|
||||||
) new PacketClipButton((EntityPlayer) ((GuiScreen) this).mc.thePlayer, 2));
|
|
||||||
this.container.clearMatrix();
|
this.container.clearMatrix();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package ley.modding.dartcraft.client.renderer.block;
|
package ley.modding.dartcraft.client.renderer.block;
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||||
import ley.modding.dartcraft.Config;
|
|
||||||
import ley.modding.dartcraft.block.BlockPowerOre;
|
import ley.modding.dartcraft.block.BlockPowerOre;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.client.renderer.RenderBlocks;
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
|
@ -11,8 +10,10 @@ import net.minecraft.util.IIcon;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
public class PowerOreRenderer
|
public class RenderBlockPowerOre
|
||||||
extends BlockRenderer implements ISimpleBlockRenderingHandler {
|
extends BlockRenderer implements ISimpleBlockRenderingHandler {
|
||||||
|
public static int RI;
|
||||||
|
|
||||||
public void
|
public void
|
||||||
renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer) {
|
renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer) {
|
||||||
block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
@ -66,6 +67,6 @@ public class PowerOreRenderer
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getRenderId() {
|
public int getRenderId() {
|
||||||
return Config.powerOreRenderID;
|
return RI;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,181 @@
|
||||||
|
package ley.modding.dartcraft.client.renderer.block;
|
||||||
|
|
||||||
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||||
|
import ley.modding.dartcraft.block.BlockForceTorch;
|
||||||
|
import ley.modding.dartcraft.block.DartBlocks;
|
||||||
|
import ley.modding.dartcraft.tile.TileEntityForceTorch;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.multiplayer.WorldClient;
|
||||||
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
|
||||||
|
public class RenderBlockTorch
|
||||||
|
extends BlockRenderer implements ISimpleBlockRenderingHandler {
|
||||||
|
public static int RI;
|
||||||
|
|
||||||
|
public boolean renderBlockTorch(Block block, int x, int y, int z) {
|
||||||
|
IIcon[] torchIcons = ((BlockForceTorch) DartBlocks.forcetorch).icons;
|
||||||
|
WorldClient world = null;
|
||||||
|
IIcon icon = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
world = Minecraft.getMinecraft().theWorld;
|
||||||
|
TileEntityForceTorch l = (TileEntityForceTorch) world.getTileEntity(x, y, z);
|
||||||
|
icon = torchIcons[l.color];
|
||||||
|
if (l.upgrades.hasKey("Camo")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l.upgrades.hasKey("Heat")) {
|
||||||
|
icon = torchIcons[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l.upgrades.hasKey("Healing")) {
|
||||||
|
icon = torchIcons[6];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l.upgrades.hasKey("Bane")) {
|
||||||
|
icon = torchIcons[14];
|
||||||
|
}
|
||||||
|
} catch (Exception var15) {}
|
||||||
|
|
||||||
|
if (world != null && icon != null) {
|
||||||
|
int l1 = world.getBlockMetadata(x, y, z);
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||||
|
tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
|
||||||
|
double d0 = 0.4000000059604645D;
|
||||||
|
double d1 = 0.5D - d0;
|
||||||
|
double d2 = 0.20000000298023224D;
|
||||||
|
if (l1 == 1) {
|
||||||
|
this.renderTorchAtAngle(
|
||||||
|
icon, (double) x - d1, (double) y + d2, (double) z, -d0, 0.0D, 0
|
||||||
|
);
|
||||||
|
} else if (l1 == 2) {
|
||||||
|
this.renderTorchAtAngle(
|
||||||
|
icon, (double) x + d1, (double) y + d2, (double) z, d0, 0.0D, 0
|
||||||
|
);
|
||||||
|
} else if (l1 == 3) {
|
||||||
|
this.renderTorchAtAngle(
|
||||||
|
icon, (double) x, (double) y + d2, (double) z - d1, 0.0D, -d0, 0
|
||||||
|
);
|
||||||
|
} else if (l1 == 4) {
|
||||||
|
this.renderTorchAtAngle(
|
||||||
|
icon, (double) x, (double) y + d2, (double) z + d1, 0.0D, d0, 0
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.renderTorchAtAngle(
|
||||||
|
icon, (double) x, (double) y, (double) z, 0.0D, 0.0D, 0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void renderTorchAtAngle(
|
||||||
|
IIcon icon, double x, double y, double z, double par8, double par10, int par12
|
||||||
|
) {
|
||||||
|
Tessellator tessellator = Tessellator.instance;
|
||||||
|
double d5 = (double) icon.getMinU();
|
||||||
|
double d6 = (double) icon.getMinV();
|
||||||
|
double d7 = (double) icon.getMaxU();
|
||||||
|
double d8 = (double) icon.getMaxV();
|
||||||
|
double d9 = (double) icon.getInterpolatedU(7.0D);
|
||||||
|
double d10 = (double) icon.getInterpolatedV(6.0D);
|
||||||
|
double d11 = (double) icon.getInterpolatedU(9.0D);
|
||||||
|
double d12 = (double) icon.getInterpolatedV(8.0D);
|
||||||
|
double d13 = (double) icon.getInterpolatedU(7.0D);
|
||||||
|
double d14 = (double) icon.getInterpolatedV(13.0D);
|
||||||
|
double d15 = (double) icon.getInterpolatedU(9.0D);
|
||||||
|
double d16 = (double) icon.getInterpolatedV(15.0D);
|
||||||
|
x += 0.5D;
|
||||||
|
z += 0.5D;
|
||||||
|
double d17 = x - 0.5D;
|
||||||
|
double d18 = x + 0.5D;
|
||||||
|
double d19 = z - 0.5D;
|
||||||
|
double d20 = z + 0.5D;
|
||||||
|
double d21 = 0.0625D;
|
||||||
|
double d22 = 0.625D;
|
||||||
|
tessellator.addVertexWithUV(
|
||||||
|
x + par8 * (1.0D - d22) - d21,
|
||||||
|
y + d22,
|
||||||
|
z + par10 * (1.0D - d22) - d21,
|
||||||
|
d9,
|
||||||
|
d10
|
||||||
|
);
|
||||||
|
tessellator.addVertexWithUV(
|
||||||
|
x + par8 * (1.0D - d22) - d21,
|
||||||
|
y + d22,
|
||||||
|
z + par10 * (1.0D - d22) + d21,
|
||||||
|
d9,
|
||||||
|
d12
|
||||||
|
);
|
||||||
|
tessellator.addVertexWithUV(
|
||||||
|
x + par8 * (1.0D - d22) + d21,
|
||||||
|
y + d22,
|
||||||
|
z + par10 * (1.0D - d22) + d21,
|
||||||
|
d11,
|
||||||
|
d12
|
||||||
|
);
|
||||||
|
tessellator.addVertexWithUV(
|
||||||
|
x + par8 * (1.0D - d22) + d21,
|
||||||
|
y + d22,
|
||||||
|
z + par10 * (1.0D - d22) - d21,
|
||||||
|
d11,
|
||||||
|
d10
|
||||||
|
);
|
||||||
|
tessellator.addVertexWithUV(x + d21 + par8, y, z - d21 + par10, d15, d14);
|
||||||
|
tessellator.addVertexWithUV(x + d21 + par8, y, z + d21 + par10, d15, d16);
|
||||||
|
tessellator.addVertexWithUV(x - d21 + par8, y, z + d21 + par10, d13, d16);
|
||||||
|
tessellator.addVertexWithUV(x - d21 + par8, y, z - d21 + par10, d13, d14);
|
||||||
|
tessellator.addVertexWithUV(x - d21, y + 1.0D, d19, d5, d6);
|
||||||
|
tessellator.addVertexWithUV(x - d21 + par8, y + 0.0D, d19 + par10, d5, d8);
|
||||||
|
tessellator.addVertexWithUV(x - d21 + par8, y + 0.0D, d20 + par10, d7, d8);
|
||||||
|
tessellator.addVertexWithUV(x - d21, y + 1.0D, d20, d7, d6);
|
||||||
|
tessellator.addVertexWithUV(x + d21, y + 1.0D, d20, d5, d6);
|
||||||
|
tessellator.addVertexWithUV(x + par8 + d21, y + 0.0D, d20 + par10, d5, d8);
|
||||||
|
tessellator.addVertexWithUV(x + par8 + d21, y + 0.0D, d19 + par10, d7, d8);
|
||||||
|
tessellator.addVertexWithUV(x + d21, y + 1.0D, d19, d7, d6);
|
||||||
|
tessellator.addVertexWithUV(d17, y + 1.0D, z + d21, d5, d6);
|
||||||
|
tessellator.addVertexWithUV(d17 + par8, y + 0.0D, z + d21 + par10, d5, d8);
|
||||||
|
tessellator.addVertexWithUV(d18 + par8, y + 0.0D, z + d21 + par10, d7, d8);
|
||||||
|
tessellator.addVertexWithUV(d18, y + 1.0D, z + d21, d7, d6);
|
||||||
|
tessellator.addVertexWithUV(d18, y + 1.0D, z - d21, d5, d6);
|
||||||
|
tessellator.addVertexWithUV(d18 + par8, y + 0.0D, z - d21 + par10, d5, d8);
|
||||||
|
tessellator.addVertexWithUV(d17 + par8, y + 0.0D, z - d21 + par10, d7, d8);
|
||||||
|
tessellator.addVertexWithUV(d17, y + 1.0D, z - d21, d7, d6);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void
|
||||||
|
renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean renderWorldBlock(
|
||||||
|
IBlockAccess world,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int z,
|
||||||
|
Block block,
|
||||||
|
int modelId,
|
||||||
|
RenderBlocks renderer
|
||||||
|
) {
|
||||||
|
return this.renderBlockTorch(block, x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldRender3DInInventory(int alec) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRenderId() {
|
||||||
|
return RI;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
package ley.modding.dartcraft.client.renderer.entity;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import ley.modding.dartcraft.entity.EntityFrozenItem;
|
||||||
|
import net.minecraft.client.model.ModelBase;
|
||||||
|
import net.minecraft.client.renderer.entity.RenderItem;
|
||||||
|
import net.minecraft.client.renderer.entity.RenderLiving;
|
||||||
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
|
import net.minecraft.client.renderer.texture.TextureMap;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.item.EntityItem;
|
||||||
|
import net.minecraft.entity.projectile.EntityArrow;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public class RenderEntityFrozenItem extends RenderLiving {
|
||||||
|
public RenderItem itren = new RenderItem();
|
||||||
|
|
||||||
|
public RenderEntityFrozenItem() {
|
||||||
|
super((ModelBase) null, 0.2F);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRenderManager(RenderManager rm) {
|
||||||
|
super.setRenderManager(rm);
|
||||||
|
this.itren.setRenderManager(rm);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doRender(
|
||||||
|
Entity entity, double par2, double par4, double par6, float par8, float par9
|
||||||
|
) {
|
||||||
|
EntityFrozenItem item = (EntityFrozenItem) entity;
|
||||||
|
ItemStack stack = item.getEntityItem();
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(par2, par4, par6);
|
||||||
|
GL11.glScalef(0.5F, 0.5F, 0.5F);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (item != null && stack != null) {
|
||||||
|
//if (item.dartArrow != null) {
|
||||||
|
// EntityDartArrow e = new EntityDartArrow(item.worldObj);
|
||||||
|
// e.readFromNBT(item.dartArrow);
|
||||||
|
// item.worldObj.spawnEntityInWorld(e);
|
||||||
|
// item.worldObj.removeEntity(e);
|
||||||
|
//} else
|
||||||
|
if (item.arrow != null) {
|
||||||
|
EntityArrow e1 = new EntityArrow(item.worldObj);
|
||||||
|
e1.readFromNBT(item.arrow);
|
||||||
|
//item.worldObj.spawnEntityInWorld(e1);
|
||||||
|
//item.worldObj.removeEntity(e1);
|
||||||
|
} else {
|
||||||
|
EntityItem e2 = new EntityItem(
|
||||||
|
item.worldObj, item.posX, item.posY, item.posZ, stack.copy()
|
||||||
|
);
|
||||||
|
e2.delayBeforeCanPickup = 100;
|
||||||
|
e2.hoverStart = item.storedRotation;
|
||||||
|
itren.doRender(e2, par2, par4, par6, par8, par9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ResourceLocation getEntityTexture(Entity entity) {
|
||||||
|
return TextureMap.locationItemsTexture;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package ley.modding.dartcraft.client.renderer.entity;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.entity.Render;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
public class RenderEntityTime extends Render {
|
||||||
|
@Override
|
||||||
|
protected ResourceLocation getEntityTexture(Entity alec0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doRender(
|
||||||
|
Entity alec0, double alec1, double alec2, double alec3, float alec4, float alec5
|
||||||
|
) {}
|
||||||
|
}
|
302
src/main/java/ley/modding/dartcraft/entity/EntityFrozenItem.java
Normal file
|
@ -0,0 +1,302 @@
|
||||||
|
package ley.modding.dartcraft.entity;
|
||||||
|
|
||||||
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
|
import ley.modding.dartcraft.api.IBottleRenderable;
|
||||||
|
import ley.modding.dartcraft.proxy.CommonProxy;
|
||||||
|
import ley.modding.dartcraft.util.UpgradeHelper;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.EntityLiving;
|
||||||
|
import net.minecraft.entity.item.EntityItem;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.projectile.EntityArrow;
|
||||||
|
import net.minecraft.init.Items;
|
||||||
|
import net.minecraft.item.ItemBlock;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class EntityFrozenItem extends EntityLiving implements IBottleRenderable {
|
||||||
|
public int frozenTime;
|
||||||
|
public int savedSpan;
|
||||||
|
public float storedRotation;
|
||||||
|
protected double storedMotionX;
|
||||||
|
protected double storedMotionY;
|
||||||
|
protected double storedMotionZ;
|
||||||
|
private int timeout;
|
||||||
|
public NBTTagCompound arrow;
|
||||||
|
public NBTTagCompound dartArrow;
|
||||||
|
|
||||||
|
public EntityFrozenItem(World world) {
|
||||||
|
super(world);
|
||||||
|
this.motionX = 0.0D;
|
||||||
|
this.motionY = 0.0D;
|
||||||
|
this.motionZ = 0.0D;
|
||||||
|
this.storedRotation = CommonProxy.rand.nextFloat() * 2.0F;
|
||||||
|
float size = 0.1F;
|
||||||
|
this.ySize = size;
|
||||||
|
this.setSize(size, size);
|
||||||
|
this.boundingBox.maxX = (double) size;
|
||||||
|
this.boundingBox.maxY = (double) size;
|
||||||
|
this.boundingBox.maxZ = (double) size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityFrozenItem(World world, Entity item, int time) {
|
||||||
|
this(world);
|
||||||
|
this.posX = item.posX;
|
||||||
|
this.posY = item.posY;
|
||||||
|
this.posZ = item.posZ;
|
||||||
|
this.storedMotionX = item.motionX;
|
||||||
|
this.storedMotionY = item.motionY;
|
||||||
|
this.storedMotionZ = item.motionZ;
|
||||||
|
this.frozenTime = time;
|
||||||
|
if (item instanceof EntityItem) {
|
||||||
|
EntityItem entityItem = (EntityItem) item;
|
||||||
|
this.savedSpan = entityItem.lifespan;
|
||||||
|
this.setEntityItem(entityItem.getEntityItem());
|
||||||
|
//} else if (item instanceof EntityDartArrow) {
|
||||||
|
// this.dartArrow = new NBTTagCompound();
|
||||||
|
// item.writeToNBT(this.dartArrow);
|
||||||
|
// this.setEntityItem(new ItemStack(DartItem.forceArrow));
|
||||||
|
} else if (item instanceof EntityArrow) {
|
||||||
|
this.arrow = new NBTTagCompound();
|
||||||
|
item.writeToNBT(this.arrow);
|
||||||
|
this.setEntityItem(new ItemStack(Items.arrow));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void entityInit() {
|
||||||
|
this.getDataWatcher().addObjectByDataType(12, 5);
|
||||||
|
super.entityInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
--this.timeout;
|
||||||
|
if (!Dartcraft.proxy.isSimulating(this.worldObj) && this.timeout <= 0) {
|
||||||
|
this.timeout = 40;
|
||||||
|
//if (this.item == null) {
|
||||||
|
// //this.sendDescriptionPacket();
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.motionX = 0.0D;
|
||||||
|
this.motionY = 0.0D;
|
||||||
|
this.motionZ = 0.0D;
|
||||||
|
--this.frozenTime;
|
||||||
|
if (this.frozenTime <= 0 && Dartcraft.proxy.isSimulating(this.worldObj)
|
||||||
|
&& this.getEntityItem() != null) {
|
||||||
|
this.worldObj.removeEntity(this);
|
||||||
|
this.setDead();
|
||||||
|
|
||||||
|
try {
|
||||||
|
//if (this.dartArrow != null) {
|
||||||
|
// EntityDartArrow e = new EntityDartArrow(this.worldObj);
|
||||||
|
// e.readFromNBT(this.dartArrow);
|
||||||
|
// this.worldObj.spawnEntityInWorld(e);
|
||||||
|
//} else
|
||||||
|
if (this.arrow != null) {
|
||||||
|
EntityArrow var4 = new EntityArrow(this.worldObj);
|
||||||
|
var4.readFromNBT(this.arrow);
|
||||||
|
this.worldObj.spawnEntityInWorld(var4);
|
||||||
|
} else {
|
||||||
|
EntityItem var5 = new EntityItem(
|
||||||
|
this.worldObj,
|
||||||
|
this.posX,
|
||||||
|
this.posY,
|
||||||
|
this.posZ,
|
||||||
|
this.getEntityItem().copy()
|
||||||
|
);
|
||||||
|
var5.lifespan = this.savedSpan;
|
||||||
|
var5.delayBeforeCanPickup = 10;
|
||||||
|
var5.prevPosX = var5.posX;
|
||||||
|
var5.prevPosY = var5.posY;
|
||||||
|
var5.prevPosZ = var5.posZ;
|
||||||
|
var5.ticksExisted = 1;
|
||||||
|
var5.motionX = this.storedMotionX;
|
||||||
|
var5.motionY = this.storedMotionY;
|
||||||
|
var5.motionZ = this.storedMotionZ;
|
||||||
|
NBTTagCompound dartTag = UpgradeHelper.getDartData(var5);
|
||||||
|
dartTag.setInteger("timeImmune", 2);
|
||||||
|
this.worldObj.spawnEntityInWorld(var5);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setEntityItem(null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readEntityFromNBT(NBTTagCompound comp) {
|
||||||
|
if (comp.hasKey("item")) {
|
||||||
|
try {
|
||||||
|
this.setEntityItem(
|
||||||
|
ItemStack.loadItemStackFromNBT(comp.getCompoundTag("item"))
|
||||||
|
);
|
||||||
|
this.frozenTime = comp.getInteger("frozenTime");
|
||||||
|
this.savedSpan = comp.getInteger("savedSpan");
|
||||||
|
this.storedMotionX = comp.getDouble("storedMotionX");
|
||||||
|
this.storedMotionY = comp.getDouble("storedMotionY");
|
||||||
|
this.storedMotionZ = comp.getDouble("storedMotionZ");
|
||||||
|
if (comp.hasKey("dartArrow")) {
|
||||||
|
this.dartArrow = comp.getCompoundTag("dartArrow");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (comp.hasKey("arrow")) {
|
||||||
|
this.arrow = comp.getCompoundTag("arrow");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeEntityToNBT(NBTTagCompound comp) {
|
||||||
|
ItemStack item = this.getEntityItem();
|
||||||
|
if (item != null) {
|
||||||
|
try {
|
||||||
|
NBTTagCompound e = new NBTTagCompound();
|
||||||
|
item.writeToNBT(e);
|
||||||
|
comp.setTag("item", e);
|
||||||
|
comp.setInteger("frozenTime", this.frozenTime);
|
||||||
|
comp.setInteger("savedSpan", this.savedSpan);
|
||||||
|
comp.setDouble("storedMotionX", this.storedMotionX);
|
||||||
|
comp.setDouble("storedMotionY", this.storedMotionY);
|
||||||
|
comp.setDouble("storedMotionZ", this.storedMotionZ);
|
||||||
|
if (this.dartArrow != null) {
|
||||||
|
comp.setTag("dartArrow", this.dartArrow);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.arrow != null) {
|
||||||
|
comp.setTag("arrow", this.arrow);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getEntityItem() {
|
||||||
|
return this.getDataWatcher().getWatchableObjectItemStack(12);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setEntityItem(ItemStack stack) {
|
||||||
|
this.getDataWatcher().updateObject(12, stack);
|
||||||
|
//if (Dartcraft.proxy.isSimulating(this.worldObj)) {
|
||||||
|
// if (this.item != null && (this.arrow != null || this.dartArrow != null)) {
|
||||||
|
// if (!this.item.hasTagCompound()) {
|
||||||
|
// this.item.setTagCompound(new NBTTagCompound());
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (this.dartArrow != null) {
|
||||||
|
// this.item.getTagCompound().setTag("storedDartArrow",
|
||||||
|
// this.dartArrow);
|
||||||
|
// } else if (this.arrow != null) {
|
||||||
|
// this.item.getTagCompound().setTag("storedArrow", this.arrow);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// //this.sendDescriptionPacket();
|
||||||
|
//} else if (this.item.hasTagCompound()) {
|
||||||
|
// NBTTagCompound comp = this.item.getTagCompound();
|
||||||
|
// if (comp.hasKey("storedDartArrow")) {
|
||||||
|
// this.dartArrow = comp.getCompoundTag("storedDartArrow");
|
||||||
|
// } else if (comp.hasKey("storedArrow")) {
|
||||||
|
// this.arrow = comp.getCompoundTag("storedArrow");
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
//@Override
|
||||||
|
//public void sendDescriptionPacket() {
|
||||||
|
// NBTTagCompound comp;
|
||||||
|
// if (Dartcraft.proxy.isSimulating(this.worldObj)) {
|
||||||
|
// if (this.item != null) {
|
||||||
|
// comp = this.item.writeToNBT(new NBTTagCompound());
|
||||||
|
// if (comp != null) {
|
||||||
|
// comp.setInteger("bottleID", this.entityId);
|
||||||
|
// PacketDispatcher.sendPacketToAllInDimension(
|
||||||
|
// (new PacketNBT(49, comp)).getPacket(), this.dimension
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// comp = new NBTTagCompound();
|
||||||
|
// comp.setInteger("dim", this.dimension);
|
||||||
|
// comp.setInteger("bottleID", this.entityId);
|
||||||
|
// PacketDispatcher.sendPacketToServer((new PacketNBT(50, comp)).getPacket());
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean interact(EntityPlayer player) {
|
||||||
|
try {
|
||||||
|
ItemStack item = this.getEntityItem();
|
||||||
|
player.swingItem();
|
||||||
|
if (Dartcraft.proxy.isSimulating(this.worldObj) && player != null
|
||||||
|
&& item != null) {
|
||||||
|
EntityItem e = new EntityItem(
|
||||||
|
this.worldObj, player.posX, player.posY, player.posZ, item
|
||||||
|
);
|
||||||
|
e.motionX = 0.0D;
|
||||||
|
e.motionY = 0.0D;
|
||||||
|
e.motionZ = 0.0D;
|
||||||
|
e.delayBeforeCanPickup = 0;
|
||||||
|
NBTTagCompound dartTag = UpgradeHelper.getDartData(e);
|
||||||
|
dartTag.setInteger("timeImmune", 2);
|
||||||
|
if (this.arrow != null || this.dartArrow != null) {
|
||||||
|
e.getEntityItem().setTagCompound((NBTTagCompound) null);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setDead();
|
||||||
|
this.worldObj.spawnEntityInWorld(e);
|
||||||
|
this.worldObj.removeEntity(this);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: WTF
|
||||||
|
//@Override
|
||||||
|
//public boolean func_85031_j(Entity entity) {
|
||||||
|
// if (entity instanceof EntityPlayer) {
|
||||||
|
// this.customInteract((EntityPlayer) entity);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return true;
|
||||||
|
//}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AxisAlignedBB getBoundingBox() {
|
||||||
|
try {
|
||||||
|
ItemStack item = this.getEntityItem();
|
||||||
|
if (item != null
|
||||||
|
&& (item.getItem() instanceof ItemBlock || this.dartArrow != null
|
||||||
|
|| this.arrow != null)) {
|
||||||
|
return this.boundingBox;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEntityInvulnerable() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canBePushed() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
302
src/main/java/ley/modding/dartcraft/entity/EntityTime.java
Normal file
|
@ -0,0 +1,302 @@
|
||||||
|
package ley.modding.dartcraft.entity;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||||
|
import ley.modding.dartcraft.Config;
|
||||||
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
|
import ley.modding.dartcraft.network.PacketFX;
|
||||||
|
import ley.modding.dartcraft.tile.TileEntityForceTorch;
|
||||||
|
import ley.modding.dartcraft.util.UpgradeHelper;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.item.EntityItem;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.projectile.EntityArrow;
|
||||||
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class EntityTime extends Entity {
|
||||||
|
public static final int TYPE_NONE = 0;
|
||||||
|
public static final int TYPE_STOP = 1;
|
||||||
|
public static final int TYPE_SLOW = 2;
|
||||||
|
public static final int TYPE_FAST = 3;
|
||||||
|
public static final int TYPE_HYPER = 4;
|
||||||
|
public int type;
|
||||||
|
public static double RANGE = 6.0D;
|
||||||
|
private int lifeTime;
|
||||||
|
private boolean checked;
|
||||||
|
|
||||||
|
public EntityTime(World world) {
|
||||||
|
super(world);
|
||||||
|
this.lifeTime = 200;
|
||||||
|
this.checked = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityTime(World world, int life) {
|
||||||
|
this(world);
|
||||||
|
this.lifeTime = life;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void entityInit() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
--this.lifeTime;
|
||||||
|
if (this.lifeTime <= 0) {
|
||||||
|
this.setDead();
|
||||||
|
} else {
|
||||||
|
this.customTick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void customTick() {
|
||||||
|
if (Dartcraft.proxy.isSimulating(this.worldObj) && this.lifeTime % 20 == 0
|
||||||
|
|| !this.checked) {
|
||||||
|
this.spawnParticles();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.lifeTime % 5 == 0 || !this.checked) {
|
||||||
|
this.checkEntities();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkEntities() {
|
||||||
|
try {
|
||||||
|
if (!Config.timeAffectBlocks && !Config.timeAffectTiles
|
||||||
|
&& !Config.timeUpgradeRod && !Config.timeUpgradeSword
|
||||||
|
&& !Config.timeUpgradeTorch) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AxisAlignedBB e = AxisAlignedBB.getBoundingBox(
|
||||||
|
this.posX - RANGE,
|
||||||
|
this.posY - RANGE,
|
||||||
|
this.posZ - RANGE,
|
||||||
|
this.posX + RANGE,
|
||||||
|
this.posY + RANGE,
|
||||||
|
this.posZ + RANGE
|
||||||
|
);
|
||||||
|
((List<Entity>) this.worldObj.getEntitiesWithinAABB(Entity.class, e))
|
||||||
|
.stream()
|
||||||
|
.filter(
|
||||||
|
j
|
||||||
|
-> j != null && !(j instanceof EntityTime)
|
||||||
|
&& !(j instanceof EntityPlayer) && !(j instanceof EntityBottle)
|
||||||
|
)
|
||||||
|
.forEach(j -> {
|
||||||
|
NBTTagCompound k = UpgradeHelper.getDartData(j);
|
||||||
|
if (!(j instanceof EntityFrozenItem) && !(j instanceof EntityItem)) {
|
||||||
|
if (k.getInteger("timeImmune") > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
k.setInteger("time", this.type);
|
||||||
|
k.setInteger("timeTime", this.lifeTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (this.type) {
|
||||||
|
case 1:
|
||||||
|
if (j instanceof EntityArrow
|
||||||
|
&& (j.posX != j.prevPosX || j.posY != j.prevPosY
|
||||||
|
|| j.posZ != j.prevPosZ)) {
|
||||||
|
EntityFrozenItem chance = new EntityFrozenItem(
|
||||||
|
this.worldObj, j, this.lifeTime
|
||||||
|
);
|
||||||
|
this.worldObj.removeEntity(j);
|
||||||
|
this.worldObj.spawnEntityInWorld(chance);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j instanceof EntityItem) {
|
||||||
|
EntityItem var19 = (EntityItem) j;
|
||||||
|
if (k.hasKey("timeImmune")) {
|
||||||
|
k.setInteger(
|
||||||
|
"timeImmune", k.getInteger("timeImmune") - 1
|
||||||
|
);
|
||||||
|
if (k.getInteger("timeImmune") <= 0) {
|
||||||
|
k.removeTag("timeImmune");
|
||||||
|
}
|
||||||
|
} else if(var19.getEntityItem() != null && var19.getEntityItem().stackSize >= 1) {
|
||||||
|
short freq = 600;
|
||||||
|
EntityFrozenItem e1 = new EntityFrozenItem(
|
||||||
|
this.worldObj, var19, freq
|
||||||
|
);
|
||||||
|
var19.setEntityItemStack(
|
||||||
|
var19.getEntityItem().splitStack(0)
|
||||||
|
);
|
||||||
|
this.worldObj.removeEntity(var19);
|
||||||
|
this.worldObj.spawnEntityInWorld(e1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//case 0:
|
||||||
|
//case 2:
|
||||||
|
//case 3:
|
||||||
|
//case 4:
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
;
|
||||||
|
|
||||||
|
if (this.type == 3 || this.type == 4) {
|
||||||
|
for (int x = (int) (this.posX - RANGE); x < (int) (this.posX + RANGE);
|
||||||
|
++x) {
|
||||||
|
for (int y = (int) (this.posY - RANGE); y < (int) (this.posY + RANGE);
|
||||||
|
++y) {
|
||||||
|
for (int z = (int) (this.posZ - RANGE);
|
||||||
|
z < (int) (this.posZ + RANGE);
|
||||||
|
++z) {
|
||||||
|
float var20 = this.type == 4 ? 0.5F : 0.1F;
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (Config.timeAffectBlocks) {
|
||||||
|
Block block = this.worldObj.getBlock(x, y, z);
|
||||||
|
if (block != Blocks.air) {
|
||||||
|
if (block != null
|
||||||
|
&& var20 >= this.rand.nextFloat()) {
|
||||||
|
block.updateTick(
|
||||||
|
this.worldObj, x, y, z, this.rand
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
Block var21 = this.type == 4 ? Blocks.glass : Blocks.planks;
|
||||||
|
|
||||||
|
try {
|
||||||
|
TileEntity var23 = this.worldObj.getTileEntity(x, y, z);
|
||||||
|
if (var23 != null && !(var23 instanceof TileEntityForceTorch)
|
||||||
|
&& Config.timeAffectTiles
|
||||||
|
/*&& (!Config.timeAffectWhitelist
|
||||||
|
|| DartPluginForceWrench.isTileBlacklisted(
|
||||||
|
var23.getClass()
|
||||||
|
))*/) {
|
||||||
|
// TODO: WTF
|
||||||
|
//if (var23 instanceof TileEntityMobSpawner) {
|
||||||
|
// TileEntityMobSpawner l
|
||||||
|
// = (TileEntityMobSpawner) var23;
|
||||||
|
// if (!(l.getSpawnerLogic()
|
||||||
|
// instanceof CustomEntityLogic)) {
|
||||||
|
// String logic = l.getSpawnerLogic()
|
||||||
|
// .getEntityNameToSpawn();
|
||||||
|
// CustomEntityLogic logic1
|
||||||
|
// = new CustomEntityLogic(l,
|
||||||
|
// this.type);
|
||||||
|
// SpawnerReflector.setLogic(l, logic1);
|
||||||
|
// } else {
|
||||||
|
// CustomEntityLogic var25
|
||||||
|
// = (CustomEntityLogic)
|
||||||
|
// l.getSpawnerLogic();
|
||||||
|
// var25.setHyper();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
// TODO: WTF
|
||||||
|
//if (!ForestryTimer.handleTile(var23, var21)) {
|
||||||
|
// for (int var24 = 0; var24 < var21; ++var24)
|
||||||
|
// {
|
||||||
|
// var23.updateEntity();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
} catch (Exception var14) {
|
||||||
|
var14.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception var15) {
|
||||||
|
var15.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.checked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void spawnParticles() {
|
||||||
|
if (this.lifeTime >= 20) {
|
||||||
|
byte type = 4;
|
||||||
|
switch (this.type) {
|
||||||
|
case 0:
|
||||||
|
return;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
type = 3;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
type = 2;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
type = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dartcraft.channel.sendToAllAround(
|
||||||
|
new PacketFX(
|
||||||
|
this.posX, this.posY, this.posZ, PacketFX.Type.TIME, type, 0, 1
|
||||||
|
),
|
||||||
|
new TargetPoint(
|
||||||
|
this.worldObj.provider.dimensionId,
|
||||||
|
this.posX,
|
||||||
|
this.posY,
|
||||||
|
this.posZ,
|
||||||
|
80d
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setType(int type, boolean playSound) {
|
||||||
|
if (type >= 0 && type <= 4) {
|
||||||
|
this.type = type;
|
||||||
|
if (playSound) {
|
||||||
|
String sound = "dartcraft:";
|
||||||
|
switch (this.type) {
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
sound = sound + "slowDown";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
case 4:
|
||||||
|
sound = sound + "speedUp";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.worldObj != null) {
|
||||||
|
this.worldObj.playSoundAtEntity(this, sound, 1.0F, 1.0F);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
this.type = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void readEntityFromNBT(NBTTagCompound comp) {
|
||||||
|
try {
|
||||||
|
this.setType(comp.getInteger("timeType"), false);
|
||||||
|
this.lifeTime = comp.getInteger("lifeTime");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void writeEntityToNBT(NBTTagCompound comp) {
|
||||||
|
try {
|
||||||
|
comp.setInteger("timeType", this.type);
|
||||||
|
comp.setInteger("lifeTime", this.lifeTime);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ import ley.modding.dartcraft.util.Util;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.item.ItemBlock;
|
import net.minecraft.item.ItemBlock;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
|
||||||
public abstract class AbstractItemBlockMetadata extends ItemBlock {
|
public abstract class AbstractItemBlockMetadata extends ItemBlock {
|
||||||
public AbstractItemBlockMetadata(Block block) {
|
public AbstractItemBlockMetadata(Block block) {
|
||||||
|
@ -19,6 +20,11 @@ public abstract class AbstractItemBlockMetadata extends ItemBlock {
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IIcon getIconFromDamage(int meta) {
|
||||||
|
return this.field_150939_a.getIcon(0, meta);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUnlocalizedName(ItemStack stack) {
|
public String getUnlocalizedName(ItemStack stack) {
|
||||||
return "tile." + this.getID() + stack.getItemDamage();
|
return "tile." + this.getID() + stack.getItemDamage();
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
package ley.modding.dartcraft.network;
|
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
|
||||||
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
|
|
||||||
public abstract class DartPacket implements IMessage {
|
|
||||||
protected String receiver;
|
|
||||||
|
|
||||||
protected int dimensionID;
|
|
||||||
|
|
||||||
protected NetworkRegistry.TargetPoint point;
|
|
||||||
|
|
||||||
public abstract boolean getToClient();
|
|
||||||
|
|
||||||
public abstract boolean isDimPacket();
|
|
||||||
|
|
||||||
public int getDimID() {
|
|
||||||
return this.dimensionID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReceiver() {
|
|
||||||
return this.receiver;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NetworkRegistry.TargetPoint getLocation() {
|
|
||||||
return this.point;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void fromBytes(ByteBuf buf) {
|
|
||||||
try {
|
|
||||||
if (isDimPacket())
|
|
||||||
this.dimensionID = buf.readByte();
|
|
||||||
int nameSize = buf.readByte();
|
|
||||||
if (nameSize > 0) {
|
|
||||||
this.receiver = "";
|
|
||||||
for (int i = 0; i < nameSize; i++)
|
|
||||||
this.receiver += buf.readChar();
|
|
||||||
}
|
|
||||||
if (buf.readBoolean())
|
|
||||||
this.point = new NetworkRegistry.TargetPoint(
|
|
||||||
buf.readInt(),
|
|
||||||
buf.readDouble(),
|
|
||||||
buf.readDouble(),
|
|
||||||
buf.readDouble(),
|
|
||||||
buf.readDouble()
|
|
||||||
);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void toBytes(ByteBuf buf) {
|
|
||||||
if (this.receiver == null)
|
|
||||||
this.receiver = "";
|
|
||||||
try {
|
|
||||||
if (isDimPacket())
|
|
||||||
buf.writeByte(this.dimensionID);
|
|
||||||
buf.writeByte((this.receiver != null) ? this.receiver.length() : 0);
|
|
||||||
for (int i = 0; i < this.receiver.length(); i++)
|
|
||||||
buf.writeChar(this.receiver.charAt(i));
|
|
||||||
buf.writeBoolean((this.point != null));
|
|
||||||
if (this.point != null) {
|
|
||||||
buf.writeInt(this.point.dimension);
|
|
||||||
buf.writeDouble(this.point.x);
|
|
||||||
buf.writeDouble(this.point.y);
|
|
||||||
buf.writeDouble(this.point.z);
|
|
||||||
buf.writeDouble(this.point.range);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -5,40 +5,31 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import ley.modding.dartcraft.client.gui.ContainerClipboard;
|
import ley.modding.dartcraft.client.gui.ContainerClipboard;
|
||||||
import ley.modding.dartcraft.util.EntityUtils;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
public class PacketClipButton extends DartPacket implements IMessage {
|
public class PacketClipButton implements IMessage {
|
||||||
protected int button;
|
protected int button;
|
||||||
|
|
||||||
public PacketClipButton() {}
|
public PacketClipButton() {}
|
||||||
|
|
||||||
public PacketClipButton(EntityPlayer player, int button) {
|
public PacketClipButton(int button) {
|
||||||
this.button = button;
|
this.button = button;
|
||||||
this.receiver = player.getCommandSenderName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean getToClient() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDimPacket() {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void fromBytes(ByteBuf buf) {
|
public void fromBytes(ByteBuf buf) {
|
||||||
super.fromBytes(buf);
|
|
||||||
this.button = buf.readByte();
|
this.button = buf.readByte();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void toBytes(ByteBuf buf) {
|
public void toBytes(ByteBuf buf) {
|
||||||
super.toBytes(buf);
|
|
||||||
buf.writeByte(this.button);
|
buf.writeByte(this.button);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Handler implements IMessageHandler<PacketClipButton, IMessage> {
|
public static class Handler implements IMessageHandler<PacketClipButton, IMessage> {
|
||||||
|
@Override
|
||||||
public IMessage onMessage(PacketClipButton packet, MessageContext ctx) {
|
public IMessage onMessage(PacketClipButton packet, MessageContext ctx) {
|
||||||
EntityPlayer player = EntityUtils.getPlayerByName(packet.getReceiver());
|
EntityPlayer player = ctx.getServerHandler().playerEntity;
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
ContainerClipboard clipboard
|
ContainerClipboard clipboard
|
||||||
= (player.openContainer != null
|
= (player.openContainer != null
|
||||||
|
|
91
src/main/java/ley/modding/dartcraft/network/PacketFX.java
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
package ley.modding.dartcraft.network;
|
||||||
|
|
||||||
|
import cpw.mods.fml.client.FMLClientHandler;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
|
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import ley.modding.dartcraft.util.FXUtils;
|
||||||
|
|
||||||
|
public class PacketFX implements IMessage {
|
||||||
|
public double x;
|
||||||
|
public double y;
|
||||||
|
public double z;
|
||||||
|
|
||||||
|
public Type type;
|
||||||
|
public int subType;
|
||||||
|
public int area;
|
||||||
|
public int amount;
|
||||||
|
|
||||||
|
public PacketFX() {}
|
||||||
|
|
||||||
|
public PacketFX(
|
||||||
|
double x, double y, double z, Type type, int subType, int area, int amount
|
||||||
|
) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.z = z;
|
||||||
|
this.type = type;
|
||||||
|
this.subType = subType;
|
||||||
|
this.area = area;
|
||||||
|
this.amount = amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fromBytes(ByteBuf buf) {
|
||||||
|
this.x = buf.readDouble();
|
||||||
|
this.y = buf.readDouble();
|
||||||
|
this.z = buf.readDouble();
|
||||||
|
|
||||||
|
this.type = Type.fromInt(buf.readInt());
|
||||||
|
this.subType = buf.readInt();
|
||||||
|
this.area = buf.readInt();
|
||||||
|
this.amount = buf.readInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toBytes(ByteBuf buf) {
|
||||||
|
buf.writeDouble(this.x);
|
||||||
|
buf.writeDouble(this.y);
|
||||||
|
buf.writeDouble(this.z);
|
||||||
|
|
||||||
|
buf.writeInt(this.type.ordinal());
|
||||||
|
buf.writeInt(this.subType);
|
||||||
|
buf.writeInt(this.area);
|
||||||
|
buf.writeInt(this.amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static enum Type {
|
||||||
|
TIME;
|
||||||
|
|
||||||
|
public static Type fromInt(int i) {
|
||||||
|
if (i >= 0 && i < Type.values().length)
|
||||||
|
return Type.values()[i];
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Handler implements IMessageHandler<PacketFX, IMessage> {
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IMessage onMessage(PacketFX pkt, MessageContext ctx) {
|
||||||
|
switch (pkt.type) {
|
||||||
|
case TIME:
|
||||||
|
FXUtils.makeTimeEffects(
|
||||||
|
FMLClientHandler.instance().getClientPlayerEntity().worldObj,
|
||||||
|
pkt.x,
|
||||||
|
pkt.y,
|
||||||
|
pkt.z,
|
||||||
|
1,
|
||||||
|
pkt.amount,
|
||||||
|
pkt.area
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,18 +2,25 @@ package ley.modding.dartcraft.proxy;
|
||||||
|
|
||||||
import cpw.mods.fml.client.registry.ClientRegistry;
|
import cpw.mods.fml.client.registry.ClientRegistry;
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import ley.modding.dartcraft.Config;
|
|
||||||
import ley.modding.dartcraft.Dartcraft;
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
import ley.modding.dartcraft.block.DartBlocks;
|
import ley.modding.dartcraft.block.DartBlocks;
|
||||||
import ley.modding.dartcraft.client.renderer.block.PowerOreRenderer;
|
import ley.modding.dartcraft.client.renderer.block.RenderBlockPowerOre;
|
||||||
|
import ley.modding.dartcraft.client.renderer.block.RenderBlockTorch;
|
||||||
import ley.modding.dartcraft.client.renderer.block.RenderTileForceEngine;
|
import ley.modding.dartcraft.client.renderer.block.RenderTileForceEngine;
|
||||||
import ley.modding.dartcraft.client.renderer.entity.RenderColdAnimal;
|
import ley.modding.dartcraft.client.renderer.entity.RenderColdAnimal;
|
||||||
import ley.modding.dartcraft.client.renderer.entity.RenderEntityBottle;
|
import ley.modding.dartcraft.client.renderer.entity.RenderEntityBottle;
|
||||||
|
import ley.modding.dartcraft.client.renderer.entity.RenderEntityFrozenItem;
|
||||||
|
import ley.modding.dartcraft.client.renderer.entity.RenderEntityTime;
|
||||||
import ley.modding.dartcraft.client.renderer.item.RenderItemEngine;
|
import ley.modding.dartcraft.client.renderer.item.RenderItemEngine;
|
||||||
import ley.modding.dartcraft.client.renderer.item.RenderItemForceFlask;
|
import ley.modding.dartcraft.client.renderer.item.RenderItemForceFlask;
|
||||||
import ley.modding.dartcraft.entity.*;
|
import ley.modding.dartcraft.entity.EntityBottle;
|
||||||
|
import ley.modding.dartcraft.entity.EntityColdChicken;
|
||||||
|
import ley.modding.dartcraft.entity.EntityColdCow;
|
||||||
|
import ley.modding.dartcraft.entity.EntityColdPig;
|
||||||
|
import ley.modding.dartcraft.entity.EntityFlyingFlask;
|
||||||
|
import ley.modding.dartcraft.entity.EntityFrozenItem;
|
||||||
|
import ley.modding.dartcraft.entity.EntityTime;
|
||||||
import ley.modding.dartcraft.item.DartItems;
|
import ley.modding.dartcraft.item.DartItems;
|
||||||
import ley.modding.dartcraft.network.DartPacket;
|
|
||||||
import ley.modding.dartcraft.tile.TileEntityForceEngine;
|
import ley.modding.dartcraft.tile.TileEntityForceEngine;
|
||||||
import net.minecraft.client.model.ModelChicken;
|
import net.minecraft.client.model.ModelChicken;
|
||||||
import net.minecraft.client.model.ModelCow;
|
import net.minecraft.client.model.ModelCow;
|
||||||
|
@ -69,8 +76,16 @@ public class ClientProxy extends CommonProxy {
|
||||||
EntityColdPig.class,
|
EntityColdPig.class,
|
||||||
new RenderColdAnimal(new ModelPig(), 0.6f, "textures/entity/coldPig.png")
|
new RenderColdAnimal(new ModelPig(), 0.6f, "textures/entity/coldPig.png")
|
||||||
);
|
);
|
||||||
Config.powerOreRenderID = RenderingRegistry.getNextAvailableRenderId();
|
RenderingRegistry.registerEntityRenderingHandler(
|
||||||
RenderingRegistry.registerBlockHandler(new PowerOreRenderer());
|
EntityTime.class, new RenderEntityTime()
|
||||||
|
);
|
||||||
|
RenderingRegistry.registerEntityRenderingHandler(
|
||||||
|
EntityFrozenItem.class, new RenderEntityFrozenItem()
|
||||||
|
);
|
||||||
|
RenderBlockPowerOre.RI = RenderingRegistry.getNextAvailableRenderId();
|
||||||
|
RenderingRegistry.registerBlockHandler(new RenderBlockPowerOre());
|
||||||
|
RenderBlockTorch.RI = RenderingRegistry.getNextAvailableRenderId();
|
||||||
|
RenderingRegistry.registerBlockHandler(new RenderBlockTorch());
|
||||||
engineRender = new RenderTileForceEngine();
|
engineRender = new RenderTileForceEngine();
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(
|
ClientRegistry.bindTileEntitySpecialRenderer(
|
||||||
TileEntityForceEngine.class, engineRender
|
TileEntityForceEngine.class, engineRender
|
||||||
|
@ -79,13 +94,4 @@ public class ClientProxy extends CommonProxy {
|
||||||
Item.getItemFromBlock(DartBlocks.engine), new RenderItemEngine()
|
Item.getItemFromBlock(DartBlocks.engine), new RenderItemEngine()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sendPacketToServer(DartPacket packet) {
|
|
||||||
try {
|
|
||||||
Dartcraft.channel.sendToServer(packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ import cpw.mods.fml.client.FMLClientHandler;
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||||
import ley.modding.dartcraft.Dartcraft;
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
import ley.modding.dartcraft.client.gui.GuiHandler;
|
import ley.modding.dartcraft.client.gui.GuiHandler;
|
||||||
import ley.modding.dartcraft.network.DartPacket;
|
|
||||||
import ley.modding.dartcraft.util.ForceUpgradeManager;
|
import ley.modding.dartcraft.util.ForceUpgradeManager;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
@ -34,6 +33,4 @@ public class CommonProxy {
|
||||||
ForceUpgradeManager.load();
|
ForceUpgradeManager.load();
|
||||||
NetworkRegistry.INSTANCE.registerGuiHandler(Dartcraft.instance, new GuiHandler());
|
NetworkRegistry.INSTANCE.registerGuiHandler(Dartcraft.instance, new GuiHandler());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendPacketToServer(DartPacket packet) {}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,276 @@
|
||||||
|
package ley.modding.dartcraft.tile;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.Loader;
|
||||||
|
import ley.modding.dartcraft.Config;
|
||||||
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
|
import ley.modding.dartcraft.entity.EntityTime;
|
||||||
|
import ley.modding.dartcraft.util.DartUtils;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.boss.EntityWither;
|
||||||
|
import net.minecraft.entity.monster.EntityGhast;
|
||||||
|
import net.minecraft.entity.monster.EntityMob;
|
||||||
|
import net.minecraft.entity.monster.EntitySlime;
|
||||||
|
import net.minecraft.entity.monster.EntityWitch;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.network.NetworkManager;
|
||||||
|
import net.minecraft.network.Packet;
|
||||||
|
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraft.util.DamageSource;
|
||||||
|
|
||||||
|
public class TileEntityForceTorch extends TileEntity {
|
||||||
|
public NBTTagCompound upgrades = new NBTTagCompound();
|
||||||
|
public byte color = 0;
|
||||||
|
public int timeType = 1;
|
||||||
|
private int timeout;
|
||||||
|
private int maxTimeout;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canUpdate() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity() {
|
||||||
|
if (Dartcraft.proxy.isSimulating(this.worldObj) && this.upgrades != null
|
||||||
|
&& !this.upgrades.hasNoTags()) {
|
||||||
|
++this.timeout;
|
||||||
|
if (this.timeout >= this.maxTimeout) {
|
||||||
|
this.timeout = 0;
|
||||||
|
this.maxTimeout = Config.torchFreq
|
||||||
|
+ (int) (this.worldObj.rand.nextFloat() * (float) Config.torchFreq
|
||||||
|
/ 2.0F);
|
||||||
|
int time;
|
||||||
|
if (this.upgrades.hasKey("Light")) {
|
||||||
|
time = this.upgrades.getInteger("Light");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.upgrades.hasKey("Healing")) {
|
||||||
|
try {
|
||||||
|
AxisAlignedBB var13 = AxisAlignedBB.getBoundingBox(
|
||||||
|
(double) this.xCoord - (double) Config.torchDist,
|
||||||
|
(double) this.yCoord - (double) Config.torchDist,
|
||||||
|
(double) this.zCoord - (double) Config.torchDist,
|
||||||
|
(double) this.xCoord + (double) Config.torchDist,
|
||||||
|
(double) this.yCoord + (double) Config.torchDist,
|
||||||
|
(double) this.zCoord + (double) Config.torchDist
|
||||||
|
);
|
||||||
|
List<EntityLivingBase> j = this.worldObj.getEntitiesWithinAABB(
|
||||||
|
EntityLivingBase.class, var13
|
||||||
|
);
|
||||||
|
boolean k = false;
|
||||||
|
int tile = 1;
|
||||||
|
|
||||||
|
for (EntityLivingBase entity : j) {
|
||||||
|
if (entity != null) {
|
||||||
|
if (!entity.isEntityUndead()
|
||||||
|
&& !(entity instanceof EntityGhast)) {
|
||||||
|
float entityUpgrades
|
||||||
|
= (float) entity.getAttributeMap()
|
||||||
|
.getAttributeInstanceByName(
|
||||||
|
"generic.maxHealth"
|
||||||
|
)
|
||||||
|
.getAttributeValue();
|
||||||
|
if (entity.getHealth() < entityUpgrades) {
|
||||||
|
entity.heal((float) (tile * 2));
|
||||||
|
k = true;
|
||||||
|
// TODO
|
||||||
|
//PacketHelper.sendCureFXToClients(
|
||||||
|
// entity, 8 * tile
|
||||||
|
//);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// TODO
|
||||||
|
//entity.attackEntityFrom(PunishDamage.instance, 2.0F);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (k) {
|
||||||
|
this.worldObj.playSoundEffect(
|
||||||
|
(double) this.xCoord,
|
||||||
|
(double) this.yCoord,
|
||||||
|
(double) this.zCoord,
|
||||||
|
"dartcraft:cure",
|
||||||
|
0.5F,
|
||||||
|
DartUtils.randomPitch()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception var12) {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.upgrades.hasKey("Bane")) {
|
||||||
|
try {
|
||||||
|
AxisAlignedBB var13 = AxisAlignedBB.getBoundingBox(
|
||||||
|
(double) this.xCoord - (double) Config.torchDist,
|
||||||
|
(double) this.yCoord - (double) Config.torchDist,
|
||||||
|
(double) this.zCoord - (double) Config.torchDist,
|
||||||
|
(double) this.xCoord + (double) Config.torchDist,
|
||||||
|
(double) this.yCoord + (double) Config.torchDist,
|
||||||
|
(double) this.zCoord + (double) Config.torchDist
|
||||||
|
);
|
||||||
|
List<EntityLivingBase> j = this.worldObj.getEntitiesWithinAABB(
|
||||||
|
EntityLivingBase.class, var13
|
||||||
|
);
|
||||||
|
boolean k = false;
|
||||||
|
|
||||||
|
for (EntityLivingBase var18 : j) {
|
||||||
|
if (var18 != null
|
||||||
|
&& (var18 instanceof EntityMob
|
||||||
|
|| var18 instanceof EntitySlime
|
||||||
|
|| var18 instanceof EntityGhast)
|
||||||
|
&& !(var18 instanceof EntityWitch)
|
||||||
|
&& !(var18 instanceof EntityWither)) {
|
||||||
|
this.worldObj.removeEntity(var18);
|
||||||
|
k = true;
|
||||||
|
// TODO
|
||||||
|
//PacketHelper.sendChangeFXToClients(var18, 16);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (k) {
|
||||||
|
this.worldObj.playSoundEffect(
|
||||||
|
(double) this.xCoord,
|
||||||
|
(double) this.yCoord,
|
||||||
|
(double) this.zCoord,
|
||||||
|
"random.pop",
|
||||||
|
1.0F,
|
||||||
|
DartUtils.randomPitch()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (Exception var11) {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.upgrades.hasKey("Heat")) {
|
||||||
|
try {
|
||||||
|
AxisAlignedBB var13 = AxisAlignedBB.getBoundingBox(
|
||||||
|
(double) this.xCoord - (double) Config.torchDist,
|
||||||
|
(double) this.yCoord - (double) Config.torchDist,
|
||||||
|
(double) this.zCoord - (double) Config.torchDist,
|
||||||
|
(double) this.xCoord + (double) Config.torchDist,
|
||||||
|
(double) this.yCoord + (double) Config.torchDist,
|
||||||
|
(double) this.zCoord + (double) Config.torchDist
|
||||||
|
);
|
||||||
|
List<EntityLivingBase> j = this.worldObj.getEntitiesWithinAABB(
|
||||||
|
EntityLivingBase.class, var13
|
||||||
|
);
|
||||||
|
boolean k = false;
|
||||||
|
int tile = 1;
|
||||||
|
|
||||||
|
for (EntityLivingBase entity : j) {
|
||||||
|
if (entity != null && !entity.isImmuneToFire()) {
|
||||||
|
NBTTagCompound var20 = new NBTTagCompound();
|
||||||
|
if (entity instanceof EntityPlayer) {
|
||||||
|
EntityPlayer player = (EntityPlayer) entity;
|
||||||
|
// TODO: WTF
|
||||||
|
//var20 = SocketHelper.getArmorCompound(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!var20.hasKey("Heat")
|
||||||
|
|| var20.getInteger("Heat") < 3) {
|
||||||
|
entity.setFire(tile);
|
||||||
|
entity.attackEntityFrom(
|
||||||
|
DamageSource.inFire, 0.5F * (float) tile
|
||||||
|
);
|
||||||
|
k = true;
|
||||||
|
// TODO
|
||||||
|
//PacketHelper.sendHeatFXToClients(entity, 8 * tile,
|
||||||
|
//0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (k) {
|
||||||
|
this.worldObj.playSoundEffect(
|
||||||
|
(double) this.xCoord,
|
||||||
|
(double) this.yCoord,
|
||||||
|
(double) this.zCoord,
|
||||||
|
"dartcraft:ignite",
|
||||||
|
1.0F,
|
||||||
|
DartUtils.randomPitch()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (Exception var10) {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.upgrades.hasKey("Repair") && Loader.isModLoaded("Thaumcraft")) {
|
||||||
|
try {
|
||||||
|
for (time = -Config.torchDist; time < Config.torchDist; ++time) {
|
||||||
|
for (int var15 = -Config.torchDist; var15 < Config.torchDist;
|
||||||
|
++var15) {
|
||||||
|
for (int var19 = -Config.torchDist;
|
||||||
|
var19 < Config.torchDist;
|
||||||
|
++var19) {
|
||||||
|
TileEntity var17 = this.worldObj.getTileEntity(
|
||||||
|
this.xCoord + time,
|
||||||
|
this.yCoord + var15,
|
||||||
|
this.zCoord + var19
|
||||||
|
);
|
||||||
|
// TODO: TC
|
||||||
|
//if (var17 != null
|
||||||
|
// && ThaumCraftIntegration.isDeconstructor(var17))
|
||||||
|
// { ThaumCraftIntegration.setDeconAspect(var17);
|
||||||
|
// break label110;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception var9) {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.upgrades.hasKey("Time") && Config.timeUpgradeTorch) {
|
||||||
|
EntityTime var14 = new EntityTime(this.worldObj, this.maxTimeout - 2);
|
||||||
|
var14.posX = (double) this.xCoord + 0.5D;
|
||||||
|
var14.posY = (double) this.yCoord + 0.5D;
|
||||||
|
var14.posZ = (double) this.zCoord + 0.5D;
|
||||||
|
var14.setType(this.timeType, false);
|
||||||
|
this.worldObj.spawnEntityInWorld(var14);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Packet getDescriptionPacket() {
|
||||||
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
|
|
||||||
|
this.writeToNBT(nbt);
|
||||||
|
|
||||||
|
return new S35PacketUpdateTileEntity(
|
||||||
|
this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata(), nbt
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDataPacket(NetworkManager arg0, S35PacketUpdateTileEntity arg1) {
|
||||||
|
this.readFromNBT(arg1.func_148857_g());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound comp) {
|
||||||
|
super.readFromNBT(comp);
|
||||||
|
this.upgrades = comp.getCompoundTag("upgrades");
|
||||||
|
this.color = comp.getByte("color");
|
||||||
|
this.timeType = comp.getByte("timeType");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound comp) {
|
||||||
|
super.writeToNBT(comp);
|
||||||
|
comp.setTag("upgrades", this.upgrades);
|
||||||
|
comp.setByte("color", this.color);
|
||||||
|
comp.setByte("timeType", (byte) this.timeType);
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import ley.modding.dartcraft.Dartcraft;
|
import ley.modding.dartcraft.Dartcraft;
|
||||||
import ley.modding.dartcraft.client.fx.FXDisney;
|
import ley.modding.dartcraft.client.fx.FXDisney;
|
||||||
|
import ley.modding.dartcraft.client.fx.FXTime;
|
||||||
import ley.modding.dartcraft.proxy.CommonProxy;
|
import ley.modding.dartcraft.proxy.CommonProxy;
|
||||||
import net.minecraft.client.particle.EffectRenderer;
|
import net.minecraft.client.particle.EffectRenderer;
|
||||||
import net.minecraft.client.particle.EntityFireworkStarterFX;
|
import net.minecraft.client.particle.EntityFireworkStarterFX;
|
||||||
|
@ -503,33 +504,31 @@ public class FXUtils {
|
||||||
for (int fx = -area; fx < area + 1; ++fx) {
|
for (int fx = -area; fx < area + 1; ++fx) {
|
||||||
for (int k = -area; k < area + 1; ++k) {
|
for (int k = -area; k < area + 1; ++k) {
|
||||||
for (int l = 0; l < num; ++l) {
|
for (int l = 0; l < num; ++l) {
|
||||||
// TODO
|
FXTime fx1 = new FXTime(
|
||||||
//FXTime fx1 = new FXTime(
|
world,
|
||||||
// world,
|
x + (double) i + world.rand.nextDouble()
|
||||||
// x + (double) i + world.rand.nextDouble()
|
- world.rand.nextDouble(),
|
||||||
// - world.rand.nextDouble(),
|
y + (double) fx + world.rand.nextDouble()
|
||||||
// y + (double) fx + world.rand.nextDouble()
|
- world.rand.nextDouble(),
|
||||||
// - world.rand.nextDouble(),
|
z + (double) k + world.rand.nextDouble()
|
||||||
// z + (double) k + world.rand.nextDouble()
|
- world.rand.nextDouble(),
|
||||||
// - world.rand.nextDouble(),
|
type
|
||||||
// type
|
);
|
||||||
//);
|
renderer.addEffect(fx1);
|
||||||
//renderer.addEffect(fx1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < num; ++i) {
|
for (i = 0; i < num; ++i) {
|
||||||
// TODO
|
FXTime var16 = new FXTime(
|
||||||
//FXTime var16 = new FXTime(
|
world,
|
||||||
// world,
|
x + world.rand.nextDouble() - world.rand.nextDouble(),
|
||||||
// x + world.rand.nextDouble() - world.rand.nextDouble(),
|
y + world.rand.nextDouble() - world.rand.nextDouble(),
|
||||||
// y + world.rand.nextDouble() - world.rand.nextDouble(),
|
z + world.rand.nextDouble() - world.rand.nextDouble(),
|
||||||
// z + world.rand.nextDouble() - world.rand.nextDouble(),
|
type
|
||||||
// type
|
);
|
||||||
//);
|
renderer.addEffect(var16);
|
||||||
//renderer.addEffect(var16);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
65
src/main/java/ley/modding/dartcraft/util/UpgradeHelper.java
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
package ley.modding.dartcraft.util;
|
||||||
|
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
|
public class UpgradeHelper {
|
||||||
|
public static NBTTagCompound getUpgradeCompound(ItemStack stack) {
|
||||||
|
return stack != null && stack.hasTagCompound()
|
||||||
|
&& stack.getTagCompound().hasKey("upgrades")
|
||||||
|
? stack.getTagCompound().getCompoundTag("upgrades")
|
||||||
|
: new NBTTagCompound();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack setUpgradeData(ItemStack stack, String type, int level) {
|
||||||
|
if (stack == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (!stack.hasTagCompound())
|
||||||
|
stack.setTagCompound(new NBTTagCompound());
|
||||||
|
|
||||||
|
if (!stack.getTagCompound().hasKey("upgrades"))
|
||||||
|
stack.getTagCompound().setTag("upgrades", new NBTTagCompound());
|
||||||
|
|
||||||
|
NBTTagCompound upgrades = stack.getTagCompound().getCompoundTag("upgrades");
|
||||||
|
upgrades.setInteger(type, level);
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static NBTTagCompound getDartData(Entity entity) {
|
||||||
|
if (entity == null)
|
||||||
|
return new NBTTagCompound();
|
||||||
|
NBTTagCompound entdat = entity.getEntityData();
|
||||||
|
if (entdat == null)
|
||||||
|
return new NBTTagCompound();
|
||||||
|
|
||||||
|
NBTTagCompound dartdat = entdat.getCompoundTag("dartcraft");
|
||||||
|
|
||||||
|
// getCompoundTag may create a new tag, here we make sure it is also contained
|
||||||
|
// within entdat.
|
||||||
|
entdat.setTag("dartcraft", dartdat);
|
||||||
|
|
||||||
|
return dartdat;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public static NBTTagCompound getPlayerEquippedComp(EntityPlayer player) {
|
||||||
|
// if (player == null)
|
||||||
|
// return new NBTTagCompound();
|
||||||
|
|
||||||
|
// ItemStack stack = player.getCurrentEquippedItem();
|
||||||
|
// NBTTagCompound upgrades = new NBTTagCompound();
|
||||||
|
// if (stack != null) {
|
||||||
|
// if (stack.getItem() instanceof ItemForceSword) {
|
||||||
|
// upgrades = (NBTTagCompound) getUpgradeCompound(stack).copy();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (stack.getItem() instanceof ItemPowerSaw) {
|
||||||
|
// upgrades = (NBTTagCompound)
|
||||||
|
// SocketHelper.getSocketCompound(stack).copy();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return upgrades;
|
||||||
|
//}
|
||||||
|
}
|
|
@ -38,6 +38,7 @@ tile.forcebrick12.name=Light Blue Force Brick
|
||||||
tile.forcebrick13.name=Magenta Force Brick
|
tile.forcebrick13.name=Magenta Force Brick
|
||||||
tile.forcebrick14.name=Orange Force Brick
|
tile.forcebrick14.name=Orange Force Brick
|
||||||
tile.forcebrick15.name=White Force Brick
|
tile.forcebrick15.name=White Force Brick
|
||||||
|
|
||||||
tile.forceslab0.name=Black Force Slab
|
tile.forceslab0.name=Black Force Slab
|
||||||
tile.forceslab1.name=Red Force Slab
|
tile.forceslab1.name=Red Force Slab
|
||||||
tile.forceslab2.name=Green Force Slab
|
tile.forceslab2.name=Green Force Slab
|
||||||
|
@ -55,6 +56,7 @@ tile.forceslab13.name=Magenta Force Slab
|
||||||
tile.forceslab14.name=Orange Force Slab
|
tile.forceslab14.name=Orange Force Slab
|
||||||
tile.forceslab15.name=White Force Slab
|
tile.forceslab15.name=White Force Slab
|
||||||
tile.forceslab16.name=Wooden Force Slab
|
tile.forceslab16.name=Wooden Force Slab
|
||||||
|
|
||||||
tile.forcestairs0.name=Black Force Stairs
|
tile.forcestairs0.name=Black Force Stairs
|
||||||
tile.forcestairs1.name=Red Force Stairs
|
tile.forcestairs1.name=Red Force Stairs
|
||||||
tile.forcestairs2.name=Green Force Stairs
|
tile.forcestairs2.name=Green Force Stairs
|
||||||
|
@ -73,4 +75,27 @@ tile.forcestairs14.name=Orange Force Stairs
|
||||||
tile.forcestairs15.name=White Force Stairs
|
tile.forcestairs15.name=White Force Stairs
|
||||||
tile.forcestairs16.name=Wooden Force Stairs
|
tile.forcestairs16.name=Wooden Force Stairs
|
||||||
|
|
||||||
|
tile.forcetorch0.name=Black Force Torch
|
||||||
|
tile.forcetorch1.name=Red Force Torch
|
||||||
|
tile.forcetorch2.name=Green Force Torch
|
||||||
|
tile.forcetorch3.name=Brown Force Torch
|
||||||
|
tile.forcetorch4.name=Blue Force Torch
|
||||||
|
tile.forcetorch5.name=Purple Force Torch
|
||||||
|
tile.forcetorch6.name=Cyan Force Torch
|
||||||
|
tile.forcetorch7.name=Light Gray Force Torch
|
||||||
|
tile.forcetorch8.name=Gray Force Torch
|
||||||
|
tile.forcetorch9.name=Pink Force Torch
|
||||||
|
tile.forcetorch10.name=Lime Force Torch
|
||||||
|
tile.forcetorch11.name=Yellow Force Torch
|
||||||
|
tile.forcetorch12.name=Light Blue Force Torch
|
||||||
|
tile.forcetorch13.name=Magenta Force Torch
|
||||||
|
tile.forcetorch14.name=Orange Force Torch
|
||||||
|
tile.forcetorch15.name=White Force Torch
|
||||||
|
tile.forcetorch16.name=Heat Torch
|
||||||
|
tile.forcetorch17.name=Healing Torch
|
||||||
|
tile.forcetorch18.name=Bane Torch
|
||||||
|
tile.forcetorch19.name=Camo Torch
|
||||||
|
tile.forcetorch20.name=Aspect Torch
|
||||||
|
tile.forcetorch21.name=Time Torch
|
||||||
|
|
||||||
itemGroup.dartcraft=Dartcraft
|
itemGroup.dartcraft=Dartcraft
|
||||||
|
|
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 3 KiB |