-
-
Save Ryan-Kirkpatrick/9e02953ce1d611c952a5fc3caf77a9cf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package crashdive; | |
import org.spongepowered.api.plugin.Plugin; | |
import org.spongepowered.api.event.Listener; | |
import org.spongepowered.api.event.filter.cause.First; | |
import org.spongepowered.api.event.game.state.GameStartedServerEvent; | |
import org.spongepowered.api.Sponge; | |
import org.spongepowered.api.text.Text; | |
import org.spongepowered.api.data.key.Keys; | |
import org.spongepowered.api.data.type.DyeColors; | |
import org.spongepowered.api.data.type.HandTypes; | |
import org.spongepowered.api.entity.living.player.Player; | |
import org.spongepowered.api.event.item.inventory.ClickInventoryEvent; | |
import org.spongepowered.api.event.item.inventory.InteractItemEvent; | |
import org.spongepowered.api.item.ItemTypes; | |
import org.spongepowered.api.item.inventory.Inventory; | |
import org.spongepowered.api.item.inventory.InventoryArchetypes; | |
import org.spongepowered.api.item.inventory.ItemStack; | |
import org.spongepowered.api.item.inventory.Slot; | |
import org.spongepowered.api.item.inventory.property.InventoryTitle; | |
import org.spongepowered.api.item.inventory.property.SlotPos; | |
import org.spongepowered.api.item.inventory.transaction.SlotTransaction; | |
import com.google.inject.Inject; | |
import java.util.Optional; | |
import org.slf4j.Logger; | |
@Plugin(id = "crashdive_recipe_plan_fix", name = "Recipe Plan Fix", version = "0.1.0", description = "Bypasses the need for a project bench to program a recipe plan") | |
public class RecipePlanFixPlugin { | |
@Inject | |
private Logger logger; | |
@Listener | |
public void onServerStart(GameStartedServerEvent event) { | |
logger.info("[RecipePlanFix] Started!"); | |
} | |
public void callback(ClickInventoryEvent event) { | |
Sponge.getServer().getBroadcastChannel().send(Text.of("======[ Slot values ]======")); | |
Optional<Slot> slot = event.getSlot(); | |
String msgString; | |
if (!slot.isPresent()) { | |
msgString = "No slot value"; | |
} else { | |
Optional<SlotPos> pos = slot.get().getInventoryProperty(SlotPos.class); | |
if (!pos.isPresent()) { | |
msgString = "[event.getSlot()] No position value was given"; | |
} else { | |
msgString = "[event.getSlot()] Slot position (x, y): (" + String.valueOf(pos.get().getX()) + ", " + String.valueOf(pos.get().getY()) + ")"; | |
} | |
} | |
Sponge.getServer().getBroadcastChannel().send(Text.of(msgString)); | |
} | |
@Listener | |
public void onRightClick(InteractItemEvent event, @First Player player) { | |
// Obtain item | |
Optional<ItemStack> item = player.getItemInHand(HandTypes.MAIN_HAND); | |
if (!item.isPresent()) { | |
return; | |
} | |
String id = item.get().getType().getId(); | |
if (!id.equals("projectred-expansion:plan")) { | |
return; | |
} | |
// Create an inventory | |
Inventory craftingMenu = Inventory.builder() | |
.of(InventoryArchetypes.DOUBLE_CHEST) | |
.property(InventoryTitle.PROPERTY_NAME, InventoryTitle.of(Text.of("Configure Recipe Plan"))) | |
.withCarrier(player) | |
.listener(ClickInventoryEvent.class, this::callback) | |
.build(this); | |
player.openInventory(craftingMenu); | |
// Fill chest with black glass panes | |
Iterable<Slot> slots = craftingMenu.slots(); | |
for (Slot slot : slots) { | |
ItemStack stackToInsert = ItemStack.of(ItemTypes.STAINED_GLASS_PANE, 1); | |
stackToInsert.offer(Keys.DYE_COLOR, DyeColors.BLACK); | |
stackToInsert.offer(Keys.DISPLAY_NAME, Text.of("")); | |
slot.set(stackToInsert); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment