Merge remote-tracking branch 'refs/remotes/origin/WIP'

This commit is contained in:
Mathijs Riezebos 2017-01-13 01:09:02 +01:00
commit d72d015e16
9 changed files with 155 additions and 48 deletions

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<gradle-project-properties>
<!--DO NOT EDIT THIS FILE! - Used by the Gradle plugin of NetBeans.-->
<source-level>1.8</source-level>
<built-in-tasks>
<task>
<display-name>run</display-name>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<gradle-project-properties>
<!--DO NOT EDIT THIS FILE! - Used by the Gradle plugin of NetBeans.-->
<auxiliary>
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<editor-bookmarks lastBookmarkId="0" xmlns="http://www.netbeans.org/ns/editor-bookmarks/2"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/RiftRegistry.java</file>
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java</file>
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/DDSavedData.java</file>
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/DimDoors.java</file>
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/server/DDProxyServer.java</file>
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/Pocket.java</file>
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/DDProxyCommon.java</file>
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/RiftSavedData.java</file>
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/shared/Location.java</file>
</group>
</open-files>
</auxiliary>
</gradle-project-properties>

View file

@ -5,11 +5,9 @@
*/
package com.zixiken.dimdoors.shared;
import com.zixiken.dimdoors.DimDoors;
import java.io.File;
import net.minecraft.world.World;
import net.minecraft.world.WorldSavedData;
import net.minecraftforge.fml.common.FMLCommonHandler;
/**
*

View file

@ -0,0 +1,60 @@
package com.zixiken.dimdoors.shared;
import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
/**
*
* @author Robijnvogel
*/
public class Location {
public int dimensionID;
public BlockPos pos;
Location(int dimID, int x, int y, int z) {
this.dimensionID = dimID;
pos = new BlockPos(x, y, z);
}
Location(int dimID, BlockPos pos) {
this.dimensionID = dimID;
this.pos = pos.up(0); //copyOf
}
public TileEntity getTileEntity() {
World world = DimensionManager.getWorld(dimensionID); //@todo HOW?
return world.getTileEntity(pos);
}
static Location getLocation(TileEntity tileEntity) {
World world = tileEntity.getWorld();
int dimID = world.provider.getDimension();
BlockPos blockPos = tileEntity.getPos();
return new Location(dimID, blockPos);
}
static NBTBase writeToNBT(Location location) {
NBTTagCompound locationNBT = new NBTTagCompound();
locationNBT.setInteger("worldID", location.dimensionID);
locationNBT.setInteger("x", location.pos.getX());
locationNBT.setInteger("y", location.pos.getY());
locationNBT.setInteger("z", location.pos.getZ());
return locationNBT;
}
static Location readFromNBT(NBTTagCompound locationNBT) {
int worldID = locationNBT.getInteger("worldID");
int x = locationNBT.getInteger("x");
int y = locationNBT.getInteger("y");
int z = locationNBT.getInteger("z");
BlockPos blockPos = new BlockPos(x, y, z);
return new Location(worldID, blockPos);
}
}

View file

@ -1,25 +0,0 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.zixiken.dimdoors.shared;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
/**
*
* @author Robijnvogel
*/
class Rift {
static Rift readFromNBT(int i, NBTTagCompound riftNBT) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
static NBTBase writeToNBT(Rift value) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}

View file

@ -5,9 +5,12 @@
*/
package com.zixiken.dimdoors.shared;
import com.zixiken.dimdoors.DimDoors;
import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
/**
@ -19,30 +22,30 @@ public class RiftRegistry {
public static final RiftRegistry Instance = new RiftRegistry();
// Privates
private int nextUnusedID;
private final Map<Integer, Rift> riftList;
private int nextRiftID;
private final Map<Integer, Location> riftList;
// Methods
public RiftRegistry() {
nextUnusedID = 0;
nextRiftID = 0;
riftList = new HashMap();
}
public void reset() {
nextUnusedID = 0;
nextRiftID = 0;
riftList.clear();
}
public void readFromNBT(NBTTagCompound nbt) {
nextUnusedID = nbt.getInteger("nextUnusedID");
nextRiftID = nbt.getInteger("nextUnusedID");
if (nbt.hasKey("riftData")) {
NBTTagCompound riftsNBT = nbt.getCompoundTag("riftData");
int i = 1;
String tag = "" + i;
while (riftsNBT.hasKey(tag)) {
NBTTagCompound riftNBT = riftsNBT.getCompoundTag(tag);
Rift rift = Rift.readFromNBT(i, riftNBT);
riftList.put(i, rift);
Location riftLocation = Location.readFromNBT(riftNBT);
riftList.put(i, riftLocation);
i++;
tag = "" + i;
@ -51,30 +54,48 @@ public class RiftRegistry {
}
public void writeToNBT(NBTTagCompound nbt) {
nbt.setInteger("nextUnusedID", nextUnusedID);
nbt.setInteger("nextUnusedID", nextRiftID);
NBTTagCompound riftsNBT = new NBTTagCompound();
for (Map.Entry<Integer, Rift> entry : riftList.entrySet()) {
riftsNBT.setTag("" + entry.getKey(), Rift.writeToNBT(entry.getValue()));
for (Map.Entry<Integer, Location> entry : riftList.entrySet()) {
riftsNBT.setTag("" + entry.getKey(), Location.writeToNBT(entry.getValue()));
}
nbt.setTag("riftData", riftsNBT);
}
public int registerNewRift(Rift rift, World world) {
riftList.put(nextUnusedID, rift);
public int registerNewRift(DDTileEntityBase rift) {
riftList.put(nextRiftID, Location.getLocation(rift));
nextUnusedID++;
RiftSavedData.get(world).markDirty(); //Notify that this needs to be saved on world save
return nextUnusedID -1;
nextRiftID++;
RiftSavedData.get(DimDoors.getDefWorld()).markDirty(); //Notify that this needs to be saved on world save
return nextRiftID -1;
}
public void removeRift(int riftID, World world) {
if (riftList.containsKey(riftID)) {
riftList.remove(riftID);
RiftSavedData.get(world).markDirty(); //Notify that this needs to be saved on world save
RiftSavedData.get(DimDoors.getDefWorld()).markDirty(); //Notify that this needs to be saved on world save
}
}
public Rift getRift(int ID) {
public Location getRiftLocation(int ID) {
return riftList.get(ID);
}
public void pair(int riftID, int riftID2) {
Location location = riftList.get(riftID);
TileEntity tileEntity = location.getTileEntity(); //@todo this method might need to be in another class?
if (tileEntity != null && tileEntity instanceof DDTileEntityBase) {
DDTileEntityBase rift = (DDTileEntityBase) tileEntity;
rift.pair(riftID2);
}
}
public void unpair(int riftID) {
Location location = riftList.get(riftID);
TileEntity tileEntity = location.getTileEntity();
if (tileEntity != null && tileEntity instanceof DDTileEntityBase) {
DDTileEntityBase rift = (DDTileEntityBase) tileEntity;
rift.unpair();
}
}
}

View file

@ -5,7 +5,6 @@
*/
package com.zixiken.dimdoors.shared;
import com.zixiken.dimdoors.DimDoors;
import java.io.File;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;

View file

@ -1,7 +1,7 @@
package com.zixiken.dimdoors.tileentities;
import com.zixiken.dimdoors.shared.RiftRegistry;
import java.util.Random;
import net.minecraft.block.state.IBlockState;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
@ -9,6 +9,10 @@ import net.minecraft.world.World;
public abstract class DDTileEntityBase extends TileEntity
{
public boolean isPaired = false;
public int riftID;
public int pairedRiftID;
/**
*
* @return an array of floats representing RGBA color where 1.0 = 255.
@ -19,4 +23,32 @@ public abstract class DDTileEntityBase extends TileEntity
public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newSate) {
return oldState.getBlock() != newSate.getBlock();
}
public void pair(int otherRiftID) {
if (isPaired) {
if (otherRiftID == pairedRiftID) {
return;
}
else {
RiftRegistry.Instance.unpair(pairedRiftID);
}
}
pairedRiftID = otherRiftID;
RiftRegistry.Instance.pair(pairedRiftID, riftID);
isPaired = true;
}
public void unpair() {
if (!isPaired) {
return;
}
else {
isPaired = false;
RiftRegistry.Instance.unpair(pairedRiftID);
}
}
private void register() {
riftID = RiftRegistry.Instance.registerNewRift(this);
}
}

View file

@ -17,7 +17,7 @@ public class TileEntityRift extends DDTileEntityBase implements ITickable {
private static final int MAX_ENDERMAN_SPAWNING_CHANCE = 32;
private static final int HOSTILE_ENDERMAN_CHANCE = 1;
private static final int MAX_HOSTILE_ENDERMAN_CHANCE = 3;
private static final int UPDATE_PERIOD = 200;
private static final int UPDATE_PERIOD = 200; //10 seconds
private static Random random = new Random();
@ -93,7 +93,7 @@ public class TileEntityRift extends DDTileEntityBase implements ITickable {
private void closeRift() {
world.setBlockToAir(pos);
growth--;
growth--; //@todo?
}
public boolean updateNearestRift() {