Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.modcrafting.mobspeed;
- import java.io.File;
- import java.io.IOException;
- import java.lang.reflect.Field;
- import net.minecraft.server.EntityHuman;
- import net.minecraft.server.EntityLiving;
- import net.minecraft.server.EntityVillager;
- import net.minecraft.server.EntityZombie;
- import net.minecraft.server.PathfinderGoalBreakDoor;
- import net.minecraft.server.PathfinderGoalFloat;
- import net.minecraft.server.PathfinderGoalLookAtPlayer;
- import net.minecraft.server.PathfinderGoalMeleeAttack;
- import net.minecraft.server.PathfinderGoalMoveThroughVillage;
- import net.minecraft.server.PathfinderGoalMoveTowardsRestriction;
- import net.minecraft.server.PathfinderGoalRandomLookaround;
- import net.minecraft.server.PathfinderGoalRandomStroll;
- import net.minecraft.server.PathfinderGoalSelector;
- import net.minecraft.server.WorldServer;
- import org.bukkit.Server;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.craftbukkit.CraftWorld;
- import org.bukkit.craftbukkit.entity.CraftZombie;
- import org.bukkit.entity.LivingEntity;
- import org.bukkit.entity.Zombie;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.CreatureSpawnEvent;
- import org.bukkit.plugin.PluginManager;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Mobspeed extends JavaPlugin
- implements Listener
- {
- public void onDisable()
- {
- reloadConfig();
- }
- public void onEnable() {
- getDataFolder().mkdir();
- File cfg = new File(getDataFolder(), "config.yml");
- if (!cfg.exists()) {
- try {
- cfg.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- getConfig().set("ZombieSpeed", "0.23F");
- saveConfig();
- }
- getServer().getPluginManager().registerEvents(this, this);
- }
- @EventHandler
- public void onCreatureSpawn(CreatureSpawnEvent event) {
- if (!(event.getEntity() instanceof Zombie)) return;
- EntityZombie zombie = ((CraftZombie)event.getEntity()).getHandle();
- try
- {
- Field fGoalSelector = EntityLiving.class.getDeclaredField("goalSelector");
- fGoalSelector.setAccessible(true);
- Float speed = Float.valueOf(0.23F);
- if (getConfig().getString("ZombieSpeed") != null)
- speed = Float.valueOf(Float.parseFloat(getConfig().getString("ZombieSpeed")));
- PathfinderGoalSelector gs = new PathfinderGoalSelector(
- (((CraftWorld)event.getEntity().getWorld()).getHandle() != null) &&
- (((CraftWorld)event.getEntity().getWorld()).getHandle().methodProfiler != null) ?
- ((CraftWorld)event.getEntity().getWorld()).getHandle().methodProfiler : null);
- gs.a(0, new PathfinderGoalFloat(zombie));
- gs.a(1, new PathfinderGoalBreakDoor(zombie));
- gs.a(2, new PathfinderGoalMeleeAttack(zombie, EntityHuman.class, speed.floatValue(), false));
- gs.a(3, new PathfinderGoalMeleeAttack(zombie, EntityVillager.class, speed.floatValue(), true));
- gs.a(4, new PathfinderGoalMoveTowardsRestriction(zombie, speed.floatValue()));
- gs.a(5, new PathfinderGoalMoveThroughVillage(zombie, speed.floatValue(), false));
- gs.a(6, new PathfinderGoalRandomStroll(zombie, speed.floatValue()));
- gs.a(7, new PathfinderGoalLookAtPlayer(zombie, EntityHuman.class, 15.0F));
- gs.a(7, new PathfinderGoalRandomLookaround(zombie));
- fGoalSelector.set(zombie, gs);
- } catch (NumberFormatException e) {
- e.printStackTrace();
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement