Skip to content

Commit

Permalink
Merge branch '1.15' into release-1.15
Browse files Browse the repository at this point in the history
  • Loading branch information
Buuz135 committed May 2, 2020
2 parents 62007c4 + 4e0d246 commit 2eada63
Show file tree
Hide file tree
Showing 59 changed files with 1,274 additions and 276 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ repositories {
}
}
dependencies {
minecraft 'net.minecraftforge:forge:1.15.2-31.0.14'
minecraft 'net.minecraftforge:forge:1.15.2-31.1.43'

compileOnly fg.deobf("mezz.jei:jei-1.15.2:6.0.0.2:api")
// at runtime, use the full JEI jar
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
# This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx3G
minecraftVersion=1.15.2
api_version=2.3.7
api_version=2.4.0
40 changes: 11 additions & 29 deletions src/main/java/com/hrznstudio/titanium/Titanium.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,21 @@
import com.hrznstudio.titanium._impl.test.TestBlock;
import com.hrznstudio.titanium._impl.test.TwentyFourTestBlock;
import com.hrznstudio.titanium._impl.test.recipe.TestSerializableRecipe;
import com.hrznstudio.titanium.block.tile.ActiveTile;
import com.hrznstudio.titanium.client.screen.container.BasicTileContainerScreen;
import com.hrznstudio.titanium.annotation.plugin.FeaturePlugin;
import com.hrznstudio.titanium.client.screen.container.BasicAddonScreen;
import com.hrznstudio.titanium.command.RewardCommand;
import com.hrznstudio.titanium.command.RewardGrantCommand;
import com.hrznstudio.titanium.container.impl.BasicTileContainer;
import com.hrznstudio.titanium.event.custom.ResourceRegistrationEvent;
import com.hrznstudio.titanium.container.BasicAddonContainer;
import com.hrznstudio.titanium.event.handler.EventManager;
import com.hrznstudio.titanium.material.ResourceRegistry;
import com.hrznstudio.titanium.material.ResourceType;
import com.hrznstudio.titanium.material.ResourceTypeProperties;
import com.hrznstudio.titanium.module.Feature;
import com.hrznstudio.titanium.module.Module;
import com.hrznstudio.titanium.module.ModuleController;
import com.hrznstudio.titanium.network.NetworkHandler;
import com.hrznstudio.titanium.network.locator.LocatorTypes;
import com.hrznstudio.titanium.network.messages.ButtonClickNetworkMessage;
import com.hrznstudio.titanium.plugin.PluginManager;
import com.hrznstudio.titanium.recipe.condition.ContentExistsConditionSerializer;
import com.hrznstudio.titanium.recipe.generator.BlockItemModelGeneratorProvider;
import com.hrznstudio.titanium.recipe.generator.titanium.DefaultLootTableProvider;
import com.hrznstudio.titanium.recipe.generator.titanium.JsonRecipeSerializerProvider;
Expand All @@ -40,11 +39,8 @@
import com.hrznstudio.titanium.reward.storage.RewardWorldStorage;
import com.hrznstudio.titanium.util.SidedHandler;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.client.gui.ScreenManager;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.container.ContainerType;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.IRecipeSerializer;
Expand All @@ -57,6 +53,7 @@
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.DrawHighlightEvent;
import net.minecraftforge.common.crafting.CraftingHelper;
import net.minecraftforge.common.extensions.IForgeContainerType;
import net.minecraftforge.event.entity.player.EntityItemPickupEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
Expand All @@ -68,7 +65,6 @@
import net.minecraftforge.fml.event.lifecycle.GatherDataEvent;
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
import net.minecraftforge.fml.network.NetworkDirection;
import net.minecraftforge.fml.network.NetworkHooks;
import net.minecraftforge.items.ItemHandlerHelper;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand All @@ -82,6 +78,8 @@ public class Titanium extends ModuleController {
public static final String MODID = "titanium";
public static final Logger LOGGER = LogManager.getLogger(MODID);
public static NetworkHandler NETWORK = new NetworkHandler(MODID);
public static final PluginManager RESOURCES = new PluginManager(MODID, FeaturePlugin.FeaturePluginType.FEATURE, featurePlugin -> featurePlugin.value().equalsIgnoreCase(ResourceRegistry.PLUGIN_NAME), false);
;

public Titanium() {
NETWORK.registerMessage(ButtonClickNetworkMessage.class);
Expand All @@ -90,28 +88,12 @@ public Titanium() {
EventManager.mod(FMLCommonSetupEvent.class).process(this::commonSetup).subscribe();
EventManager.forge(PlayerEvent.PlayerLoggedInEvent.class).process(this::onPlayerLoggedIn).subscribe();
EventManager.forge(FMLServerStartingEvent.class).process(this::onServerStart).subscribe();
}

public static void openGui(ActiveTile tile, ServerPlayerEntity player) {
NetworkHooks.openGui(player, tile, tile.getPos());
CraftingHelper.register(new ContentExistsConditionSerializer());
}

@Override
public void onPreInit() {
super.onPreInit();
EventManager.mod(ResourceRegistrationEvent.class).process(event -> {
ResourceTypeProperties.DEFAULTS.put(Block.class, new ResourceTypeProperties(Block.Properties.from(Blocks.IRON_ORE)));
ResourceTypeProperties.DEFAULTS.put(Item.class, new ResourceTypeProperties(new Item.Properties().group(ResourceRegistry.RESOURCES)));
event.get("iron").setColor(0xd8d8d8).withOverride(ResourceType.ORE, Blocks.IRON_ORE).withOverride(ResourceType.METAL_BLOCK, Blocks.IRON_BLOCK).withOverride(ResourceType.INGOT, Items.IRON_INGOT).withOverride(ResourceType.NUGGET, Items.IRON_NUGGET);
event.get("gold").setColor(0xfad64a).withOverride(ResourceType.ORE, Blocks.GOLD_ORE).withOverride(ResourceType.METAL_BLOCK, Blocks.GOLD_BLOCK).withOverride(ResourceType.INGOT, Items.GOLD_INGOT).withOverride(ResourceType.NUGGET, Items.GOLD_NUGGET);
event.get("coal").setColor(0x363636).withOverride(ResourceType.ORE, Blocks.COAL_ORE).withOverride(ResourceType.GEM_BLOCK, Blocks.COAL_BLOCK).withOverride(ResourceType.GEM, Items.COAL);
event.get("lapis_lazuli").setColor(0x345ec3).withOverride(ResourceType.ORE, Blocks.LAPIS_ORE).withOverride(ResourceType.GEM_BLOCK, Blocks.LAPIS_BLOCK).withOverride(ResourceType.GEM, Items.LAPIS_LAZULI);
event.get("diamond").setColor(0x4aedd9).withOverride(ResourceType.ORE, Blocks.DIAMOND_ORE).withOverride(ResourceType.GEM_BLOCK, Blocks.DIAMOND_BLOCK).withOverride(ResourceType.GEM, Items.DIAMOND);
event.get("redstone").setColor(0xaa0f01).withOverride(ResourceType.ORE, Blocks.REDSTONE_ORE).withOverride(ResourceType.GEM_BLOCK, Blocks.REDSTONE_BLOCK).withOverride(ResourceType.DUST, Items.REDSTONE);
event.get("emerald").setColor(0x17dd62).withOverride(ResourceType.ORE, Blocks.EMERALD_ORE).withOverride(ResourceType.GEM_BLOCK, Blocks.EMERALD_BLOCK).withOverride(ResourceType.GEM, Items.EMERALD);
event.get("nether_quartz").setColor(0xddd4c6).withOverride(ResourceType.NETHER_ORE, Blocks.NETHER_QUARTZ_ORE).withOverride(ResourceType.GEM_BLOCK, Blocks.QUARTZ_BLOCK).withOverride(ResourceType.GEM, Items.QUARTZ);
event.get("glowstone").setColor(0xffbc5e).withOverride(ResourceType.GEM_BLOCK, Blocks.GLOWSTONE).withOverride(ResourceType.DUST, Items.GLOWSTONE_DUST);
}).subscribe();
}

@Override
Expand All @@ -124,7 +106,7 @@ public void onInit() {
protected void initModules() {
addModule(Module.builder("core").force()
.feature(Feature.builder("core").force()
.content(ContainerType.class, (ContainerType) IForgeContainerType.create(BasicTileContainer::new).setRegistryName(new ResourceLocation(Titanium.MODID, "tile_container")))
.content(ContainerType.class, (ContainerType) IForgeContainerType.create(BasicAddonContainer::create).setRegistryName(new ResourceLocation(Titanium.MODID, "addon_container")))
.content(IRecipeSerializer.class, (IRecipeSerializer)new ShapelessEnchantSerializer().setRegistryName(new ResourceLocation(Titanium.MODID, "shapeless_enchant")))
)
);
Expand Down Expand Up @@ -194,7 +176,7 @@ private void clientSetup(FMLClientSetupEvent event) {
EventManager.forge(DrawHighlightEvent.HighlightBlock.class).process(TitaniumClient::blockOverlayEvent).subscribe();
TitaniumClient.registerModelLoader();
RewardManager.get().getRewards().values().forEach(rewardGiver -> rewardGiver.getRewards().forEach(reward -> reward.register(Dist.CLIENT)));
ScreenManager.registerFactory(BasicTileContainer.TYPE, BasicTileContainerScreen::new);
ScreenManager.registerFactory(BasicAddonContainer.TYPE, BasicAddonScreen::new);
}

private void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;

import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;

public class TwentyFourTestTile extends PoweredTile<TwentyFourTestTile> implements ITickableTileEntity {
Expand Down Expand Up @@ -68,6 +69,7 @@ public void tick() {
}

@Override
@Nonnull
public TwentyFourTestTile getSelf() {
return this;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* This file is part of Titanium
* Copyright (C) 2020, Horizon Studio <[email protected]>.
*
* This code is licensed under GNU Lesser General Public License v3.0, the full license text can be found in LICENSE.txt
*/

package com.hrznstudio.titanium.annotation.plugin;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface FeaturePlugin {

String value();

FeaturePluginType type();

enum FeaturePluginType {
MOD,
FEATURE
}

}
58 changes: 47 additions & 11 deletions src/main/java/com/hrznstudio/titanium/block/tile/ActiveTile.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,14 @@

package com.hrznstudio.titanium.block.tile;

import com.hrznstudio.titanium.Titanium;
import com.hrznstudio.titanium.api.IFactory;
import com.hrznstudio.titanium.api.client.IScreenAddon;
import com.hrznstudio.titanium.api.client.IScreenAddonProvider;
import com.hrznstudio.titanium.api.filter.IFilter;
import com.hrznstudio.titanium.block.BasicTileBlock;
import com.hrznstudio.titanium.block.RotatableBlock;
import com.hrznstudio.titanium.client.screen.asset.IAssetProvider;
import com.hrznstudio.titanium.component.IComponentHarness;
import com.hrznstudio.titanium.client.screen.asset.IHasAssetProvider;
import com.hrznstudio.titanium.component.button.ButtonComponent;
import com.hrznstudio.titanium.component.button.MultiButtonComponent;
import com.hrznstudio.titanium.component.filter.MultiFilterComponent;
Expand All @@ -26,8 +25,13 @@
import com.hrznstudio.titanium.component.progress.MultiProgressBarHandler;
import com.hrznstudio.titanium.component.progress.ProgressBarComponent;
import com.hrznstudio.titanium.component.sideness.IFacingComponent;
import com.hrznstudio.titanium.container.impl.BasicTileContainer;
import com.hrznstudio.titanium.component.sideness.IFacingComponentHarness;
import com.hrznstudio.titanium.container.BasicAddonContainer;
import com.hrznstudio.titanium.container.addon.IContainerAddon;
import com.hrznstudio.titanium.container.addon.IContainerAddonProvider;
import com.hrznstudio.titanium.network.IButtonHandler;
import com.hrznstudio.titanium.network.locator.LocatorFactory;
import com.hrznstudio.titanium.network.locator.instance.TileEntityLocatorInstance;
import com.hrznstudio.titanium.util.FacingUtil;
import net.minecraft.block.Block;
import net.minecraft.entity.player.PlayerEntity;
Expand All @@ -41,6 +45,7 @@
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.IWorldPosCallable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.Style;
Expand All @@ -51,6 +56,7 @@
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.FluidUtil;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.fml.network.NetworkHooks;
import net.minecraftforge.items.CapabilityItemHandler;

import javax.annotation.Nonnull;
Expand All @@ -59,8 +65,9 @@
import java.util.ArrayList;
import java.util.List;

public abstract class ActiveTile<T extends ActiveTile<T>> extends BasicTile<T> implements IScreenAddonProvider, ITickableTileEntity, INamedContainerProvider,
IButtonHandler, IComponentHarness {
public abstract class ActiveTile<T extends ActiveTile<T>> extends BasicTile<T> implements IScreenAddonProvider,
ITickableTileEntity, INamedContainerProvider, IButtonHandler, IFacingComponentHarness, IContainerAddonProvider,
IHasAssetProvider {

private MultiInventoryComponent<T> multiInventoryComponent;
private MultiProgressBarHandler<T> multiProgressBarHandler;
Expand All @@ -70,9 +77,12 @@ public abstract class ActiveTile<T extends ActiveTile<T>> extends BasicTile<T> i

private List<IFactory<? extends IScreenAddon>> guiAddons;

private List<IFactory<? extends IContainerAddon>> containerAddons;

public ActiveTile(BasicTileBlock<T> base) {
super(base);
this.guiAddons = new ArrayList<>();
this.containerAddons = new ArrayList<>();
}

@Override
Expand All @@ -91,14 +101,16 @@ public void onNeighborChanged(Block blockIn, BlockPos fromPos) {

public void openGui(PlayerEntity player) {
if (player instanceof ServerPlayerEntity) {
Titanium.openGui(this, (ServerPlayerEntity) player);
NetworkHooks.openGui((ServerPlayerEntity) player, this, buffer ->
LocatorFactory.writePacketBuffer(buffer, new TileEntityLocatorInstance(this.pos)));
}
}

@Nullable
@Override
public Container createMenu(int menu, PlayerInventory inventoryPlayer, PlayerEntity entityPlayer) {
return new BasicTileContainer(this, inventoryPlayer, menu);
return new BasicAddonContainer(this, new TileEntityLocatorInstance(this.pos), this.getWorldPosCallable(),
inventoryPlayer, menu);
}

@Override
Expand Down Expand Up @@ -134,7 +146,7 @@ public void addButton(ButtonComponent button) {
multiButtonComponent.addButton(button);
}

public void addFilter(IFilter filter) {
public void addFilter(IFilter<?> filter) {
if (multiFilterComponent == null) {
multiFilterComponent = new MultiFilterComponent();
}
Expand Down Expand Up @@ -165,6 +177,11 @@ public void addGuiAddonFactory(IFactory<? extends IScreenAddon> factory) {
this.guiAddons.add(factory);
}

public void addContainerAddonFactory(IFactory<? extends IContainerAddon> factory) {
this.containerAddons.add(factory);
}


@Override
public List<IFactory<? extends IScreenAddon>> getScreenAddons() {
List<IFactory<? extends IScreenAddon>> addons = new ArrayList<>(guiAddons);
Expand All @@ -176,6 +193,16 @@ public List<IFactory<? extends IScreenAddon>> getScreenAddons() {
return addons;
}

@Override
public List<IFactory<? extends IContainerAddon>> getContainerAddons() {
List<IFactory<? extends IContainerAddon>> addons = new ArrayList<>(containerAddons);
if (multiInventoryComponent != null) addons.addAll(multiInventoryComponent.getContainerAddons());
if (multiProgressBarHandler != null) addons.addAll(multiProgressBarHandler.getContainerAddons());
if (multiTankComponent != null) addons.addAll(multiTankComponent.getContainerAddons());
return addons;
}

@Override
public IAssetProvider getAssetProvider() {
return IAssetProvider.DEFAULT_PROVIDER;
}
Expand Down Expand Up @@ -221,6 +248,7 @@ public Direction getFacingDirection() {
return this.world.getBlockState(pos).has(RotatableBlock.FACING_ALL) ? this.world.getBlockState(pos).get(RotatableBlock.FACING_ALL) : (this.world.getBlockState(pos).has(RotatableBlock.FACING_HORIZONTAL) ? this.world.getBlockState(pos).get(RotatableBlock.FACING_HORIZONTAL) : Direction.NORTH);
}

@Override
public IFacingComponent getHandlerFromName(String string) {
if (multiInventoryComponent != null) {
for (InventoryComponent<T> handler : multiInventoryComponent.getInventoryHandlers()) {
Expand All @@ -242,7 +270,7 @@ public void handleButtonMessage(int id, PlayerEntity playerEntity, CompoundNBT c
if (id == -2) {
String name = compound.getString("Name");
if (multiFilterComponent != null) {
for (IFilter filter : multiFilterComponent.getFilters()) {
for (IFilter<?> filter : multiFilterComponent.getFilters()) {
if (filter.getName().equals(name)) {
int slot = compound.getInt("Slot");
filter.setFilter(slot, ItemStack.read(compound.getCompound("Filter")));
Expand Down Expand Up @@ -280,7 +308,15 @@ public void markComponentDirty() {
}

@Override
public void markComponentForUpdate() {
super.markForUpdate();
public void markComponentForUpdate(boolean referenced) {
if (!referenced) {
super.markForUpdate();
} else {
this.markComponentDirty();
}
}

public IWorldPosCallable getWorldPosCallable() {
return this.getWorld() != null ? IWorldPosCallable.of(this.getWorld(), this.getPos()) : IWorldPosCallable.DUMMY;
}
}
Loading

0 comments on commit 2eada63

Please sign in to comment.