예제 #1
0
 @Override
 public void save(ConfigurationNode node) {
   node.set("displayName", this.displayName.equals(this.trainname) ? null : this.displayName);
   node.set("soundEnabled", this.soundEnabled ? null : false);
   node.set("allowPlayerTake", this.allowPlayerTake ? null : false);
   node.set("requirePoweredMinecart", this.requirePoweredMinecart ? true : null);
   node.set("trainCollision", this.collision ? null : false);
   node.set("keepChunksLoaded", this.keepChunksLoaded ? true : null);
   node.set("speedLimit", this.speedLimit != 0.4 ? this.speedLimit : null);
   node.set("slowDown", this.slowDown ? null : false);
   node.set("allowManualMovement", allowManualMovement ? true : null);
   if (this.mobCollision != CollisionMode.DEFAULT) {
     node.set("collision.mobs", this.mobCollision);
   }
   if (this.playerCollision != CollisionMode.DEFAULT) {
     node.set("collision.players", this.playerCollision);
   }
   if (this.miscCollision != CollisionMode.DEFAULT) {
     node.set("collision.misc", this.miscCollision);
   }
   if (this.trainCollision != CollisionMode.LINK) {
     node.set("collision.train", this.trainCollision);
   }
   if (!this.isEmpty()) {
     ConfigurationNode carts = node.getNode("carts");
     for (CartProperties prop : this) {
       ConfigurationNode cart = carts.getNode(prop.getUUID().toString());
       prop.save(cart);
       if (cart.getKeys().isEmpty()) carts.remove(cart.getName());
     }
   }
 }
예제 #2
0
 @Override
 public boolean hasOwners() {
   for (CartProperties prop : this) {
     if (prop.hasOwners()) return true;
   }
   return false;
 }
예제 #3
0
 @Override
 public boolean matchTag(String tag) {
   for (CartProperties prop : this) {
     if (prop.matchTag(tag)) return true;
   }
   return false;
 }
예제 #4
0
 @Override
 public boolean hasDestination() {
   for (CartProperties prop : this) {
     if (prop.hasDestination()) return true;
   }
   return false;
 }
예제 #5
0
 @Override
 public String getDestination() {
   for (CartProperties prop : this) {
     if (prop.hasDestination()) return prop.getDestination();
   }
   return "";
 }
예제 #6
0
 @Override
 public void load(ConfigurationNode node) {
   this.setDisplayName(node.get("displayName", this.displayName));
   this.allowPlayerTake = node.get("allowPlayerTake", this.allowPlayerTake);
   this.collision = node.get("trainCollision", this.collision);
   this.soundEnabled = node.get("soundEnabled", this.soundEnabled);
   this.slowDown = node.get("slowDown", this.slowDown);
   if (node.contains("collision")) {
     this.mobCollision = node.get("collision.mobs", this.mobCollision);
     this.playerCollision = node.get("collision.players", this.playerCollision);
     this.miscCollision = node.get("collision.misc", this.miscCollision);
     this.trainCollision = node.get("collision.train", this.trainCollision);
   }
   this.speedLimit = MathUtil.clamp(node.get("speedLimit", this.speedLimit), 0, 20);
   this.requirePoweredMinecart = node.get("requirePoweredMinecart", this.requirePoweredMinecart);
   this.keepChunksLoaded = node.get("keepChunksLoaded", this.keepChunksLoaded);
   this.allowManualMovement = node.get("allowManualMovement", this.allowManualMovement);
   if (node.isNode("carts")) {
     for (ConfigurationNode cart : node.getNode("carts").getNodes()) {
       try {
         CartProperties prop = CartProperties.get(UUID.fromString(cart.getName()), this);
         this.add(prop);
         prop.load(cart);
       } catch (Exception ex) {
         ex.printStackTrace();
       }
     }
   }
 }
예제 #7
0
 @Override
 public Collection<String> getTags() {
   Set<String> tags = new HashSet<String>();
   for (CartProperties prop : this) {
     tags.addAll(prop.getTags());
   }
   return tags;
 }
예제 #8
0
 @Override
 public Set<String> getOwners() {
   Set<String> rval = new HashSet<String>();
   for (CartProperties cprop : this) {
     rval.addAll(cprop.getOwners());
   }
   return rval;
 }
예제 #9
0
 @Override
 public boolean hasTags() {
   for (CartProperties prop : this) {
     if (prop.hasTags()) {
       return true;
     }
   }
   return false;
 }
예제 #10
0
 @Override
 public boolean isInvincible() {
   for (CartProperties prop : this) {
     if (prop.isInvincible()) {
       return true;
     }
   }
   return false;
 }
예제 #11
0
 @Override
 public boolean hasOwnerPermissions() {
   for (CartProperties prop : this) {
     if (prop.hasOwnerPermissions()) {
       return true;
     }
   }
   return false;
 }
예제 #12
0
 @Override
 public boolean isOwner(Player player) {
   for (CartProperties prop : this) {
     if (prop.isOwner(player)) {
       return true;
     }
   }
   return false;
 }
예제 #13
0
 public void setDefault(ConfigurationNode node) {
   if (node == null) {
     return;
   }
   this.load(node);
   for (CartProperties prop : this) {
     prop.load(node);
   }
 }
예제 #14
0
 @Override
 public boolean getSpawnItemDrops() {
   for (CartProperties prop : this) {
     if (prop.getSpawnItemDrops()) {
       return true;
     }
   }
   return false;
 }
예제 #15
0
 @Override
 public boolean getPlayersExit() {
   for (CartProperties prop : this) {
     if (prop.getPlayersExit()) {
       return true;
     }
   }
   return false;
 }
예제 #16
0
 /**
  * Gets the Collision Mode for colliding with the Entity specified
  *
  * @param entity to collide with
  * @return Collision Mode
  */
 public CollisionMode getCollisionMode(Entity entity) {
   if (!this.getColliding() || entity.isDead()) {
     return CollisionMode.CANCEL;
   }
   MinecartMember<?> member = MinecartMemberStore.get(entity);
   if (member != null) {
     if (this.trainCollision == CollisionMode.LINK) {
       if (member.getGroup().getProperties().trainCollision == CollisionMode.LINK) {
         return CollisionMode.LINK;
       } else {
         return CollisionMode.CANCEL;
       }
     } else {
       return this.trainCollision;
     }
   } else if (entity instanceof Player) {
     if (TrainCarts.collisionIgnoreOwners && this.playerCollision != CollisionMode.DEFAULT) {
       if (TrainCarts.collisionIgnoreGlobalOwners) {
         if (CartProperties.hasGlobalOwnership((Player) entity)) {
           return CollisionMode.DEFAULT;
         }
       }
       if (this.hasOwnership((Player) entity)) {
         return CollisionMode.DEFAULT;
       }
     }
     return this.playerCollision;
   } else if (EntityUtil.isMob(entity)) {
     return this.mobCollision;
   } else {
     return this.miscCollision;
   }
 }
예제 #17
0
 @Override
 public void saveAsDefault(ConfigurationNode node) {
   node.set("soundEnabled", this.soundEnabled);
   node.set("displayName", this.displayName);
   node.set("allowPlayerTake", this.allowPlayerTake);
   node.set("requirePoweredMinecart", this.requirePoweredMinecart);
   node.set("trainCollision", this.collision);
   node.set("keepChunksLoaded", this.keepChunksLoaded);
   node.set("speedLimit", this.speedLimit);
   node.set("slowDown", this.slowDown);
   node.set("allowManualMovement", this.allowManualMovement);
   node.set("collision.mobs", this.mobCollision);
   node.set("collision.players", this.playerCollision);
   node.set("collision.misc", this.miscCollision);
   node.set("collision.train", this.trainCollision);
   for (CartProperties prop : this) {
     prop.saveAsDefault(node);
     break;
   }
 }
예제 #18
0
 public BlockLocation getLocation() {
   for (CartProperties prop : this) {
     return prop.getLocation();
   }
   return null;
 }
예제 #19
0
 @Override
 public void setLastPathNode(String nodeName) {
   for (CartProperties cprop : this) {
     cprop.setLastPathNode(nodeName);
   }
 }
예제 #20
0
 @Override
 public void clearDestination() {
   for (CartProperties prop : this) {
     prop.clearDestination();
   }
 }
예제 #21
0
 @Override
 public void setPlayersExit(boolean state) {
   for (CartProperties prop : this) {
     prop.setPlayersExit(state);
   }
 }
예제 #22
0
 @Override
 public void setEnterMessage(String message) {
   for (CartProperties prop : this) {
     prop.setEnterMessage(message);
   }
 }
예제 #23
0
 @Override
 public void clearTags() {
   for (CartProperties prop : this) {
     prop.clearTags();
   }
 }
예제 #24
0
 @Override
 public void setInvincible(boolean enabled) {
   for (CartProperties prop : this) {
     prop.setInvincible(enabled);
   }
 }
예제 #25
0
 @Override
 public boolean parseSet(String key, String arg) {
   if (key.equals("exitoffset")) {
     Vector vec = Util.parseVector(arg, null);
     if (vec != null) {
       for (CartProperties prop : this) {
         prop.exitOffset = vec;
       }
     }
   } else if (key.equals("exityaw")) {
     float yaw = ParseUtil.parseFloat(arg, 0.0f);
     for (CartProperties prop : this) {
       prop.exitYaw = yaw;
     }
   } else if (key.equals("exitpitch")) {
     float pitch = ParseUtil.parseFloat(arg, 0.0f);
     for (CartProperties prop : this) {
       prop.exitPitch = pitch;
     }
   } else if (LogicUtil.contains(key, "exitrot", "exitrotation")) {
     String[] angletext = Util.splitBySeparator(arg);
     float yaw = 0.0f;
     float pitch = 0.0f;
     if (angletext.length == 2) {
       yaw = ParseUtil.parseFloat(angletext[0], 0.0f);
       pitch = ParseUtil.parseFloat(angletext[1], 0.0f);
     } else if (angletext.length == 1) {
       yaw = ParseUtil.parseFloat(angletext[0], 0.0f);
     }
     for (CartProperties prop : this) {
       prop.exitYaw = yaw;
       prop.exitPitch = pitch;
     }
   } else if (key.equals("sound") || key.equals("minecartsound")) {
     this.soundEnabled = ParseUtil.parseBool(arg);
   } else if (key.equals("mobcollision")) {
     this.mobCollision = CollisionMode.parse(arg);
   } else if (key.equals("playercollision")) {
     this.playerCollision = CollisionMode.parse(arg);
   } else if (key.equals("misccollision")) {
     this.miscCollision = CollisionMode.parse(arg);
   } else if (key.equals("traincollision")) {
     this.trainCollision = CollisionMode.parse(arg);
   } else if (LogicUtil.contains(key, "collision", "collide")) {
     this.setColliding(ParseUtil.parseBool(arg));
   } else if (LogicUtil.contains(key, "linking", "link")) {
     this.trainCollision = CollisionMode.fromLinking(ParseUtil.parseBool(arg));
   } else if (LogicUtil.contains(key, "slow", "slowdown")) {
     this.setSlowingDown(ParseUtil.parseBool(arg));
   } else if (LogicUtil.contains(key, "setdefault", "default")) {
     this.setDefault(arg);
   } else if (key.equals("pushmobs")) {
     this.mobCollision = CollisionMode.fromPushing(ParseUtil.parseBool(arg));
   } else if (key.equals("pushplayers")) {
     this.playerCollision = CollisionMode.fromPushing(ParseUtil.parseBool(arg));
   } else if (key.equals("pushmisc")) {
     this.miscCollision = CollisionMode.fromPushing(ParseUtil.parseBool(arg));
   } else if (LogicUtil.contains(key, "push", "pushing")) {
     CollisionMode mode = CollisionMode.fromPushing(ParseUtil.parseBool(arg));
     this.playerCollision = this.mobCollision = this.miscCollision = mode;
   } else if (LogicUtil.contains(key, "speedlimit", "maxspeed")) {
     this.setSpeedLimit(ParseUtil.parseDouble(arg, 0.4));
   } else if (LogicUtil.contains(key, "allowmanual", "manualmove", "manual")) {
     this.allowManualMovement = ParseUtil.parseBool(arg);
   } else if (LogicUtil.contains(key, "keepcloaded", "loadchunks", "keeploaded")) {
     this.keepChunksLoaded = ParseUtil.parseBool(arg);
   } else if (key.equals("addtag")) {
     this.addTags(arg);
   } else if (key.equals("settag")) {
     this.setTags(arg);
   } else if (key.equals("destination")) {
     this.setDestination(arg);
   } else if (key.equals("remtag")) {
     this.removeTags(arg);
   } else if (LogicUtil.contains(key, "name", "rename", "setname")) {
     this.setName(generateTrainName(arg));
   } else if (LogicUtil.contains(key, "dname", "displayname", "setdisplayname", "setdname")) {
     this.setDisplayName(arg);
   } else if (LogicUtil.contains(key, "mobenter", "mobsenter")) {
     this.mobCollision = CollisionMode.fromEntering(ParseUtil.parseBool(arg));
   } else if (key.equals("playerenter")) {
     this.setPlayersEnter(ParseUtil.parseBool(arg));
   } else if (key.equals("playerexit")) {
     this.setPlayersExit(ParseUtil.parseBool(arg));
   } else if (LogicUtil.contains(key, "invincible", "godmode")) {
     this.setInvincible(ParseUtil.parseBool(arg));
   } else if (key.equals("setownerperm")) {
     for (CartProperties prop : this) {
       prop.clearOwnerPermissions();
       prop.getOwnerPermissions().add(arg);
     }
   } else if (key.equals("addownerperm")) {
     for (CartProperties prop : this) {
       prop.getOwnerPermissions().add(arg);
     }
   } else if (key.equals("remownerperm")) {
     for (CartProperties prop : this) {
       prop.getOwnerPermissions().remove(arg);
     }
   } else if (key.equals("setowner")) {
     arg = arg.toLowerCase();
     for (CartProperties cprop : this) {
       cprop.clearOwners();
       cprop.getOwners().add(arg);
     }
   } else if (key.equals("addowner")) {
     arg = arg.toLowerCase();
     for (CartProperties cprop : this) {
       cprop.getOwners().add(arg);
     }
   } else if (key.equals("remowner")) {
     arg = arg.toLowerCase();
     for (CartProperties cprop : this) {
       cprop.getOwners().remove(arg);
     }
   } else if (LogicUtil.contains(key, "spawnitemdrops", "spawndrops", "killdrops")) {
     this.setSpawnItemDrops(ParseUtil.parseBool(arg));
   } else {
     return false;
   }
   return true;
 }
예제 #26
0
 @Override
 public void setPublic(boolean state) {
   for (CartProperties prop : this) {
     prop.setPublic(state);
   }
 }
예제 #27
0
 @Override
 public void clearOwnerPermissions() {
   for (CartProperties prop : this) {
     prop.clearOwnerPermissions();
   }
 }
예제 #28
0
 @Override
 public void setDestination(String destination) {
   for (CartProperties prop : this) {
     prop.setDestination(destination);
   }
 }
예제 #29
0
 @Override
 public void setSpawnItemDrops(boolean spawnDrops) {
   for (CartProperties prop : this) {
     prop.setSpawnItemDrops(spawnDrops);
   }
 }
예제 #30
0
 @Override
 public void removeTags(String... tags) {
   for (CartProperties prop : this) {
     prop.removeTags(tags);
   }
 }