mirror of
https://github.com/GTNewHorizons/MagicBees.git
synced 2026-11-12 00:08:01 +00:00
Research notes for Vis Aura provider, TC crafting & garbage.
Apiary logic tweaks.
This commit is contained in:
1 parent
40fdbb29c6
commit
051cc96514
5 files changed
+173
-192
No files matched your search
@@ -10,6 +10,7 @@ import magicbees.main.CommonProxy;
|
||||
import magicbees.main.MagicBees;
|
||||
import magicbees.main.utils.ChunkCoords;
|
||||
import magicbees.main.utils.ItemStackUtils;
|
||||
import magicbees.main.utils.LogHelper;
|
||||
import magicbees.main.utils.net.NetworkEventHandler;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@@ -54,7 +55,6 @@ public class TileEntityMagicApiary extends TileEntity implements ISidedInventory
|
||||
private static final int SLOT_PRODUCTS_COUNT = 7;
|
||||
|
||||
private static final int AURAPROVIDER_SEARCH_RADIUS = 6;
|
||||
private static int MAX_BLOCKS_SEARCH_PER_CHECK = (AURAPROVIDER_SEARCH_RADIUS * 2 + 1) * 8;
|
||||
private static int CHARGE_TIME_MUTATION = 850;
|
||||
private static int CHARGE_TIME_DEATH = 400;
|
||||
private static int CHARGE_TIME_PRODUCTION = 300;
|
||||
@@ -602,6 +602,7 @@ public class TileEntityMagicApiary extends TileEntity implements ISidedInventory
|
||||
else {
|
||||
updateAuraProvider();
|
||||
}
|
||||
tickCharges();
|
||||
|
||||
logic.update();
|
||||
|
||||
@@ -649,79 +650,80 @@ public class TileEntityMagicApiary extends TileEntity implements ISidedInventory
|
||||
public boolean isMutationBoosted() {
|
||||
return (flags & FLAG_MUTATIONCHARGE) == FLAG_MUTATIONCHARGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validate() {
|
||||
super.validate();
|
||||
if (!worldObj.isRemote) {
|
||||
NetworkEventHandler.getInstance().sendFlagsUpdate(this, new int[] {flags});
|
||||
}
|
||||
}
|
||||
|
||||
private void updateAuraProvider() {
|
||||
if (worldObj.getTotalWorldTime() % 15 == 0 && locationHasAuraProvider(auraProviderPosition)) {
|
||||
|
||||
if (worldObj.getTotalWorldTime() % 10 != 0) {
|
||||
return;
|
||||
}
|
||||
if (!locationHasAuraProvider(auraProviderPosition)) {
|
||||
this.auraProvider = null;
|
||||
this.auraProviderPosition = null;
|
||||
return;
|
||||
}
|
||||
|
||||
int oldFlags = flags;
|
||||
if (!isMutationBoosted()) {
|
||||
if (this.auraProvider.getMutationCharge()) {
|
||||
flags |= FLAG_MUTATIONCHARGE;
|
||||
chargeTimestamps[OFFSET_MUTATION] = worldObj.getTotalWorldTime();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (chargeTimestamps[OFFSET_MUTATION] + CHARGE_TIME_MUTATION <= worldObj.getTotalWorldTime()) {
|
||||
if (!this.auraProvider.getMutationCharge()) {
|
||||
flags = flags & ~FLAG_MUTATIONCHARGE;
|
||||
}
|
||||
}
|
||||
if (!isMutationBoosted() && this.auraProvider.getMutationCharge()) {
|
||||
flags |= FLAG_MUTATIONCHARGE;
|
||||
chargeTimestamps[OFFSET_MUTATION] = worldObj.getTotalWorldTime();
|
||||
}
|
||||
|
||||
if (!isDeathRateBoosted()) {
|
||||
if (this.auraProvider.getDeathRateCharge()) {
|
||||
flags |= FLAG_DEATHCHARGE;
|
||||
chargeTimestamps[OFFSET_DEATH] = worldObj.getTotalWorldTime();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (chargeTimestamps[OFFSET_DEATH] + CHARGE_TIME_DEATH <= worldObj.getTotalWorldTime()) {
|
||||
if (!this.auraProvider.getDeathRateCharge()) {
|
||||
flags = flags & ~FLAG_DEATHCHARGE;
|
||||
}
|
||||
}
|
||||
if (!isDeathRateBoosted() && this.auraProvider.getDeathRateCharge()) {
|
||||
flags |= FLAG_DEATHCHARGE;
|
||||
chargeTimestamps[OFFSET_DEATH] = worldObj.getTotalWorldTime();
|
||||
}
|
||||
|
||||
if (!isProductionBoosted()) {
|
||||
if (this.auraProvider.getProductionCharge()) {
|
||||
flags |= FLAG_PRODUCTIONCHARGE;
|
||||
chargeTimestamps[OFFSET_PRODUCTION] = worldObj.getTotalWorldTime();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (chargeTimestamps[OFFSET_PRODUCTION] + CHARGE_TIME_PRODUCTION <= worldObj.getTotalWorldTime()) {
|
||||
if (!this.auraProvider.getProductionCharge()) {
|
||||
flags = flags & ~FLAG_PRODUCTIONCHARGE;
|
||||
}
|
||||
}
|
||||
if (!isProductionBoosted() && this.auraProvider.getProductionCharge()) {
|
||||
flags |= FLAG_PRODUCTIONCHARGE;
|
||||
chargeTimestamps[OFFSET_PRODUCTION] = worldObj.getTotalWorldTime();
|
||||
}
|
||||
|
||||
if (oldFlags != flags) {
|
||||
NetworkEventHandler.getInstance().sendFlagsUpdate(this, new int[] {flags});
|
||||
}
|
||||
}
|
||||
|
||||
private void tickCharges() {
|
||||
int oldFlags = flags;
|
||||
if (isMutationBoosted()) {
|
||||
if (chargeTimestamps[OFFSET_MUTATION] + CHARGE_TIME_MUTATION <= worldObj.getTotalWorldTime()) {
|
||||
if (auraProvider == null || !this.auraProvider.getMutationCharge()) {
|
||||
flags = flags & ~FLAG_MUTATIONCHARGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isDeathRateBoosted()) {
|
||||
if (chargeTimestamps[OFFSET_DEATH] + CHARGE_TIME_DEATH <= worldObj.getTotalWorldTime()) {
|
||||
if (auraProvider == null || !this.auraProvider.getDeathRateCharge()) {
|
||||
flags = flags & ~FLAG_DEATHCHARGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isProductionBoosted()) {
|
||||
if (chargeTimestamps[OFFSET_PRODUCTION] + CHARGE_TIME_PRODUCTION <= worldObj.getTotalWorldTime()) {
|
||||
if (auraProvider == null || !this.auraProvider.getProductionCharge()) {
|
||||
flags = flags & ~FLAG_PRODUCTIONCHARGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (oldFlags != flags) {
|
||||
NetworkEventHandler.getInstance().sendFlagsUpdate(this, new int[] {flags});
|
||||
}
|
||||
}
|
||||
|
||||
private void findAuraProvider() {
|
||||
if (worldObj.getTotalWorldTime() % 10 != 0) {
|
||||
if (worldObj.getTotalWorldTime() % 5 != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.auraProviderPosition != null) {
|
||||
// Will end up here after loading from save with a valid auraProvider.
|
||||
if (locationHasAuraProvider(auraProviderPosition)) {
|
||||
IMagicApiaryAuraProvider provider = (IMagicApiaryAuraProvider)(worldObj.getTileEntity(auraProviderPosition.x,
|
||||
auraProviderPosition.y,
|
||||
auraProviderPosition.x));
|
||||
if (provider == null) {
|
||||
// ... well, it WAS here...
|
||||
this.auraProviderPosition = null;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this.auraProviderPosition == null) {
|
||||
List<Chunk> chunks = getChunksInSearchRange();
|
||||
for (Chunk chunk : chunks) {
|
||||
if (searchChunkForBooster(chunk)) {
|
||||
@@ -729,6 +731,11 @@ public class TileEntityMagicApiary extends TileEntity implements ISidedInventory
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!locationHasAuraProvider(auraProviderPosition)) {
|
||||
this.auraProviderPosition = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<Chunk> getChunksInSearchRange() {
|
||||
@@ -758,6 +765,8 @@ public class TileEntityMagicApiary extends TileEntity implements ISidedInventory
|
||||
Vec3 result = apiaryPos.subtract(tePos);
|
||||
if (result.lengthVector() <= AURAPROVIDER_SEARCH_RADIUS) {
|
||||
saveAuraProviderPosition(entity.xCoord, entity.yCoord, entity.zCoord);
|
||||
this.auraProvider = (IMagicApiaryAuraProvider)entity;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user