Implementing a way to handle rift-connections 001
Made a start It doesn't compile yet
This commit is contained in:
parent
db809a8219
commit
1b2d4ad20a
6 changed files with 134 additions and 2 deletions
|
@ -1,6 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<gradle-project-properties>
|
<gradle-project-properties>
|
||||||
<!--DO NOT EDIT THIS FILE! - Used by the Gradle plugin of NetBeans.-->
|
<!--DO NOT EDIT THIS FILE! - Used by the Gradle plugin of NetBeans.-->
|
||||||
|
<source-level>1.8</source-level>
|
||||||
<built-in-tasks>
|
<built-in-tasks>
|
||||||
<task>
|
<task>
|
||||||
<display-name>run</display-name>
|
<display-name>run</display-name>
|
||||||
|
|
13
.nb-gradle/profiles/private/aux-config
Normal file
13
.nb-gradle/profiles/private/aux-config
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?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 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/CommonProxy.java</file>
|
||||||
|
<file>file:/C:/Users/Gebruiker/Documents/GitHub/DimDoors/src/main/java/com/zixiken/dimdoors/ModelManager.java</file>
|
||||||
|
</group>
|
||||||
|
</open-files>
|
||||||
|
</auxiliary>
|
||||||
|
</gradle-project-properties>
|
|
@ -1,5 +1,6 @@
|
||||||
package com.zixiken.dimdoors.tileentities;
|
package com.zixiken.dimdoors.tileentities;
|
||||||
|
|
||||||
|
import com.zixiken.dimdoors.world.RiftHandler;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
@ -9,6 +10,10 @@ import net.minecraft.world.World;
|
||||||
|
|
||||||
public abstract class DDTileEntityBase extends TileEntity
|
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.
|
* @return an array of floats representing RGBA color where 1.0 = 255.
|
||||||
|
@ -19,4 +24,30 @@ public abstract class DDTileEntityBase extends TileEntity
|
||||||
public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newSate) {
|
public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newSate) {
|
||||||
return oldState.getBlock() != newSate.getBlock();
|
return oldState.getBlock() != newSate.getBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void pair(int otherRiftID) {
|
||||||
|
RiftHandler rifthandler;
|
||||||
|
if (isPaired) {
|
||||||
|
if (otherRiftID == pairedRiftID) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rifthandler.unpair(pairedRiftID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pairedRiftID = otherRiftID;
|
||||||
|
rifthandler.pair(pairedRiftID, riftID);
|
||||||
|
isPaired = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unpair() {
|
||||||
|
RiftHandler rifthandler;
|
||||||
|
if (!isPaired) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
isPaired = false;
|
||||||
|
rifthandler.unpair(pairedRiftID);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class TileEntityRift extends DDTileEntityBase implements ITickable {
|
||||||
private static final int MAX_ENDERMAN_SPAWNING_CHANCE = 32;
|
private static final int MAX_ENDERMAN_SPAWNING_CHANCE = 32;
|
||||||
private static final int HOSTILE_ENDERMAN_CHANCE = 1;
|
private static final int HOSTILE_ENDERMAN_CHANCE = 1;
|
||||||
private static final int MAX_HOSTILE_ENDERMAN_CHANCE = 3;
|
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();
|
private static Random random = new Random();
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ public class TileEntityRift extends DDTileEntityBase implements ITickable {
|
||||||
|
|
||||||
private void closeRift() {
|
private void closeRift() {
|
||||||
world.setBlockToAir(pos);
|
world.setBlockToAir(pos);
|
||||||
growth--;
|
growth--; //@todo?
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean updateNearestRift() {
|
public boolean updateNearestRift() {
|
||||||
|
|
30
src/main/java/com/zixiken/dimdoors/world/Location.java
Normal file
30
src/main/java/com/zixiken/dimdoors/world/Location.java
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
package com.zixiken.dimdoors.world;
|
||||||
|
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Robijnvogel
|
||||||
|
*/
|
||||||
|
public class Location {
|
||||||
|
public String dimensionUID;
|
||||||
|
public BlockPos pos;
|
||||||
|
|
||||||
|
Location(String dimUID, int x, int y, int z) {
|
||||||
|
this.dimensionUID = dimUID;
|
||||||
|
pos = new BlockPos(x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
Location(String dimUID, BlockPos pos) {
|
||||||
|
this.dimensionUID = dimUID;
|
||||||
|
this.pos = pos.up(0); //copyOf
|
||||||
|
}
|
||||||
|
|
||||||
|
TileEntity getTileEntity() {
|
||||||
|
World world = getWorld(dimensionUID); //@todo HOW?
|
||||||
|
return world.getTileEntity(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
57
src/main/java/com/zixiken/dimdoors/world/RiftHandler.java
Normal file
57
src/main/java/com/zixiken/dimdoors/world/RiftHandler.java
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
package com.zixiken.dimdoors.world;
|
||||||
|
|
||||||
|
import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Robijnvogel
|
||||||
|
*/
|
||||||
|
public class RiftHandler {
|
||||||
|
private Map<Integer, Location> riftLocations; //it needs to be a Map if we want to be able to remove rifts without the IDs shifting (as would happen in a List
|
||||||
|
private int nextRiftID;
|
||||||
|
|
||||||
|
RiftHandler() { //@todo don't forget to create one object of this class at world-load
|
||||||
|
riftLocations = new HashMap<>();
|
||||||
|
nextRiftID = 0;
|
||||||
|
readfromNBT(); //and also add a method to write to NBT
|
||||||
|
}
|
||||||
|
|
||||||
|
public int addRift(Location location) {
|
||||||
|
int riftID = nextRiftID;
|
||||||
|
nextRiftID++;
|
||||||
|
riftLocations.put(riftID, location);
|
||||||
|
return riftID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeRift(int riftID, Location location) {
|
||||||
|
riftLocations.remove(riftID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getLocation(int riftID) {
|
||||||
|
Location location = riftLocations.get(riftID);
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void pair(int riftID, int riftID2) {
|
||||||
|
Location location = riftLocations.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 = riftLocations.get(riftID);
|
||||||
|
TileEntity tileEntity = location.getTileEntity();
|
||||||
|
if (tileEntity != null && tileEntity instanceof DDTileEntityBase) {
|
||||||
|
DDTileEntityBase rift = (DDTileEntityBase) tileEntity;
|
||||||
|
rift.unpair();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue