001 package net.minecraft.world.demo;
002
003 import net.minecraft.entity.player.EntityPlayer;
004 import net.minecraft.item.ItemInWorldManager;
005 import net.minecraft.item.ItemStack;
006 import net.minecraft.network.packet.Packet70GameEvent;
007 import net.minecraft.world.World;
008
009 public class DemoWorldManager extends ItemInWorldManager
010 {
011 private boolean field_73105_c = false;
012 private boolean demoTimeExpired = false;
013 private int field_73104_e = 0;
014 private int field_73102_f = 0;
015
016 public DemoWorldManager(World par1World)
017 {
018 super(par1World);
019 }
020
021 public void updateBlockRemoving()
022 {
023 super.updateBlockRemoving();
024 ++this.field_73102_f;
025 long var1 = this.theWorld.getTotalWorldTime();
026 long var3 = var1 / 24000L + 1L;
027
028 if (!this.field_73105_c && this.field_73102_f > 20)
029 {
030 this.field_73105_c = true;
031 this.thisPlayerMP.playerNetServerHandler.sendPacketToPlayer(new Packet70GameEvent(5, 0));
032 }
033
034 this.demoTimeExpired = var1 > 120500L;
035
036 if (this.demoTimeExpired)
037 {
038 ++this.field_73104_e;
039 }
040
041 if (var1 % 24000L == 500L)
042 {
043 if (var3 <= 6L)
044 {
045 this.thisPlayerMP.sendChatToPlayer(this.thisPlayerMP.translateString("demo.day." + var3, new Object[0]));
046 }
047 }
048 else if (var3 == 1L)
049 {
050 if (var1 == 100L)
051 {
052 this.thisPlayerMP.playerNetServerHandler.sendPacketToPlayer(new Packet70GameEvent(5, 101));
053 }
054 else if (var1 == 175L)
055 {
056 this.thisPlayerMP.playerNetServerHandler.sendPacketToPlayer(new Packet70GameEvent(5, 102));
057 }
058 else if (var1 == 250L)
059 {
060 this.thisPlayerMP.playerNetServerHandler.sendPacketToPlayer(new Packet70GameEvent(5, 103));
061 }
062 }
063 else if (var3 == 5L && var1 % 24000L == 22000L)
064 {
065 this.thisPlayerMP.sendChatToPlayer(this.thisPlayerMP.translateString("demo.day.warning", new Object[0]));
066 }
067 }
068
069 /**
070 * Sends a message to the player reminding them that this is the demo version
071 */
072 private void sendDemoReminder()
073 {
074 if (this.field_73104_e > 100)
075 {
076 this.thisPlayerMP.sendChatToPlayer(this.thisPlayerMP.translateString("demo.reminder", new Object[0]));
077 this.field_73104_e = 0;
078 }
079 }
080
081 /**
082 * if not creative, it calls destroyBlockInWorldPartially untill the block is broken first. par4 is the specific
083 * side. tryHarvestBlock can also be the result of this call
084 */
085 public void onBlockClicked(int par1, int par2, int par3, int par4)
086 {
087 if (this.demoTimeExpired)
088 {
089 this.sendDemoReminder();
090 }
091 else
092 {
093 super.onBlockClicked(par1, par2, par3, par4);
094 }
095 }
096
097 public void uncheckedTryHarvestBlock(int par1, int par2, int par3)
098 {
099 if (!this.demoTimeExpired)
100 {
101 super.uncheckedTryHarvestBlock(par1, par2, par3);
102 }
103 }
104
105 /**
106 * Attempts to harvest a block at the given coordinate
107 */
108 public boolean tryHarvestBlock(int par1, int par2, int par3)
109 {
110 return this.demoTimeExpired ? false : super.tryHarvestBlock(par1, par2, par3);
111 }
112
113 /**
114 * Attempts to right-click use an item by the given EntityPlayer in the given World
115 */
116 public boolean tryUseItem(EntityPlayer par1EntityPlayer, World par2World, ItemStack par3ItemStack)
117 {
118 if (this.demoTimeExpired)
119 {
120 this.sendDemoReminder();
121 return false;
122 }
123 else
124 {
125 return super.tryUseItem(par1EntityPlayer, par2World, par3ItemStack);
126 }
127 }
128
129 /**
130 * Activate the clicked on block, otherwise use the held item. Args: player, world, itemStack, x, y, z, side,
131 * xOffset, yOffset, zOffset
132 */
133 public boolean activateBlockOrUseItem(EntityPlayer par1EntityPlayer, World par2World, ItemStack par3ItemStack, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
134 {
135 if (this.demoTimeExpired)
136 {
137 this.sendDemoReminder();
138 return false;
139 }
140 else
141 {
142 return super.activateBlockOrUseItem(par1EntityPlayer, par2World, par3ItemStack, par4, par5, par6, par7, par8, par9, par10);
143 }
144 }
145 }