Merge remote-tracking branch 'refs/remotes/origin/WIP'
This commit is contained in:
commit
d72d015e16
9 changed files with 155 additions and 48 deletions
|
@ -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>
|
||||
|
|
21
.nb-gradle/profiles/private/aux-config
Normal file
21
.nb-gradle/profiles/private/aux-config
Normal 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>
|
|
@ -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;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
60
src/main/java/com/zixiken/dimdoors/shared/Location.java
Normal file
60
src/main/java/com/zixiken/dimdoors/shared/Location.java
Normal 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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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.
|
||||
}
|
||||
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in a new issue