Make giants ridable. Give giants AI back. Make giants spawn naturally

This commit is contained in:
William Blake Galbreath
2019-05-05 11:59:36 -05:00
parent 746bd99162
commit aea4028037

View File

@@ -1,9 +1,10 @@
From 6dbb74b0dff7c969469327c00739a0f8c00b5da6 Mon Sep 17 00:00:00 2001 From 91bed797863a9878e35581a4bae3099d44beac3f Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com> From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Tue, 30 Apr 2019 19:17:21 -0500 Date: Tue, 30 Apr 2019 19:17:21 -0500
Subject: [PATCH] Integrate ridables Subject: [PATCH] Integrate ridables
--- ---
.../java/net/minecraft/server/BiomeBase.java | 26 ++++++-
.../net/minecraft/server/ControllerJump.java | 1 + .../net/minecraft/server/ControllerJump.java | 1 +
.../server/ControllerLookDolphin.java | 4 +- .../server/ControllerLookDolphin.java | 4 +-
.../java/net/minecraft/server/Entity.java | 13 ++++ .../java/net/minecraft/server/Entity.java | 13 ++++
@@ -15,6 +16,7 @@ Subject: [PATCH] Integrate ridables
.../net/minecraft/server/EntityEnderman.java | 15 ++++ .../net/minecraft/server/EntityEnderman.java | 15 ++++
.../net/minecraft/server/EntityEndermite.java | 15 ++++ .../net/minecraft/server/EntityEndermite.java | 15 ++++
.../java/net/minecraft/server/EntityFish.java | 28 ++++++- .../java/net/minecraft/server/EntityFish.java | 28 ++++++-
.../minecraft/server/EntityGiantZombie.java | 34 +++++++-
.../net/minecraft/server/EntityGuardian.java | 36 ++++++++- .../net/minecraft/server/EntityGuardian.java | 36 ++++++++-
.../net/minecraft/server/EntityHorse.java | 10 ++- .../net/minecraft/server/EntityHorse.java | 10 ++-
.../minecraft/server/EntityHorseAbstract.java | 4 +- .../minecraft/server/EntityHorseAbstract.java | 4 +-
@@ -46,11 +48,55 @@ Subject: [PATCH] Integrate ridables
.../purpur/controller/ControllerMoveWASD.java | 77 +++++++++++++++++++ .../purpur/controller/ControllerMoveWASD.java | 77 +++++++++++++++++++
.../controller/ControllerMoveWASDWater.java | 42 ++++++++++ .../controller/ControllerMoveWASDWater.java | 42 ++++++++++
.../craftbukkit/entity/CraftLivingEntity.java | 12 +++ .../craftbukkit/entity/CraftLivingEntity.java | 12 +++
42 files changed, 791 insertions(+), 40 deletions(-) 44 files changed, 849 insertions(+), 42 deletions(-)
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
index 3496d423..e59ee303 100644
--- a/src/main/java/net/minecraft/server/BiomeBase.java
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
@@ -196,6 +196,7 @@ public abstract class BiomeBase {
return this.aR != null;
}
+ protected void addMobSpawn(EnumCreatureType creaturetype, BiomeBase.BiomeMeta biomemeta) { a(creaturetype, biomemeta); } // Purpur - OBFHELPER
protected void a(EnumCreatureType enumcreaturetype, BiomeBase.BiomeMeta biomebase_biomemeta) {
((List) this.aZ.get(enumcreaturetype)).add(biomebase_biomemeta);
}
@@ -463,7 +464,30 @@ public abstract class BiomeBase {
a(166, "modified_wooded_badlands_plateau", new BiomeMesaPlateauMutated());
a(167, "modified_badlands_plateau", new BiomeMesaPlateauClearMutated());
Collections.addAll(BiomeBase.aG, new BiomeBase[] { Biomes.OCEAN, Biomes.PLAINS, Biomes.DESERT, Biomes.MOUNTAINS, Biomes.FOREST, Biomes.TAIGA, Biomes.SWAMP, Biomes.RIVER, Biomes.FROZEN_RIVER, Biomes.SNOWY_TUNDRA, Biomes.SNOWY_MOUNTAINS, Biomes.MUSHROOM_FIELDS, Biomes.MUSHROOM_FIELD_SHORE, Biomes.BEACH, Biomes.DESERT_HILLS, Biomes.WOODED_HILLS, Biomes.TAIGA_HILLS, Biomes.JUNGLE, Biomes.JUNGLE_HILLS, Biomes.JUNGLE_EDGE, Biomes.DEEP_OCEAN, Biomes.STONE_SHORE, Biomes.SNOWY_BEACH, Biomes.BIRCH_FOREST, Biomes.BIRCH_FOREST_HILLS, Biomes.DARK_FOREST, Biomes.SNOWY_TAIGA, Biomes.SNOWY_TAIGA_HILLS, Biomes.GIANT_TREE_TAIGA, Biomes.GIANT_TREE_TAIGA_HILLS, Biomes.WOODED_MOUNTAINS, Biomes.SAVANNA, Biomes.SAVANNA_PLATEAU, Biomes.BADLANDS, Biomes.WOODED_BADLANDS_PLATEAU, Biomes.BADLANDS_PLATEAU});
- }
+
+ // Purpur start - add natural mob spawns (maybe find a better place for this?)
+ BiomeBase.addSpawn("plains", EnumCreatureType.MONSTER, EntityTypes.GIANT, 5, 1, 1);
+ BiomeBase.addSpawn("sunflower_plains", EnumCreatureType.MONSTER, EntityTypes.GIANT, 5, 1, 1);
+ BiomeBase.addSpawn("desert", EnumCreatureType.MONSTER, EntityTypes.GIANT, 2, 1, 1);
+ BiomeBase.addSpawn("desert_hills", EnumCreatureType.MONSTER, EntityTypes.GIANT, 2, 1, 1);
+ BiomeBase.addSpawn("desert_lakes", EnumCreatureType.MONSTER, EntityTypes.GIANT, 2, 1, 1);
+ BiomeBase.addSpawn("mountains", EnumCreatureType.MONSTER, EntityTypes.GIANT, 5, 1, 1);
+ BiomeBase.addSpawn("gravelly_mountains", EnumCreatureType.MONSTER, EntityTypes.GIANT, 5, 1, 1);
+ BiomeBase.addSpawn("modified_gravelly_mountains", EnumCreatureType.MONSTER, EntityTypes.GIANT, 5, 1, 1);
+ BiomeBase.addSpawn("savanna", EnumCreatureType.MONSTER, EntityTypes.GIANT, 5, 1, 2);
+ BiomeBase.addSpawn("savanna_plateau", EnumCreatureType.MONSTER, EntityTypes.GIANT, 5, 1, 2);
+ BiomeBase.addSpawn("shattered_savanna", EnumCreatureType.MONSTER, EntityTypes.GIANT, 5, 1, 2);
+ BiomeBase.addSpawn("shattered_savanna_plateau", EnumCreatureType.MONSTER, EntityTypes.GIANT, 5, 1, 2);
+ BiomeBase.addSpawn("badlands", EnumCreatureType.MONSTER, EntityTypes.GIANT, 10, 1, 2);
+ BiomeBase.addSpawn("badlands_plateau", EnumCreatureType.MONSTER, EntityTypes.GIANT, 10, 1, 2);
+ BiomeBase.addSpawn("eroded_badlands", EnumCreatureType.MONSTER, EntityTypes.GIANT, 10, 1, 2);
+ BiomeBase.addSpawn("modified_badlands_plateau", EnumCreatureType.MONSTER, EntityTypes.GIANT, 10, 2, 1);
+ }
+
+ private static void addSpawn(String biome, EnumCreatureType ct, EntityTypes et, int weight, int min_group, int max_group) {
+ IRegistry.BIOME.get(new MinecraftKey(biome)).addMobSpawn(ct, new BiomeBase.BiomeMeta(et, weight, min_group, max_group));
+ }
+ // Purpur end
private static void a(int i, String s, BiomeBase biomebase) {
IRegistry.BIOME.a(i, new MinecraftKey(s), biomebase);
diff --git a/src/main/java/net/minecraft/server/ControllerJump.java b/src/main/java/net/minecraft/server/ControllerJump.java diff --git a/src/main/java/net/minecraft/server/ControllerJump.java b/src/main/java/net/minecraft/server/ControllerJump.java
index 489beed2..041f0763 100644 index 489beed2..041f0763 100644
--- a/src/main/java/net/minecraft/server/ControllerJump.java --- a/src/main/java/net/minecraft/server/ControllerJump.java
@@ -488,6 +534,63 @@ index 5da2d72a..ecfcbe31 100644
if (this.i.a(TagsFluid.WATER)) { if (this.i.a(TagsFluid.WATER)) {
this.i.motY += 0.005D; this.i.motY += 0.005D;
} }
diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java
index dd827aea..f7a4e87c 100644
--- a/src/main/java/net/minecraft/server/EntityGiantZombie.java
+++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java
@@ -7,6 +7,11 @@ public class EntityGiantZombie extends EntityMonster {
public EntityGiantZombie(World world) {
super(EntityTypes.GIANT, world);
this.setSize(this.width * 6.0F, this.length * 6.0F);
+ // Purpur start
+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this);
+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this);
+ this.canBeRiddenInWater = true;
+ // Purpur end
}
public float getHeadHeight() {
@@ -20,12 +25,39 @@ public class EntityGiantZombie extends EntityMonster {
this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(50.0D);
}
+ // Purpur start - initPathfinder
+ @Override
+ protected void n() {
+ this.goalSelector.a(0, new PathfinderGoalFloat(this));
+ this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, 1.0D, false));
+ this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D));
+ this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 16.0F));
+ this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
+ this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D));
+ this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true, EntityHuman.class));
+ this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
+ this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillager.class, false));
+ this.targetSelector.a(4, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, true));
+ this.targetSelector.a(5, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, true));
+ }
+ // Purpur
+
public float a(BlockPosition blockposition, IWorldReader iworldreader) {
- return iworldreader.A(blockposition) - 0.5F;
+ return super.a(blockposition, iworldreader); // Purpur - fix light requirements for natural spawns
}
@Nullable
protected MinecraftKey getDefaultLootTable() {
return LootTables.A;
}
+
+ // Purpur start - processInteract
+ @Override
+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) {
+ if (super.a(entityhuman, enumhand)) {
+ return true; // vanilla action handled
+ }
+ return tryRide(entityhuman, enumhand);
+ }
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java
index 072236ec..e04cb7c0 100644 index 072236ec..e04cb7c0 100644
--- a/src/main/java/net/minecraft/server/EntityGuardian.java --- a/src/main/java/net/minecraft/server/EntityGuardian.java