Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/com/untamedears/citadel/Utility.java
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,9 @@ public static boolean maybeReinforcementDamaged(Block block) {
}

public static boolean reinforcementDamaged(IReinforcement reinforcement) {
reinforcement.setDurability(reinforcement.getDurability() - 1);
boolean cancelled = reinforcement.getDurability() > 0;
if (reinforcement.getDurability() <= 0) {
boolean isBroken = reinforcement.breakOnce();
boolean cancelled = !isBroken;
if (!cancelled) {
cancelled = reinforcementBroken(reinforcement);
} else {
if (reinforcement instanceof PlayerReinforcement) {
Expand Down
2 changes: 1 addition & 1 deletion src/com/untamedears/citadel/dao/CitadelCachingDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ public IReinforcement findReinforcement( Block block ){
}

public IReinforcement save( IReinforcement r ){
if (r.getDurability() <= 0)
if (r.isBroken())
{
delete(r);
return null;
Expand Down
4 changes: 2 additions & 2 deletions src/com/untamedears/citadel/entity/IReinforcement.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ public abstract interface IReinforcement extends
public ReinforcementKey getId();
public void setId(ReinforcementKey id);
public Block getBlock();
public int getDurability();
public void setDurability(int durability);
public double getHealth();
public String getHealthText();
public String getStatus();
public boolean isBroken();
public boolean breakOnce();
}
46 changes: 26 additions & 20 deletions src/com/untamedears/citadel/entity/NaturalReinforcement.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.untamedears.citadel.entity;

import java.util.HashMap;
import java.util.Random;

import org.bukkit.Bukkit;
import org.bukkit.block.Block;
Expand All @@ -16,15 +17,18 @@ public class NaturalReinforcement implements IReinforcement {
new HashMap<Integer, NaturalReinforcementConfig>();

private ReinforcementKey id_;
private int durability_;
private boolean broken_;
private int max_durability_;
private Random random;

public NaturalReinforcement() {}
public NaturalReinforcement() {
this.random = new Random();
}

public NaturalReinforcement(Block block, int breakCount) {
public NaturalReinforcement(Block block, int max_durability) {
this.id_ = new ReinforcementKey(block);
this.durability_ = breakCount;
this.max_durability_ = breakCount;
this.max_durability_ = max_durability;
this.random = new Random();
}

public ReinforcementKey getId() { return id_; }
Expand All @@ -41,34 +45,22 @@ public Block getBlock() {
}
}

public int getDurability() { return durability_; }
public void setDurability(int durability) { durability_ = durability; }

public int getMaxDurability() { return max_durability_; }
public void setMaxDurability(int max_durability) { this.max_durability_ = max_durability; }

public double getHealth() {
return (double) durability_ / (double) max_durability_;
return 1.0;
}

public String getHealthText() {
double health = getHealth();
if (health > 0.75) {
return "excellently";
} else if (health > 0.50) {
return "well";
} else if (health > 0.25) {
return "decently";
} else {
return "poorly";
}
return "naturally";
}

public String getStatus() { return getHealthText(); }

@Override
public String toString() {
return String.format("%s, durability: %d of %d", id_, durability_, max_durability_);
return String.format("%s, hardness %d", id_, max_durability_);
}

@Override
Expand All @@ -88,4 +80,18 @@ public int compareTo(IReinforcement r) {
public int hashCode() {
return this.id_.hashCode();
}

@Override
public boolean isBroken() {
return broken_;
}

@Override
public boolean breakOnce() {
if (broken_) return true;
if (random.nextInt(max_durability_) == 0) {
broken_ = true;
}
return broken_;
}
}
13 changes: 13 additions & 0 deletions src/com/untamedears/citadel/entity/PlayerReinforcement.java
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,19 @@ public int hashCode() {
return this.id.hashCode();
}

@Override
public boolean isBroken() {
return this.durability <= 0;
}

@Override
public boolean breakOnce() {
if (!isBroken()) {
this.durability--;
}
return isBroken();
}

public DbUpdateAction getDbAction() { return this.dbAction; }
public void setDbAction(DbUpdateAction value) { this.dbAction = value; }
}