From 31e92ac25f573322ba4631432c327b94ba7933a1 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sat, 16 Feb 2019 17:49:55 +0200 Subject: [PATCH] Well that worked --- .../com/minelittlepony/unicopia/Unicopia.java | 23 ++++++++++++------ .../particle/client/ParticleSphere.java | 2 +- .../unicopia/structure/AbstractFeature.java | 13 ++++++++++ .../unicopia/structure/CloudDungeon.java | 14 ++++++++--- .../structure/TemplateBasedFeature.java | 3 +-- .../unicopia/world/CloudGen.java | 15 +++++++++--- .../minelittlepony/unicopia/world/UWorld.java | 22 ++++++++++++++++- .../structures/cloud/temple_small.nbt | Bin 0 -> 5792 bytes 8 files changed, 75 insertions(+), 17 deletions(-) create mode 100644 src/main/resources/assets/unicopia/structures/cloud/temple_small.nbt diff --git a/src/main/java/com/minelittlepony/unicopia/Unicopia.java b/src/main/java/com/minelittlepony/unicopia/Unicopia.java index efa7586a..28e57d8b 100644 --- a/src/main/java/com/minelittlepony/unicopia/Unicopia.java +++ b/src/main/java/com/minelittlepony/unicopia/Unicopia.java @@ -16,6 +16,7 @@ import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.structure.MapGenStructureIO; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.entity.ProjectileImpactEvent; import net.minecraftforge.event.entity.item.ItemTossEvent; @@ -55,6 +56,7 @@ import com.minelittlepony.unicopia.command.Commands; import com.minelittlepony.unicopia.enchanting.Pages; import com.minelittlepony.unicopia.enchanting.SpellRecipe; import com.minelittlepony.unicopia.forgebullshit.FBS; +import com.minelittlepony.unicopia.forgebullshit.FUF; import com.minelittlepony.unicopia.inventory.gui.ContainerSpellBook; import com.minelittlepony.unicopia.inventory.gui.GuiSpellBook; import com.minelittlepony.unicopia.network.MsgPlayerAbility; @@ -76,6 +78,8 @@ import com.minelittlepony.unicopia.world.UWorld; ) @EventBusSubscriber public class Unicopia implements IGuiHandler { + + public static final String MODID = "unicopia"; public static final String NAME = "@NAME@"; public static final String VERSION = "@VERSION@"; @@ -86,10 +90,22 @@ public class Unicopia implements IGuiHandler { private static CraftingManager craftingManager; + @EventHandler public void preInit(FMLPreInitializationEvent event) { UConfig.init(event.getModConfigurationDirectory()); UClient.instance().preInit(event); + UWorld.instance().init(); + + MinecraftForge.TERRAIN_GEN_BUS.register(Unicopia.class); + } + + @FUF(reason = "Why u no run!?!??!") + @SubscribeEvent + public static void onStructureGenStatic(PopulateChunkEvent.Populate event) { + if (event.getType() == EventType.DUNGEON) { + UWorld.instance().generateStructures(event.getWorld(), event.getChunkX(), event.getChunkZ(), event.getGen()); + } } @EventHandler @@ -132,13 +148,6 @@ public class Unicopia implements IGuiHandler { MapGenStructureIO.registerStructureComponent(CloudDungeon.class, "unicopia:cloud_dungeon"); } - @EventHandler - public static void onStructureGen(PopulateChunkEvent.Populate event) { - if (event.getType() == EventType.DUNGEON) { - UWorld.instance().generateStructures(event.getWorld(), event.getChunkX(), event.getChunkZ(), event.getGen()); - } - } - public static CraftingManager getCraftingManager() { return craftingManager; } diff --git a/src/main/java/com/minelittlepony/unicopia/particle/client/ParticleSphere.java b/src/main/java/com/minelittlepony/unicopia/particle/client/ParticleSphere.java index 111ca568..a29a7d22 100644 --- a/src/main/java/com/minelittlepony/unicopia/particle/client/ParticleSphere.java +++ b/src/main/java/com/minelittlepony/unicopia/particle/client/ParticleSphere.java @@ -80,7 +80,7 @@ public class ParticleSphere extends Particle implements IAttachableParticle { GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); - if (alpha < 0) { + if (alpha < 1) { GlStateManager.depthMask(false); GlStateManager.shadeModel(GL11.GL_SMOOTH); GlStateManager.tryBlendFuncSeparate( diff --git a/src/main/java/com/minelittlepony/unicopia/structure/AbstractFeature.java b/src/main/java/com/minelittlepony/unicopia/structure/AbstractFeature.java index 59faa502..f2512437 100644 --- a/src/main/java/com/minelittlepony/unicopia/structure/AbstractFeature.java +++ b/src/main/java/com/minelittlepony/unicopia/structure/AbstractFeature.java @@ -107,6 +107,19 @@ public abstract class AbstractFeature extends StructureComponent { super(x, z); addComponents(world, rand, x, z, biome); updateBoundingBox(); + init(world, rand, x, z, biome); + } + + protected void init(World world, Random rand, int x, int z, Biome biome) { + + } + + public void offset(int x, int y, int z) { + boundingBox.offset(x, y, z); + + for (StructureComponent structurecomponent : components) { + structurecomponent.offset(x, y, z); + } } protected abstract void addComponents(World world, Random ran, int x, int z, Biome biome); diff --git a/src/main/java/com/minelittlepony/unicopia/structure/CloudDungeon.java b/src/main/java/com/minelittlepony/unicopia/structure/CloudDungeon.java index 59d7f7a8..9c6baadd 100644 --- a/src/main/java/com/minelittlepony/unicopia/structure/CloudDungeon.java +++ b/src/main/java/com/minelittlepony/unicopia/structure/CloudDungeon.java @@ -12,16 +12,24 @@ import net.minecraft.world.gen.structure.template.TemplateManager; public class CloudDungeon extends TemplateBasedFeature { - private static final ResourceLocation STRUCTURE = new ResourceLocation(Unicopia.MODID, "cloud/dungeon_1"); + private static final ResourceLocation STRUCTURE = new ResourceLocation(Unicopia.MODID, "cloud/temple_small"); + + public CloudDungeon() { + } public CloudDungeon(Random rand, int x, int z) { - super(rand, x, 120, z, 7, 5, 8); + super(rand, x, 0, z, 7, 5, 8); } @Override public boolean addComponentParts(World world, BlockPos startPos, TemplateManager templates, PlacementSettings placement) { + + if (startPos.getY() < 200) { + startPos = new BlockPos(startPos.getX(), 200, startPos.getZ()); + } + applyTemplate(world, startPos, templates, placement, STRUCTURE); - return false; + return true; } } diff --git a/src/main/java/com/minelittlepony/unicopia/structure/TemplateBasedFeature.java b/src/main/java/com/minelittlepony/unicopia/structure/TemplateBasedFeature.java index fd8f9ea1..c5b80a00 100644 --- a/src/main/java/com/minelittlepony/unicopia/structure/TemplateBasedFeature.java +++ b/src/main/java/com/minelittlepony/unicopia/structure/TemplateBasedFeature.java @@ -28,7 +28,6 @@ public abstract class TemplateBasedFeature extends AbstractFeature { super(rand, x, y, z, sizeX, sizeY, sizeX); } - @Override public boolean addComponentParts(World world, Random rand, StructureBoundingBox bounds) { @@ -53,7 +52,7 @@ public abstract class TemplateBasedFeature extends AbstractFeature { } protected void applyTemplate(World world, BlockPos startPos, TemplateManager templates, PlacementSettings placement, ResourceLocation templateId) { - Template template = templates.get(world.getMinecraftServer(), templateId); + Template template = templates.getTemplate(world.getMinecraftServer(), templateId); template.addBlocksToWorldChunk(world, startPos, placement); diff --git a/src/main/java/com/minelittlepony/unicopia/world/CloudGen.java b/src/main/java/com/minelittlepony/unicopia/world/CloudGen.java index 3b8826d1..f08e69ee 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/CloudGen.java +++ b/src/main/java/com/minelittlepony/unicopia/world/CloudGen.java @@ -9,6 +9,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.structure.MapGenScatteredFeature; +import net.minecraft.world.gen.structure.StructureBoundingBox; import net.minecraft.world.gen.structure.StructureStart; public class CloudGen extends MapGenScatteredFeature { @@ -29,19 +30,27 @@ public class CloudGen extends MapGenScatteredFeature { } public static class Start extends AbstractFeature.Start { - public Start() { } + public Start() { + + } public Start(World world, Random rand, int x, int z) { super(world, rand, x, z); } - public Start(World world, Random rand, int x, int z, Biome biome) { - super(world, rand, x, z, biome); + @Override + protected void init(World world, Random rand, int x, int z, Biome biome) { + setRandomHeight(world, rand, 150, world.getActualHeight() - getBoundingBox().getYSize()); } @Override protected void addComponents(World world, Random rand, int x, int z, Biome biome) { components.add(new CloudDungeon(rand, x * 16, z * 16)); } + + @Override + public void generateStructure(World world, Random rand, StructureBoundingBox bounds) { + super.generateStructure(world, rand, bounds); + } } } diff --git a/src/main/java/com/minelittlepony/unicopia/world/UWorld.java b/src/main/java/com/minelittlepony/unicopia/world/UWorld.java index 2b0d5823..a6707ef8 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/UWorld.java +++ b/src/main/java/com/minelittlepony/unicopia/world/UWorld.java @@ -1,6 +1,7 @@ package com.minelittlepony.unicopia.world; import java.util.Queue; +import java.util.Random; import com.google.common.collect.Queues; import com.minelittlepony.jumpingcastle.Exceptions; @@ -8,10 +9,14 @@ import com.minelittlepony.unicopia.Unicopia; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.World; +import net.minecraft.world.chunk.ChunkPrimer; +import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.ChunkGeneratorOverworld; import net.minecraft.world.gen.IChunkGenerator; +import net.minecraftforge.fml.common.IWorldGenerator; +import net.minecraftforge.fml.common.registry.GameRegistry; -public class UWorld { +public class UWorld implements IWorldGenerator { private static final UWorld instance = new UWorld(); @@ -40,6 +45,10 @@ public class UWorld { private CloudGen cloudStructureGen = new CloudGen(); + public void init() { + GameRegistry.registerWorldGenerator(this, 1); + } + public void generateStructures(World world, int chunkX, int chunkZ, IChunkGenerator gen) { if (gen instanceof ChunkGeneratorOverworld) { if (world.getWorldInfo().isMapFeaturesEnabled()) { @@ -49,4 +58,15 @@ public class UWorld { } } } + + @Override + public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { + if (chunkGenerator instanceof ChunkGeneratorOverworld) { + if (world.getWorldInfo().isMapFeaturesEnabled()) { + ChunkPrimer primer = new ChunkPrimer(); + + cloudStructureGen.generate(world, chunkX, chunkZ, primer); + } + } + } } diff --git a/src/main/resources/assets/unicopia/structures/cloud/temple_small.nbt b/src/main/resources/assets/unicopia/structures/cloud/temple_small.nbt new file mode 100644 index 0000000000000000000000000000000000000000..f08b8296d313bd771d1c1a1832a0ae63a87639da GIT binary patch literal 5792 zcmdT|dr(u^8Baj)4Xsq=Ay8M%_`oHIiXf6!cUT{B6|hx&5hr4ns<14C#bN?QuinP>~3ak2e)G*>{$9!o&J5 zjaFK(_K}BaXxyn$tybdFGu@>vmV5e~)OU7rtKqKckw{U$wy#SEw>PWDJUiPsPZGIb ze><&HG2x+yN@=$)JdP%p)p30b+H_L26!xm9RI1deRaM)3piddgsH+?o@)lA^4#@|g z^Nc0bl>%G(!V4ttx4Gls-J98PK4HS2vP%)z^M8w!%Wpc9NWR5t;M zzJNl`NZte;V>nY?1!UQR3*>?{PL^LL&sI!gCPzc@3@hr-1q0eOLY*~ z@cc&U{YSSsJ6iK>#N_Ve#n4BL6;vmI72T$Y+??zL(HX0#{jcmx_ci=<0ZNz;=CL7m zCh>+|?kC>R6E5L~PDlFeO-X+NIWjz`c8>OR62&SbsR8;0V>5NRz)nWGU?oh__jE2* z+By<+En@!TXM$29MJLX{bQBG7``>PkLS2~z&;)RPap*`?q{T$uA z!fY$r7m>GwZe8@Hei^lKPBL}~&X{M6}x{Evmj8Y zZB!cpa$HjpqhUgfRJHN2oUvFZbE3kVmg-F?m(=bwpRoFU2Fw4Rm8lg;-#X$FUPLM2B!J%aWLjMNai6-#?sICH89Y`%T zpDaV)6ePKAK?~$%>6=`Hs-xS0E-3*B(ZBID7yTd{IStU}XIE{hG05M6t{1nOBj&Am zVA^ejX7-|GPh!g933hetEDzwTZFDiA11$;PW^SPI(66ObL`7l)1tj`W))y)dSg>e}a)nQb35raH4s=n3RZr*WF$pnP8%7NO3!BjNg8bwzqWR~vR zB5+|?BEW86MDP@GzpIv%P!|PT=Se2zB9rrhr~Q^7gSi zj;tAh7=QUSk`aL7&-nREObYvZs&7Kn&?yA?9Wg0ZVpN@xm1W2Wk6X@JS#}6uO8eyfdR#2o1OL> z@WvyM^70>eu;VX-Z-oMDGrEK^^|CPTW0f(pX!&ymYYW17ko6eAWr0rmjar1WCUG9; zZ;xBLDtsp|AuySh3iuVP%(XR|+1MePdI?H_ENh$~KRXkH{MUmm_?2b)HbQD60_F=z zsvIQ7J_@whFLwNyo8|9Qy7KdDI1n};qk{V5-9DJ*xcD-FJN=@jG?*UZz})GZ0^4Ha7AR z_{_L0x*!dQS9lBJ5!+xS_U-orJCM6E&~6GbZ~kkYJv5Kbj_dM?cZA1egzeSFp~=qe zB6>+uB0aeTs~xX_YW9qo29f`_8JY8<2E>ntHoX66NapWYVa|J;XzVwihol$i~Yj1o}W}lOq@bKVCr95{5>+>B(Y-=zlej zDUgZBN9>JQ1#ohl_-A$__A-cYsOdkk4im_6iYXmgibXr-4&-%C$&~ttr@LGJv59WU z8$(Uv#8VNRTlfwC&Gj))&oNqg>pwRew0&AB+$^n!b@vR@qna+A{kPK+SSMA%YEc`v z`gkJz{z|jPzn!c9+|Zt{38=AACqnA_jB4lYQy6od`=~|DF|lAZ+lKhStf6hyRhk8w$^D({-z+xwV7w!Xwv@eBu7p%FpEPk)pPH z<5Sh8_Oz?Cl-;1(!`IQGXBceYV z_zx!4Pl_{g4CCX&_3&U+SfoKc-KX!;3WNGoYtAN;reM`r){rs`XsKa&9{t>eLkOAl EZ$14;i~s-t literal 0 HcmV?d00001