Merge remote-tracking branch 'refs/remotes/origin/1.10-WIP' into 1.10-Pockets

# Conflicts:
#	src/main/java/com/zixiken/dimdoors/items/ItemDoorBase.java
#	src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java

Conflicts were small and are resolved
This commit is contained in:
Mathijs Riezebos 2017-01-25 14:16:48 +01:00
commit 10ddb6f825
21 changed files with 210 additions and 58 deletions

View file

@ -24,9 +24,6 @@ public abstract class DDProxyCommon implements IDDProxy {
ModBlocks.registerBlocks();
ModItems.registerItems();
ModelManager.registerModelVariants();
ModelManager.addCustomStateMappers();
GameRegistry.registerTileEntity(TileEntityDimDoor.class, "TileEntityDimDoor");
GameRegistry.registerTileEntity(TileEntityRift.class, "TileEntityRift");
GameRegistry.registerTileEntity(TileEntityTransTrapdoor.class, "TileEntityDimHatch");
@ -36,7 +33,6 @@ public abstract class DDProxyCommon implements IDDProxy {
@Override
public void onInitialization(FMLInitializationEvent event) {
CraftingManager.registerRecipes();
ModelManager.registerModels();
}
public void updateDoorTE(BlockDimDoorBase door, World world, BlockPos pos) {

View file

@ -9,6 +9,7 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.translation.I18n;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.FMLLog;
import net.minecraftforge.fml.common.Mod;
@ -17,6 +18,8 @@ import net.minecraftforge.fml.common.event.*;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
@Mod(modid = DimDoors.MODID, name = "Dimensional Doors", version = DimDoors.VERSION)
public class DimDoors {
@ -77,4 +80,14 @@ public class DimDoors {
public static void log(Class classFiredFrom, String text) {
FMLLog.info("[DimDoors] " + text + " (" + classFiredFrom.toString() + " )", 0);
}
public static void translateAndAdd(String key, List<String> list) {
for (int i = 0; i < 10; i++) {
if(I18n.canTranslate(key+Integer.toString(i))) {
String line = I18n.translateToLocal(key + Integer.toString(i));
list.add(line);
} else
break;
}
}
}

View file

@ -1,6 +1,8 @@
package com.zixiken.dimdoors.client;
import com.zixiken.dimdoors.CraftingManager;
import com.zixiken.dimdoors.DDProxyCommon;
import com.zixiken.dimdoors.ModelManager;
import com.zixiken.dimdoors.tileentities.TileEntityDimDoor;
import com.zixiken.dimdoors.tileentities.TileEntityRift;
import com.zixiken.dimdoors.tileentities.TileEntityTransTrapdoor;
@ -9,6 +11,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@SuppressWarnings({"MethodCallSideOnly", "NewExpressionSideOnly"})
@ -17,9 +20,19 @@ public class DDProxyClient extends DDProxyCommon {
@Override
public void onPreInitialization(FMLPreInitializationEvent event) {
super.onPreInitialization(event);
ModelManager.registerModelVariants();
ModelManager.addCustomStateMappers();
registerRenderers();
}
@Override
public void onInitialization(FMLInitializationEvent event) {
super.onInitialization(event);
ModelManager.registerModels();
}
public void registerRenderers() {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDimDoor.class, new RenderDimDoor());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTransTrapdoor.class, new RenderTransTrapdoor());

View file

@ -9,6 +9,8 @@ import net.minecraft.init.Items;
import net.minecraft.item.ItemDoor;
import net.minecraft.item.ItemStack;
import static com.zixiken.dimdoors.DimDoors.translateAndAdd;
public class ItemDimDoor extends ItemDoorBase {
public static final String ID = "itemDimDoor";

View file

@ -7,6 +7,8 @@ import com.zixiken.dimdoors.blocks.ModBlocks;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import static com.zixiken.dimdoors.DimDoors.translateAndAdd;
public class ItemDimDoorGold extends ItemDoorBase {
public static final String ID = "itemDimDoorGold";

View file

@ -7,6 +7,8 @@ import com.zixiken.dimdoors.blocks.ModBlocks;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import static com.zixiken.dimdoors.DimDoors.translateAndAdd;
public class ItemDimDoorPersonal extends ItemDoorBase {
public static final String ID = "itemDimDoorQuartz";

View file

@ -6,6 +6,7 @@ import com.zixiken.dimdoors.blocks.BlockDimDoorBase;
import com.zixiken.dimdoors.blocks.ModBlocks;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.translation.I18n;
public class ItemDimDoorUnstable extends ItemDoorBase {
@ -19,7 +20,7 @@ public class ItemDimDoorUnstable extends ItemDoorBase {
@Override
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced) {
//tooltip.add(StatCollector.translateToLocal("info.chaosDoor"));
tooltip.add(I18n.translateToLocal("info.chaosDoor"));
}
@Override

View file

@ -10,6 +10,8 @@ import net.minecraft.init.Items;
import net.minecraft.item.ItemDoor;
import net.minecraft.item.ItemStack;
import static com.zixiken.dimdoors.DimDoors.translateAndAdd;
public class ItemDimDoorWarp extends ItemDoorBase {
public static final String ID = "itemDimDoorWarp";

View file

@ -14,6 +14,7 @@ import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemDoor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.*;
@ -21,6 +22,7 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.text.translation.I18n;
import net.minecraft.world.World;
import net.minecraft.block.SoundType;
import static net.minecraft.item.ItemDoor.placeDoor;
@ -65,7 +67,7 @@ public abstract class ItemDoorBase extends ItemDoor {
if (worldIn.isRemote) {
return new ActionResult(EnumActionResult.FAIL, stack);
}
RayTraceResult hit = ItemDoorBase.doRayTrace(worldIn, playerIn, true);
RayTraceResult hit = rayTrace(worldIn, playerIn, true);
if (hit != null) {
BlockPos pos = hit.getBlockPos();
if (worldIn.getBlockState(pos).getBlock() == ModBlocks.blockRift) {
@ -133,43 +135,4 @@ public abstract class ItemDoorBase extends ItemDoor {
return EnumActionResult.FAIL;
}
}
/**
* Copied from minecraft Item.class TODO we probably can improve this
* //@todo
*
* @param world
* @param player
* @param useLiquids
* @return
*/
protected static RayTraceResult doRayTrace(World world, EntityPlayer player, boolean useLiquids) {
float f = player.rotationPitch;
float f1 = player.rotationYaw;
double d0 = player.posX;
double d1 = player.posY + (double) player.getEyeHeight();
double d2 = player.posZ;
Vec3d vec3 = new Vec3d(d0, d1, d2);
float f2 = MathHelper.cos(-f1 * 0.017453292F - (float) Math.PI);
float f3 = MathHelper.sin(-f1 * 0.017453292F - (float) Math.PI);
float f4 = -MathHelper.cos(-f * 0.017453292F);
float f5 = MathHelper.sin(-f * 0.017453292F);
float f6 = f3 * f4;
float f7 = f2 * f4;
double d3 = 5.0D;
if (player instanceof EntityPlayerMP) {
d3 = ((EntityPlayerMP) player).interactionManager.getBlockReachDistance();
}
Vec3d vec31 = vec3.addVector((double) f6 * d3, (double) f5 * d3, (double) f7 * d3);
return world.rayTraceBlocks(vec3, vec31, useLiquids, !useLiquids, false);
}
public void translateAndAdd(String key, List<String> list) {
for (int i = 0; i < 10; i++) {
/*if(StatCollector.canTranslate(key+Integer.toString(i))) {
String line = StatCollector.translateToLocal(key + Integer.toString(i));
list.add(line);
} else */ break;
}
}
}

View file

@ -0,0 +1,38 @@
package com.zixiken.dimdoors.items;
import com.flowpowered.math.vector.Vector3d;
import com.zixiken.dimdoors.DimDoors;
import com.zixiken.dimdoors.blocks.ModBlocks;
import com.zixiken.dimdoors.tileentities.TileEntityRift;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.*;
import net.minecraft.util.math.*;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
import static com.zixiken.dimdoors.DimDoors.translateAndAdd;
public class ItemLinkSignature extends Item {
public static final String ID = "itemLinkSignature";
public ItemLinkSignature() {
super();
setCreativeTab(DimDoors.dimDoorsCreativeTab);
setUnlocalizedName(ID);
setRegistryName(ID);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced) {
translateAndAdd("info.riftSignature.unbound", list);
}
}

View file

@ -1,7 +1,31 @@
package com.zixiken.dimdoors.items;
import com.zixiken.dimdoors.DimDoors;
import com.zixiken.dimdoors.blocks.BlockDimDoor;
import com.zixiken.dimdoors.blocks.BlockDimDoorTransient;
import com.zixiken.dimdoors.blocks.ModBlocks;
import com.zixiken.dimdoors.shared.Location;
import com.zixiken.dimdoors.shared.RayTraceHelper;
import com.zixiken.dimdoors.shared.RiftRegistry;
import com.zixiken.dimdoors.shared.TeleportHelper;
import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
import com.zixiken.dimdoors.tileentities.TileEntityDimDoor;
import com.zixiken.dimdoors.tileentities.TileEntityRift;
import net.minecraft.block.BlockDoor;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.*;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
/**
* Created by Jared Johnson on 1/20/2017.
@ -10,9 +34,59 @@ public class ItemRiftBlade extends ItemSword {
public static final String ID = "itemRiftBlade";
public ItemRiftBlade() {
super(ToolMaterial.IRON);
super(ToolMaterial.DIAMOND);
setCreativeTab(DimDoors.dimDoorsCreativeTab);
setUnlocalizedName(ID);
setRegistryName(ID);
}
@Override
@SideOnly(Side.CLIENT)
public boolean hasEffect(ItemStack par1ItemStack) {
return true;
}
/**
* Return whether this item is repairable in an anvil.
*/
@Override
public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) {
return ModItems.itemStableFabric == repair.getItem();
}
@Override
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) {
RayTraceResult hit = rayTrace(world, player, true);
if (RayTraceHelper.isRift(hit, world)) {
TileEntityRift rift = (TileEntityRift) world.getTileEntity(hit.getBlockPos());
ItemDoorBase.placeDoor(world, hit.getBlockPos().down(2), EnumFacing.fromAngle((double) player.rotationYaw), ModBlocks.blockDimDoorTransient, false);
DDTileEntityBase newTileEntityDimDoor = (DDTileEntityBase) world.getTileEntity(hit.getBlockPos());
if (rift instanceof DDTileEntityBase) { //
DDTileEntityBase oldRift = (DDTileEntityBase) rift;
newTileEntityDimDoor.loadDataFrom(oldRift);
} else {
newTileEntityDimDoor.register();
}
if (newTileEntityDimDoor instanceof TileEntityDimDoor) {
TileEntityDimDoor tileEntityDimDoor = (TileEntityDimDoor) newTileEntityDimDoor;
tileEntityDimDoor.orientation
= newTileEntityDimDoor.getWorld().getBlockState(newTileEntityDimDoor.getPos()).getValue(BlockDimDoor.FACING).getOpposite();
//storing the orientation inside the tile-entity, because that thing can actually save the orientation in the worldsave, unlike the block itself, which fucks up somehow
}
return new ActionResult<ItemStack>(EnumActionResult.PASS, stack);
} if(RayTraceHelper.isLivingEntity(hit)) {
TeleportHelper.teleport(player, new Location(world, hit.getBlockPos()));
return new ActionResult<ItemStack>(EnumActionResult.PASS, stack);
}
return new ActionResult<ItemStack>(EnumActionResult.FAIL, stack);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced) {
DimDoors.translateAndAdd("info.riftblade", list);
}
}

View file

@ -49,7 +49,7 @@ public class ItemRiftConnectionTool extends ItemTool {
stack.setTagCompound(compound);
}
RayTraceResult hit = ItemDoorBase.doRayTrace(worldIn, playerIn, true);
RayTraceResult hit = rayTrace(worldIn, playerIn, true);
if (hit != null && worldIn.getTileEntity(hit.getBlockPos()) instanceof DDTileEntityBase) {
DDTileEntityBase rift = (DDTileEntityBase) worldIn.getTileEntity(hit.getBlockPos());
if (playerIn.isSneaking()) {

View file

@ -0,0 +1,4 @@
package com.zixiken.dimdoors.items;
public class ItemRiftRemover {
}

View file

@ -0,0 +1,4 @@
package com.zixiken.dimdoors.items;
public class ItemStablizedRiftSig {
}

View file

@ -0,0 +1,21 @@
package com.zixiken.dimdoors.shared;
import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
import com.zixiken.dimdoors.tileentities.TileEntityRift;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.World;
public class RayTraceHelper {
public static boolean isRift(RayTraceResult hit, World world) {
return isNotNull(hit) && hit.typeOfHit == RayTraceResult.Type.BLOCK && world.getTileEntity(hit.getBlockPos()) instanceof TileEntityRift;
}
public static boolean isLivingEntity(RayTraceResult hit) {
return isNotNull(hit) && hit.typeOfHit == RayTraceResult.Type.ENTITY && hit.entityHit instanceof EntityLivingBase;
}
private static boolean isNotNull(RayTraceResult hit) {
return hit != null;
}
}

View file

@ -25,7 +25,7 @@ public class TeleportHelper extends Teleporter {
}
public static boolean teleport(Entity entity, Location newLocation) {
if (entity instanceof EntityPlayerSP) {
if (DimDoors.isClient()) {
//DimDoors.log(TeleportHelper.class, "Not teleporting, because EntityPlayerSP.");
return false;
}

View file

@ -15,6 +15,8 @@ public abstract class DDTileEntityBase extends TileEntity {
private boolean isPaired = false;
private int riftID = -1; //should not start at 0
private int pairedRiftID = -1;
private boolean isInPocket = false;
private int pocketID = -1;
/**
*
@ -65,6 +67,8 @@ public abstract class DDTileEntityBase extends TileEntity {
isPaired = nbt.getBoolean("isPaired");
riftID = nbt.getInteger("riftID");
pairedRiftID = nbt.getInteger("pairedRiftID");
isInPocket = nbt.getBoolean("isInPocket");
pocketID = nbt.getInteger("pocketID");
} catch (Exception e) {
}
register(); //only actually gets registered if riftID == -1
@ -76,6 +80,8 @@ public abstract class DDTileEntityBase extends TileEntity {
nbt.setBoolean("isPaired", this.isPaired);
nbt.setInteger("riftID", this.riftID);
nbt.setInteger("pairedRiftID", this.pairedRiftID);
nbt.setBoolean("isInPocket", this.isInPocket);
nbt.setInteger("pocketID", this.pocketID);
return nbt;
}

View file

@ -14,11 +14,8 @@ public class TileEntityDimDoor extends DDTileEntityBase {
public boolean doorIsOpen = false;
public EnumFacing orientation = EnumFacing.SOUTH;
public boolean hasExit = false;
public byte lockStatus = 1;
public boolean isDungeonChainLink = false;
public boolean hasGennedPair = false;
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
@ -26,9 +23,7 @@ public class TileEntityDimDoor extends DDTileEntityBase {
try {
this.doorIsOpen = nbt.getBoolean("doorIsOpen");
this.orientation = EnumFacing.getFront(nbt.getInteger("orientation"));
this.hasExit = nbt.getBoolean("hasExit");
this.isDungeonChainLink = nbt.getBoolean("isDungeonChainLink");
this.hasGennedPair = nbt.getBoolean("hasGennedPair");
this.lockStatus = nbt.getByte("lockStatus");
} catch (Exception e) {
}
}
@ -38,10 +33,8 @@ public class TileEntityDimDoor extends DDTileEntityBase {
super.writeToNBT(nbt);
nbt.setBoolean("doorIsOpen", this.doorIsOpen);
nbt.setBoolean("hasExit", this.hasExit);
nbt.setInteger("orientation", this.orientation.getIndex());
nbt.setBoolean("isDungeonChainLink", isDungeonChainLink);
nbt.setBoolean("hasGennedPair", hasGennedPair);
nbt.setByte("lockStatus", lockStatus);
return nbt;
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/handheld",
"textures": {
"layer0": "dimdoors:items/itemLinkSignature"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/handheld",
"textures": {
"layer0": "dimdoors:items/itemRiftRemover"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/handheld",
"textures": {
"layer0": "dimdoors:items/itemStablizedRiftSig"
}
}