mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-03-04 09:11:28 +01:00
Well that worked
This commit is contained in:
parent
19d81acfc4
commit
31e92ac25f
8 changed files with 75 additions and 17 deletions
|
@ -16,6 +16,7 @@ import net.minecraft.util.math.RayTraceResult;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.gen.structure.MapGenStructureIO;
|
import net.minecraft.world.gen.structure.MapGenStructureIO;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.event.RegistryEvent;
|
import net.minecraftforge.event.RegistryEvent;
|
||||||
import net.minecraftforge.event.entity.ProjectileImpactEvent;
|
import net.minecraftforge.event.entity.ProjectileImpactEvent;
|
||||||
import net.minecraftforge.event.entity.item.ItemTossEvent;
|
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.Pages;
|
||||||
import com.minelittlepony.unicopia.enchanting.SpellRecipe;
|
import com.minelittlepony.unicopia.enchanting.SpellRecipe;
|
||||||
import com.minelittlepony.unicopia.forgebullshit.FBS;
|
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.ContainerSpellBook;
|
||||||
import com.minelittlepony.unicopia.inventory.gui.GuiSpellBook;
|
import com.minelittlepony.unicopia.inventory.gui.GuiSpellBook;
|
||||||
import com.minelittlepony.unicopia.network.MsgPlayerAbility;
|
import com.minelittlepony.unicopia.network.MsgPlayerAbility;
|
||||||
|
@ -76,6 +78,8 @@ import com.minelittlepony.unicopia.world.UWorld;
|
||||||
)
|
)
|
||||||
@EventBusSubscriber
|
@EventBusSubscriber
|
||||||
public class Unicopia implements IGuiHandler {
|
public class Unicopia implements IGuiHandler {
|
||||||
|
|
||||||
|
|
||||||
public static final String MODID = "unicopia";
|
public static final String MODID = "unicopia";
|
||||||
public static final String NAME = "@NAME@";
|
public static final String NAME = "@NAME@";
|
||||||
public static final String VERSION = "@VERSION@";
|
public static final String VERSION = "@VERSION@";
|
||||||
|
@ -86,10 +90,22 @@ public class Unicopia implements IGuiHandler {
|
||||||
|
|
||||||
private static CraftingManager craftingManager;
|
private static CraftingManager craftingManager;
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void preInit(FMLPreInitializationEvent event) {
|
public void preInit(FMLPreInitializationEvent event) {
|
||||||
UConfig.init(event.getModConfigurationDirectory());
|
UConfig.init(event.getModConfigurationDirectory());
|
||||||
UClient.instance().preInit(event);
|
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
|
@EventHandler
|
||||||
|
@ -132,13 +148,6 @@ public class Unicopia implements IGuiHandler {
|
||||||
MapGenStructureIO.registerStructureComponent(CloudDungeon.class, "unicopia:cloud_dungeon");
|
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() {
|
public static CraftingManager getCraftingManager() {
|
||||||
return craftingManager;
|
return craftingManager;
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ public class ParticleSphere extends Particle implements IAttachableParticle {
|
||||||
|
|
||||||
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
|
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
|
||||||
|
|
||||||
if (alpha < 0) {
|
if (alpha < 1) {
|
||||||
GlStateManager.depthMask(false);
|
GlStateManager.depthMask(false);
|
||||||
GlStateManager.shadeModel(GL11.GL_SMOOTH);
|
GlStateManager.shadeModel(GL11.GL_SMOOTH);
|
||||||
GlStateManager.tryBlendFuncSeparate(
|
GlStateManager.tryBlendFuncSeparate(
|
||||||
|
|
|
@ -107,6 +107,19 @@ public abstract class AbstractFeature extends StructureComponent {
|
||||||
super(x, z);
|
super(x, z);
|
||||||
addComponents(world, rand, x, z, biome);
|
addComponents(world, rand, x, z, biome);
|
||||||
updateBoundingBox();
|
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);
|
protected abstract void addComponents(World world, Random ran, int x, int z, Biome biome);
|
||||||
|
|
|
@ -12,16 +12,24 @@ import net.minecraft.world.gen.structure.template.TemplateManager;
|
||||||
|
|
||||||
public class CloudDungeon extends TemplateBasedFeature {
|
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) {
|
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
|
@Override
|
||||||
public boolean addComponentParts(World world, BlockPos startPos, TemplateManager templates, PlacementSettings placement) {
|
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);
|
applyTemplate(world, startPos, templates, placement, STRUCTURE);
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,6 @@ public abstract class TemplateBasedFeature extends AbstractFeature {
|
||||||
super(rand, x, y, z, sizeX, sizeY, sizeX);
|
super(rand, x, y, z, sizeX, sizeY, sizeX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addComponentParts(World world, Random rand, StructureBoundingBox bounds) {
|
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) {
|
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);
|
template.addBlocksToWorldChunk(world, startPos, placement);
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraft.world.gen.structure.MapGenScatteredFeature;
|
import net.minecraft.world.gen.structure.MapGenScatteredFeature;
|
||||||
|
import net.minecraft.world.gen.structure.StructureBoundingBox;
|
||||||
import net.minecraft.world.gen.structure.StructureStart;
|
import net.minecraft.world.gen.structure.StructureStart;
|
||||||
|
|
||||||
public class CloudGen extends MapGenScatteredFeature {
|
public class CloudGen extends MapGenScatteredFeature {
|
||||||
|
@ -29,19 +30,27 @@ public class CloudGen extends MapGenScatteredFeature {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Start extends AbstractFeature.Start {
|
public static class Start extends AbstractFeature.Start {
|
||||||
public Start() { }
|
public Start() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public Start(World world, Random rand, int x, int z) {
|
public Start(World world, Random rand, int x, int z) {
|
||||||
super(world, rand, x, z);
|
super(world, rand, x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Start(World world, Random rand, int x, int z, Biome biome) {
|
@Override
|
||||||
super(world, rand, x, z, biome);
|
protected void init(World world, Random rand, int x, int z, Biome biome) {
|
||||||
|
setRandomHeight(world, rand, 150, world.getActualHeight() - getBoundingBox().getYSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void addComponents(World world, Random rand, int x, int z, Biome biome) {
|
protected void addComponents(World world, Random rand, int x, int z, Biome biome) {
|
||||||
components.add(new CloudDungeon(rand, x * 16, z * 16));
|
components.add(new CloudDungeon(rand, x * 16, z * 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateStructure(World world, Random rand, StructureBoundingBox bounds) {
|
||||||
|
super.generateStructure(world, rand, bounds);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.minelittlepony.unicopia.world;
|
package com.minelittlepony.unicopia.world;
|
||||||
|
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import com.google.common.collect.Queues;
|
import com.google.common.collect.Queues;
|
||||||
import com.minelittlepony.jumpingcastle.Exceptions;
|
import com.minelittlepony.jumpingcastle.Exceptions;
|
||||||
|
@ -8,10 +9,14 @@ import com.minelittlepony.unicopia.Unicopia;
|
||||||
|
|
||||||
import net.minecraft.util.math.ChunkPos;
|
import net.minecraft.util.math.ChunkPos;
|
||||||
import net.minecraft.world.World;
|
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.ChunkGeneratorOverworld;
|
||||||
import net.minecraft.world.gen.IChunkGenerator;
|
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();
|
private static final UWorld instance = new UWorld();
|
||||||
|
|
||||||
|
@ -40,6 +45,10 @@ public class UWorld {
|
||||||
|
|
||||||
private CloudGen cloudStructureGen = new CloudGen();
|
private CloudGen cloudStructureGen = new CloudGen();
|
||||||
|
|
||||||
|
public void init() {
|
||||||
|
GameRegistry.registerWorldGenerator(this, 1);
|
||||||
|
}
|
||||||
|
|
||||||
public void generateStructures(World world, int chunkX, int chunkZ, IChunkGenerator gen) {
|
public void generateStructures(World world, int chunkX, int chunkZ, IChunkGenerator gen) {
|
||||||
if (gen instanceof ChunkGeneratorOverworld) {
|
if (gen instanceof ChunkGeneratorOverworld) {
|
||||||
if (world.getWorldInfo().isMapFeaturesEnabled()) {
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Loading…
Add table
Reference in a new issue