2424 */
2525package com .mcgoodtime .productionline .event ;
2626
27+ import com .mcgoodtime .productionline .tiles .tilewireless .TileTributary ;
28+ import com .mcgoodtime .productionline .tiles .tilewireless .TileWaterSource ;
2729import com .mcgoodtime .productionline .tiles .tilewireless .TileWireless ;
30+ import gnu .trove .map .custom_hash .TObjectByteCustomHashMap ;
2831import net .minecraft .block .ITileEntityProvider ;
2932import net .minecraft .entity .player .EntityPlayer ;
3033import net .minecraft .tileentity .TileEntity ;
3134import net .minecraftforge .event .world .BlockEvent ;
3235import net .minecraftforge .fml .common .Mod ;
3336import 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 {
0 commit comments