Skip to content

Commit 699212e

Browse files
committed
Further improve the event
1 parent 2baa528 commit 699212e

5 files changed

Lines changed: 46 additions & 30 deletions

File tree

src/main/java/com/mcgoodtime/productionline/event/PLEvent.java

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,20 @@
2424
*/
2525
package com.mcgoodtime.productionline.event;
2626

27+
import com.mcgoodtime.productionline.tiles.tilewireless.TileTributary;
28+
import com.mcgoodtime.productionline.tiles.tilewireless.TileWaterSource;
2729
import com.mcgoodtime.productionline.tiles.tilewireless.TileWireless;
30+
import gnu.trove.map.custom_hash.TObjectByteCustomHashMap;
2831
import net.minecraft.block.ITileEntityProvider;
2932
import net.minecraft.entity.player.EntityPlayer;
3033
import net.minecraft.tileentity.TileEntity;
3134
import net.minecraftforge.event.world.BlockEvent;
3235
import net.minecraftforge.fml.common.Mod;
3336
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
3437

38+
import java.util.ArrayList;
39+
import java.util.List;
40+
3541
/**
3642
* Production Line event listener.
3743
*
@@ -47,31 +53,31 @@ public void onPlayerCrafting(PlayerEvent.ItemCraftedEvent event) {
4753
}
4854
*/
4955

50-
private TileWireless lastDecive ;
56+
List<TileWaterSource> playerWaterSources;
5157

5258
@SubscribeEvent
5359
public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) {
5460
TileEntity currentPlacedBlock = event.getWorld().getTileEntity(event.getPos());
5561

56-
if (event.getPlacedBlock().getBlock() instanceof ITileEntityProvider && currentPlacedBlock instanceof TileWireless){
57-
TileWireless currentDecive = (TileWireless) currentPlacedBlock;
62+
if (event.getPlacedBlock().getBlock() instanceof ITileEntityProvider && currentPlacedBlock instanceof TileWireless){
63+
TileWireless currentDevice = (TileWireless) currentPlacedBlock;
5864
if(!(event.getWorld().isRemote) && event.getEntity()instanceof EntityPlayer){
59-
currentDecive.setOwner(event.getEntity());
65+
currentDevice.setOwner(event.getEntity());
66+
}
67+
68+
if(currentDevice instanceof TileWaterSource){
69+
playerWaterSources.add((TileWaterSource) currentDevice);
6070
}
61-
if(lastDecive!=null && lastDecive.sameOwner(event.getEntity())){
62-
if(currentDecive.inRange(lastDecive.getPos())){
63-
currentDecive.link(lastDecive);
64-
lastDecive.link(currentDecive);
65-
for(TileWireless deciveInOtherTiles : lastDecive.getLinkedWirelessDecives()){
66-
if(currentDecive.inRange(deciveInOtherTiles.getPos())){
67-
currentDecive.link(deciveInOtherTiles);
68-
deciveInOtherTiles.link(currentDecive);
71+
if(currentDevice instanceof TileTributary){
72+
if(!playerWaterSources.isEmpty()){
73+
for (TileWaterSource waterSource : playerWaterSources){
74+
if(waterSource.sameOwner(currentDevice.getOwner()) && waterSource.inRange(currentDevice.getPos())){
75+
currentDevice.link(waterSource);
76+
waterSource.link(currentDevice);
6977
}
7078
}
7179
}
7280
}
73-
lastDecive = currentDecive;
74-
7581
}else {
7682
return;
7783
}
@@ -81,12 +87,14 @@ public void onBlockPlayerPlaced(BlockEvent.EntityPlaceEvent event) {
8187
@SubscribeEvent
8288
public void onPlayerBreaked(BlockEvent.BreakEvent event){
8389
TileEntity curretBreakedBlock = event.getWorld().getTileEntity(event.getPos());
84-
8590
if(curretBreakedBlock != null && curretBreakedBlock.isInvalid()){
8691
if(event.getState().getBlock() instanceof ITileEntityProvider && curretBreakedBlock instanceof TileWireless){
87-
TileWireless curretDecive = (TileWireless) curretBreakedBlock;
88-
for(TileWireless deciveInOtherTiles : curretDecive.getLinkedWirelessDecives()){
89-
deciveInOtherTiles.unlink(curretDecive);
92+
TileWireless curretDevice = (TileWireless) curretBreakedBlock;
93+
if(curretBreakedBlock instanceof TileWaterSource){
94+
playerWaterSources.remove(curretDevice);
95+
}
96+
for(TileWireless deviceInOtherTiles : curretDevice.getLinkedWirelessDecives()){
97+
deviceInOtherTiles.unlink(curretDevice);
9098
}
9199
}
92100
}else {

src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/IWireless.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public interface IWireless {
99

1010
void setOwner(Entity player);
1111

12+
Entity getOwner();
13+
1214
void link(TileWireless tile);
1315

1416
void unlink(TileWireless tile);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.mcgoodtime.productionline.tiles.tilewireless;
2+
3+
public class TileTributary extends TileWireless{
4+
}
Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
package com.mcgoodtime.productionline.tiles.tilewireless;
22

3-
import ibxm.Player;
4-
import net.minecraft.tileentity.TileEntity;
5-
import net.minecraft.util.ITickable;
6-
import net.minecraft.util.math.BlockPos;
7-
8-
import java.util.Map;
9-
import java.util.UUID;
10-
113
public class TileWaterSource extends TileWireless {
124

135
@Override
@@ -16,4 +8,6 @@ public void update() {
168
}
179

1810

11+
12+
1913
}

src/main/java/com/mcgoodtime/productionline/tiles/tilewireless/TileWireless.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.minecraft.util.math.BlockPos;
77

88
import java.util.List;
9+
import java.util.Objects;
910

1011
public class TileWireless extends TileEntity implements IWireless, ITickable {
1112

@@ -15,7 +16,7 @@ public class TileWireless extends TileEntity implements IWireless, ITickable {
1516
private final int Y = this.pos.getY();
1617
private final int Z = this.pos.getZ();
1718

18-
Entity owner;
19+
private Entity owner;
1920

2021
@Override
2122
public void update() {
@@ -32,17 +33,24 @@ public void setOwner(Entity player) {
3233
this.owner = player;
3334
}
3435

36+
@Override
37+
public Entity getOwner() {
38+
return owner;
39+
}
40+
3541
public boolean sameOwner(Entity player){
36-
return player.equals(this.owner) ? true : false;
42+
return Objects.equals(owner.getUniqueID(),player.getUniqueID());
3743
}
3844

3945
public boolean inRange(BlockPos pos) {
46+
47+
boolean isSelf = pos.getX() != X && pos.getY() != Y && pos.getZ() != Z;
4048
boolean x_InRange = pos.getX() <= X+getRange(0) && pos.getX()>=X-getRange(0);
4149
boolean y_InRange = pos.getY() <= Y+getRange(1) && pos.getY()>=Y-getRange(1);
4250
boolean z_InRange = pos.getZ() <= Z+getRange(2) && pos.getZ()>=Z-getRange(2);
43-
boolean notSelf = pos.getX() != X && pos.getY() != Y && pos.getZ() != Z;
4451

45-
return x_InRange && y_InRange && z_InRange && notSelf ? true : false;
52+
53+
return isSelf && x_InRange && y_InRange && z_InRange ? true : false;
4654

4755
}
4856

0 commit comments

Comments
 (0)