mirror of
https://github.com/GTMEGA/EndlessIDs.git
synced 2026-11-12 08:27:49 +00:00
Random Things compat (#37)
This commit is contained in:
5 files changed
+135
No files matched your search
+63
@@ -0,0 +1,63 @@
|
||||
package com.falsepattern.endlessids.mixin.mixins.common.randomthings;
|
||||
|
||||
import com.falsepattern.endlessids.mixin.helpers.IChunkMixin;
|
||||
import lumien.randomthings.Items.ItemBiomeCapsule;
|
||||
import lumien.randomthings.Items.ItemBiomePainter;
|
||||
import lumien.randomthings.Items.ModItems;
|
||||
import lumien.randomthings.Network.Messages.MessagePaintBiome;
|
||||
import lumien.randomthings.Network.PacketHandler;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
|
||||
@Mixin(ItemBiomePainter.class)
|
||||
public abstract class ItemBiomePainterMixin {
|
||||
/**
|
||||
* @author FalsePattern
|
||||
* @reason getBiomeArray fix
|
||||
*/
|
||||
@Overwrite
|
||||
public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) {
|
||||
if (!par2EntityPlayer.inventory.hasItem(ModItems.biomeCapsule)) {
|
||||
return false;
|
||||
} else if (par3World.isRemote) {
|
||||
return true;
|
||||
} else {
|
||||
for(int i = 0; i < par2EntityPlayer.inventory.getSizeInventory(); ++i) {
|
||||
ItemStack is = par2EntityPlayer.inventory.getStackInSlot(i);
|
||||
if (is != null && is.getItem() instanceof ItemBiomeCapsule && is.getItemDamage() != 0) {
|
||||
NBTTagCompound nbt = is.stackTagCompound;
|
||||
if (nbt == null) {
|
||||
nbt = is.stackTagCompound = new NBTTagCompound();
|
||||
}
|
||||
|
||||
int charges = nbt.getInteger("charges");
|
||||
if (charges > 0 || par2EntityPlayer.capabilities.isCreativeMode) {
|
||||
Chunk c = par3World.getChunkFromBlockCoords(par4, par6);
|
||||
int biomeID = is.getItemDamage() - 1;
|
||||
short[] biomeArray = ((IChunkMixin)c).getBiomeShortArray(); //changed
|
||||
if ((biomeArray[(par6 & 15) << 4 | par4 & 15] & 255) != biomeID) {
|
||||
biomeArray[(par6 & 15) << 4 | par4 & 15] = (short)(biomeID & 0xFFFF); //changed
|
||||
((IChunkMixin)c).setBiomeShortArray(biomeArray); //changed
|
||||
if (!par2EntityPlayer.capabilities.isCreativeMode) {
|
||||
nbt.setInteger("charges", charges - 1);
|
||||
par2EntityPlayer.inventoryContainer.detectAndSendChanges();
|
||||
}
|
||||
|
||||
PacketHandler.INSTANCE.sendToDimension(new MessagePaintBiome(par4, par5, par6, par3World.provider.dimensionId, biomeID), par3World.provider.dimensionId);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package com.falsepattern.endlessids.mixin.mixins.common.randomthings;
|
||||
|
||||
import com.falsepattern.endlessids.mixin.helpers.IChunkMixin;
|
||||
import lumien.randomthings.Items.ItemBiomeCapsule;
|
||||
import lumien.randomthings.Network.Messages.MessagePaintBiome;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.particle.EntityFX;
|
||||
import net.minecraft.client.particle.EntitySmokeFX;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.world.biome.BiomeGenBase;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.Random;
|
||||
|
||||
@Mixin(value = MessagePaintBiome.class,
|
||||
remap = false)
|
||||
public abstract class MessagePaintBiomeMixin {
|
||||
|
||||
@Shadow private int posZ;
|
||||
|
||||
@Shadow private int posX;
|
||||
|
||||
@Shadow private int biomeID;
|
||||
|
||||
@Shadow private int dimensionID;
|
||||
|
||||
@Shadow private int posY;
|
||||
|
||||
/**
|
||||
* @author FalsePattern
|
||||
* @reason getBiomeArray fix
|
||||
*/
|
||||
@Overwrite
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void onMessage(MessageContext ctx) {
|
||||
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||
if (player != null && player.worldObj.provider.dimensionId == this.dimensionID) {
|
||||
Chunk c = player.worldObj.getChunkFromBlockCoords(this.posX, this.posZ);
|
||||
short[] biomeArray = ((IChunkMixin)c).getBiomeShortArray(); //changed
|
||||
biomeArray[(this.posZ & 15) << 4 | this.posX & 15] = (short)(this.biomeID & 0xFFFF); //changed
|
||||
((IChunkMixin)c).setBiomeShortArray(biomeArray); //changed
|
||||
Minecraft.getMinecraft().thePlayer.worldObj.markBlocksDirtyVertical(this.posX, this.posZ, 0, player.worldObj.getActualHeight());
|
||||
BiomeGenBase biome = BiomeGenBase.getBiome(this.biomeID);
|
||||
int colorInt = ItemBiomeCapsule.getColorForBiome(biome);
|
||||
Random rng = new Random();
|
||||
Color color = new Color(colorInt);
|
||||
|
||||
for(int i = 0; i < 64; ++i) {
|
||||
EntityFX smoke = new EntitySmokeFX(player.worldObj, (float)this.posX + rng.nextFloat(), (float)this.posY + rng.nextFloat(), (float)this.posZ + rng.nextFloat(), 0.0, 0.0, 0.0);
|
||||
smoke.setRBGColorF(0.003921569F * (float)color.getRed(), 0.003921569F * (float)color.getGreen(), 0.003921569F * (float)color.getBlue());
|
||||
Minecraft.getMinecraft().effectRenderer.addEffect(smoke);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -165,6 +165,10 @@ public enum Mixin implements IMixin {
|
||||
NetherliciousBiomeConfigurationMixin(Side.COMMON, require(TargetedMod.NETHERLICIOUS),
|
||||
"netherlicious.BiomeConfigurationMixin"),
|
||||
//endregion Netherlicious->common
|
||||
//region RandomThings->common
|
||||
ItemBiomePainterMixin(Side.COMMON, require(TargetedMod.RANDOMTHINGS), "randomthings.ItemBiomePainterMixin"),
|
||||
MessagePaintBiomeMixin(Side.COMMON, require(TargetedMod.RANDOMTHINGS), "randomthings.MessagePaintBiomeMixin"),
|
||||
//endregion RandomThings->common
|
||||
//region RTG->common
|
||||
RTGChunkProviderRTGMixin(Side.COMMON, require(TargetedMod.RTG), "rtg.ChunkProviderRTGMixin"),
|
||||
RTGLandscapeGeneratorMixin(Side.COMMON, require(TargetedMod.RTG), "rtg.LandscapeGeneratorMixin"),
|
||||
|
||||
@@ -35,6 +35,7 @@ public enum TargetedMod implements ITargetedMod {
|
||||
MFQM("More Fun Quicksand Mod", true, startsWith("morefunquicksandmod-")),
|
||||
NATURESCOMPASS("Nature's Compass", true, startsWith("naturescompass")),
|
||||
NETHERLICIOUS("Netherlicious", true, startsWith("netherlicious-")),
|
||||
RANDOMTHINGS("Random Things", true, startsWith("randomthings-")),
|
||||
RTG("Realistic Terrain Generation", true, startsWith("rtg-")),
|
||||
THAUMCRAFT("Thaumcraft", true, startsWith("thaumcraft")),
|
||||
TROPICRAFT("Tropicraft", true, startsWith("tropicraft-")),
|
||||
|
||||
Reference in new issue
Block a user